# dev-libs/libgcrypt-1.6.0 breaks ntfs3g

## hadrons123

I am running ~amd64 and today's update of the system asked me to do a emerge @preserved-rebuild. When I did that system wanted to rebuild ntfs3g and not able to compile this ntfs3g package anymore.

I think today's update had dev-libs/libgcrypt-1.6.0 which broke this.

Anyone else having this?

```

 * ERROR: sys-fs/ntfs3g-2013.1.13::gentoo failed (compile phase):

 *   emake failed

 * 

 * If you need support, post the output of `emerge --info '=sys-fs/ntfs3g-2013.1.13::gentoo'`,

 * the complete build log and the output of `emerge -pqv '=sys-fs/ntfs3g-2013.1.13::gentoo'`.

 * The complete build log is located at '/tmp/portage/sys-fs/ntfs3g-2013.1.13/temp/build.log'.

 * The ebuild environment file is located at '/tmp/portage/sys-fs/ntfs3g-2013.1.13/temp/environment'.

 * Working directory: '/tmp/portage/sys-fs/ntfs3g-2013.1.13/work/ntfs-3g_ntfsprogs-2013.1.13'

 * S: '/tmp/portage/sys-fs/ntfs3g-2013.1.13/work/ntfs-3g_ntfsprogs-2013.1.13'

 * GNU info directory index is up-to-date.

!!! existing preserved libs:

>>> package: dev-libs/libgcrypt-1.6.0

 *  - /usr/lib64/libgcrypt.so.11

 *  - /usr/lib64/libgcrypt.so.11.8.2

 *      used by /opt/google/chrome/chrome (www-client/google-chrome-31.0.1650.63_p1)

 *      used by /usr/bin/ntfsdecrypt (sys-fs/ntfs3g-2013.1.13)

Use emerge @preserved-rebuild to rebuild packages using these libraries

```

I have filed a bug report too.

https://bugs.gentoo.org/show_bug.cgi?id=494494.

----------

## Irre

Recompiling ntfs3g gives me the same error:

