HEADS UP: package compilation might get bumpy due to <crypt.h>'s removal on Oct 30, 2011

Sascha Wildner saw at online.de
Fri Nov 11 20:39:19 PST 2011


Dear user base,

the story so far:

Back in December 2010, we started installing <crypt.h> to /usr/include due  
to some misunderstanding on KDE's side regarding how to detect that KDE  
shall be linked to libcrypt (see  
https://bugs.kde.org/show_bug.cgi?id=247627 for the whole story). It  
turned out later that this was wrong (and it was also promptly fixed in  
KDE). On BSDs, crypt.h is an internal header for usage by libcrypt, but  
none that any consumer of it should need, since the relevant prototypes  
are all in <unistd.h>. I assume that crypt.h has other contents on (some)  
non-BSD systems.

As the presence of <crypt.h> in /usr/include caused other packages to  
crash (at least dircproxy was affected), I restored the old behavior  
recently (which is, don't install crypt.h) and removed it again via make  
upgrade.

Now the important catch:

It turns out that if certain packages were compiled/installed during the  
time window when crypt.h was on the system, (I know of perl and apr, but  
there might be more), they would keep this configuration (that crypt.h is  
present) in various ways. Perl, for example, will put an inclusion of  
crypt.h in its own headers (which get installed). apr will also carry this  
configuration to stuff that depends on it, for example www/apache22.

The consequence is that package compilation on systems that no longer have  
crypt.h might fail with errors complaining about not finding crypt.h if  
not all packages are recompiled. Like I said, it at least affects perl and  
apr, _so if some package depending on perl or apr fails for you with a  
"crypt.h not found" error, please recompile perl or apr_. It should  
compile again after doing that.

Sorry for the inconvenience, as I didn't know the configuration is rooted  
so deeply in some packages.

Best regards,
Sascha Wildner




More information about the Users mailing list