```
emerge -v1 sys-fs/ntfs3g

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild   R    ] sys-fs/ntfs3g-2013.1.13  USE="acl crypt external-fuse ntfsprogs -debug -static-libs -suid -xattr" 0 kB

Total: 1 package (1 reinstall), Size of downloads: 0 kB

>>> Verifying ebuild manifests

>>> Running pre-merge checks for sys-fs/ntfs3g-2013.1.13

>>> Emerging (1 of 1) sys-fs/ntfs3g-2013.1.13

>>> Failed to emerge sys-fs/ntfs3g-2013.1.13, Log file:

>>>  '/var/tmp/portage/sys-fs/ntfs3g-2013.1.13/temp/build.log'

>>> Jobs: 0 of 1 complete, 1 failed                 Load avg: 1.13, 1.69, 1.34

 * Package:    sys-fs/ntfs3g-2013.1.13

 * Repository: gentoo

 * Maintainer: chutzpah@gentoo.org ssuominen@gentoo.org,base-system@gentoo.org

 * USE:        acl amd64 crypt elibc_glibc external-fuse kernel_linux ntfsprogs userland_GNU

 * FEATURES:   preserve-libs sandbox userpriv usersandbox

 * Determining the location of the kernel source code

 * Found kernel source directory:

 *     /usr/src/linux

 * Found sources for kernel version:

 *     3.12.5-gentoo

 * Checking for suitable kernel configuration options...

...

...

x86_64-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I..  -I../include/ntfs-3g    -O1 -pipe -Wall -c ntfsmove.c

x86_64-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I..  -I../include/ntfs-3g    -O1 -pipe -Wall -c ntfsmftalloc.c

x86_64-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I..  -I../include/ntfs-3g    -O1 -pipe -Wall -c ntfsck.c

x86_64-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I..  -I../include/ntfs-3g     -O1 -pipe -Wall -c -o ntfsdecrypt-ntfsdecrypt.o `test -f 'ntfsdecrypt.c' || echo './'`ntfsdecrypt.c

x86_64-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I..  -I../include/ntfs-3g     -O1 -pipe -Wall -c -o ntfsdecrypt-utils.o `test -f 'utils.c' || echo './'`utils.c

x86_64-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I..  -I../include/ntfs-3g     -O1 -pipe -Wall -c -o mkntfs-attrdef.o `test -f 'attrdef.c' || echo './'`attrdef.c

ntfsdecrypt.c:116:1: error: unknown type name 'gcry_module_t'

 static gcry_module_t ntfs_desx_module;

 ^

x86_64-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I..  -I../include/ntfs-3g     -O1 -pipe -Wall -c -o mkntfs-boot.o `test -f 'boot.c' || echo './'`boot.c

x86_64-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I..  -I../include/ntfs-3g     -O1 -pipe -Wall -c -o mkntfs-sd.o `test -f 'sd.c' || echo './'`sd.c

ntfsdecrypt.c: In function 'ntfs_crypto_deinit':

ntfsdecrypt.c:397:3: warning: implicit declaration of function 'gcry_cipher_unregister' [-Wimplicit-function-declaration]

   gcry_cipher_unregister(ntfs_desx_module);

   ^

ntfsdecrypt.c:398:20: warning: assignment makes integer from pointer without a cast [enabled by default]

   ntfs_desx_module = NULL;

                    ^

x86_64-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I..  -I../include/ntfs-3g     -O1 -pipe -Wall -c -o mkntfs-mkntfs.o `test -f 'mkntfs.c' || echo './'`mkntfs.c

ntfsdecrypt.c: At top level:

ntfsdecrypt.c:935:1: error: unknown type name 'gcry_cipher_spec_t'

 static gcry_cipher_spec_t ntfs_desx_cipher = {

 ^

ntfsdecrypt.c:936:2: error: field name not in record or union initializer

  .name = "DES-X-MS128",

  ^

ntfsdecrypt.c:936:2: error: (near initialization for 'ntfs_desx_cipher')

ntfsdecrypt.c:936:2: warning: initialization makes integer from pointer without a cast [enabled by default]

ntfsdecrypt.c:936:2: warning: (near initialization for 'ntfs_desx_cipher') [enabled by default]

ntfsdecrypt.c:936:2: error: initializer element is not computable at load time

ntfsdecrypt.c:936:2: error: (near initialization for 'ntfs_desx_cipher')

ntfsdecrypt.c:937:2: error: field name not in record or union initializer

  .blocksize = 8,

  ^

ntfsdecrypt.c:937:2: error: (near initialization for 'ntfs_desx_cipher')

ntfsdecrypt.c:937:2: warning: excess elements in scalar initializer [enabled by default]

ntfsdecrypt.c:937:2: warning: (near initialization for 'ntfs_desx_cipher') [enabled by default]

ntfsdecrypt.c:938:2: error: field name not in record or union initializer

  .keylen = 128,

  ^

ntfsdecrypt.c:938:2: error: (near initialization for 'ntfs_desx_cipher')

ntfsdecrypt.c:938:2: warning: excess elements in scalar initializer [enabled by default]

ntfsdecrypt.c:938:2: warning: (near initialization for 'ntfs_desx_cipher') [enabled by default]

ntfsdecrypt.c:939:2: error: field name not in record or union initializer

  .contextsize = sizeof(ntfs_desx_ctx),

  ^

ntfsdecrypt.c:939:2: error: (near initialization for 'ntfs_desx_cipher')

ntfsdecrypt.c:939:2: warning: excess elements in scalar initializer [enabled by default]

ntfsdecrypt.c:939:2: warning: (near initialization for 'ntfs_desx_cipher') [enabled by default]

ntfsdecrypt.c:940:2: error: field name not in record or union initializer

  .setkey = ntfs_desx_setkey,

  ^

ntfsdecrypt.c:940:2: error: (near initialization for 'ntfs_desx_cipher')

ntfsdecrypt.c:940:2: warning: excess elements in scalar initializer [enabled by default]

ntfsdecrypt.c:940:2: warning: (near initialization for 'ntfs_desx_cipher') [enabled by default]

ntfsdecrypt.c:941:2: error: field name not in record or union initializer

  .decrypt = ntfs_desx_decrypt,

  ^

ntfsdecrypt.c:941:2: error: (near initialization for 'ntfs_desx_cipher')

ntfsdecrypt.c:941:2: warning: excess elements in scalar initializer [enabled by default]

ntfsdecrypt.c:941:2: warning: (near initialization for 'ntfs_desx_cipher') [enabled by default]

ntfsdecrypt.c: In function 'ntfs_fek_import_from_raw':

ntfsdecrypt.c:1099:4: warning: implicit declaration of function 'gcry_cipher_register' [-Wimplicit-function-declaration]

    err = gcry_cipher_register(&ntfs_desx_cipher,

    ^

Makefile:801: recipe for target 'ntfsdecrypt-ntfsdecrypt.o' failed

make[2]: *** [ntfsdecrypt-ntfsdecrypt.o] Error 1

make[2]: *** Waiting for unfinished jobs....

make[2]: Leaving directory '/var/tmp/portage/sys-fs/ntfs3g-2013.1.13/work/ntfs-3g_ntfsprogs-2013.1.13/ntfsprogs'

Makefile:335: recipe for target 'all-recursive' failed

make[1]: *** [all-recursive] Error 1

make[1]: Leaving directory '/var/tmp/portage/sys-fs/ntfs3g-2013.1.13/work/ntfs-3g_ntfsprogs-2013.1.13'

Makefile:248: recipe for target 'all' failed

make: *** [all] Error 2

```

Something to do with "crypt" use flag

(USE="-crypt" emerge -v1 sys-fs/ntfs3g

gives no error messages)

----------

## hadrons123

I have been following this bug and I already did that. But chrome doesn't start with lib missing since its a binary and its built against old libgcrypt and it doesn't help for chrome with emerge @preserved-rebuild as it acutally doesn't do a rebuild, its just re-installation of a binary. So I had to downgrade libgcrypt and mask the new libgcrypt version until a new chrome arrives.

----------

