NixOS / nixpkgs

Nix Packages collection & NixOS
MIT License
18.08k stars 14.06k forks source link

libncurses.so.5 link disappeared from ncurses derivation after "staging" merge #7810

Closed peti closed 9 years ago

peti commented 9 years ago

The binary version of GHC 6.10.2 is broken in master. That compiler is used to bootstrap GHC 6.10.4 and 6.12.3, which means that those compilers (and their respective package sets) are now broken, too.

The error seems relatively harmless. The build succeeds, but the resulting GHC binary doesn't work. Citing from http://hydra.cryp.to/build/815012/log/raw:

/nix/store/ir0ip3jiivcwcg4zdzf6rj616f4pnpr7-ghc-6.10.2-binary/lib/ghc-6.10.2/ghc: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

peti commented 9 years ago

@wkennington, @ttuegel it appears this breakage was caused by your ncurses re-factoring. Prior to the staging merge, ncurses provided libncurses.so.5, but that path now appears to be gone, hence the broken ghc build.

ttuegel commented 9 years ago

@peti The ncurses refactoring is due to @wkennington. I had to bring back libncurses.so.5 so that older GHCs would at least build; I don't know why it is found at build time but not runtime.

vcunat commented 9 years ago

Hmm, I looked on ncurses, and it confused me that the links have such a strange date. I thought it impossible, as nix is supposed to normalize them AFAIK, but even after --check I get the same:

$ ls -l ./result/lib
total 1852
-r--r--r-- 35 root root     18 Jan  1  1970 libcurses.so
-r--r--r-- 35 root root     18 Jan  1  1970 libcursesw.so
lrwxrwxrwx 33 root root     10 May 15  2012 libform.a -> libformw.a
-r--r--r-- 33 root root     15 Jan  1  1970 libform.so
-r--r--r--  2 root root 135124 Jan  1  1970 libformw.a
lrwxrwxrwx 64 root root     13 May 15  2012 libformw.so -> libformw.so.5
lrwxrwxrwx 32 root root     15 May 15  2012 libformw.so.5 -> libformw.so.5.9
-r-xr-xr-x  2 root root  79968 Jan  1  1970 libformw.so.5.9
lrwxrwxrwx 33 root root     10 May 15  2012 libmenu.a -> libmenuw.a
-r--r--r-- 33 root root     15 Jan  1  1970 libmenu.so
-r--r--r--  2 root root  69062 Jan  1  1970 libmenuw.a
lrwxrwxrwx 64 root root     13 May 15  2012 libmenuw.so -> libmenuw.so.5
lrwxrwxrwx 32 root root     15 May 15  2012 libmenuw.so.5 -> libmenuw.so.5.9
-r-xr-xr-x  2 root root  38273 Jan  1  1970 libmenuw.so.5.9
lrwxrwxrwx 33 root root     13 May 15  2012 libncurses.a -> libncursesw.a
lrwxrwxrwx  2 root root     15 Jan  1  1970 libncurses++.a -> libncurses++w.a
-r--r--r-- 35 root root     18 Jan  1  1970 libncurses.so                                                                                        
-r--r--r--  2 root root 167678 Jan  1  1970 libncurses++w.a                                                                                      
-r--r--r--  2 root root 811852 Jan  1  1970 libncursesw.a                                                                                        
lrwxrwxrwx 64 root root     16 May 15  2012 libncursesw.so -> libncursesw.so.5                                                                   
lrwxrwxrwx 32 root root     18 May 15  2012 libncursesw.so.5 -> libncursesw.so.5.9                                                               
-r-xr-xr-x  2 root root 456146 Jan  1  1970 libncursesw.so.5.9                                                                                   
lrwxrwxrwx 33 root root     11 May 15  2012 libpanel.a -> libpanelw.a                                                                            
-r--r--r-- 33 root root     16 Jan  1  1970 libpanel.so                                                                                          
-r--r--r-- 10 root root  27426 Jan  1  1970 libpanelw.a                                                                                          
lrwxrwxrwx 64 root root     14 May 15  2012 libpanelw.so -> libpanelw.so.5                                                                       
lrwxrwxrwx 32 root root     16 May 15  2012 libpanelw.so.5 -> libpanelw.so.5.9                                                                   
-r-xr-xr-x  2 root root  14100 Jan  1  1970 libpanelw.so.5.9                                                                                     
dr-xr-xr-x  1 root root    186 Jan  1  1970 pkgconfig                                                                                            
lrwxrwxrwx 33 root root     17 May 15  2012 terminfo -> ../share/terminfo
Warbo commented 9 years ago

I've run into a similar looking issue with building GHC 7.4.2 to bootstrap 7.8.4 and 7.10.1:

$ git status
HEAD detached at f93a8ee
nothing to commit, working directory clean
$ nix-env -f . -i -A haskellngPackages.cabal2nix
replacing old ‘cabal2nix-1.73’
installing ‘cabal2nix-20150505’
these derivations will be built:
[...]
building path(s) ‘/nix/store/ygp6s44nxv4z7am2g8g52iwqkbgxj04h-ghc-7.4.2-binary’
unpacking sources
unpacking source archive /nix/store/4zj30pw1rzvqshnrcsl9dw1ahdxhlz0z-ghc-7.4.2-i386-unknown-linux.tar.bz2
source root is ghc-7.4.2
[....]
configuring
checking for path to top of build tree... /tmp/nix-build-ghc-7.4.2-binary.drv-0/ghc-7.4.2
ghc/stage2/build/tmp/ghc-stage2: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
Can't work out build platform
builder for ‘/nix/store/vawns4div0z5cq1w1wvch0jgw7zq40fj-ghc-7.4.2-binary.drv’ failed with exit code 1
cannot build derivation ‘/nix/store/vdgwwldb3a8fwv9bvmrc21cqqmb0zidl-ghc-7.8.4.drv’: 1 dependencies couldn't be built
cannot build derivation ‘/nix/store/68pkhyfymp5vrbysyzgrsbd621gxvqyw-ghc-7.10.1.drv’: 1 dependencies couldn't be built
cannot build derivation ‘/nix/store/xqy54j75y81nanr4fzb3blniafjl9mh4-cabal2nix-20150505.drv’: 1 dependencies couldn't be built
error: build of ‘/nix/store/xqy54j75y81nanr4fzb3blniafjl9mh4-cabal2nix-20150505.drv’ failed
peti commented 9 years ago

@wkennington, ping?

Warbo commented 9 years ago

FYI I get the same error installing with nix-env and nixos-rebuild from the unstable channel, and with the latest git commit ( 8a53e1a )

vcunat commented 9 years ago

@Warbo: it hasn't been solved yet on any branch AFAIK. Note that ncurses changes are a mass rebuild, I think, due some bogus build-time dependency chains, so it should go through staging.

wkennington commented 9 years ago

I took a look but I have no idea how this is broken yet.

On Wed, May 20, 2015, 09:34 Vladimír Čunát notifications@github.com wrote:

@Warbo https://github.com/Warbo: it hasn't been solved yet on any branch AFAIK.

— Reply to this email directly or view it on GitHub https://github.com/NixOS/nixpkgs/issues/7810#issuecomment-103951599.

Warbo commented 9 years ago

I ran git checkout 41b53577a8f2 -- pkgs/development/libraries/ncurses and both cabal2nix and cabal-install worked.

Prior to that, I also tried naively making libncurses.so.5 a symlink to libncurses.so at the end of the postInstall, but that gave a "file too short" error.

peti commented 9 years ago

IMHO, this error is rather serious. I would suggest reverting the ncurses refactoring until a fix has been found.

Edit: Sorry, I didn't mean to close this ticket.

edolstra commented 9 years ago

I assume the problem is that this line got dropped by ee78173b213059e6c885dc0c4d3bf4da7d3cb229:

        ln -svf lib''${lib}w.so.5 $out/lib/lib$lib.so.5

I'm also in favor of reverting ee78173b213059e6c885dc0c4d3bf4da7d3cb229, also because I don't really like the configureFlags handling style introduced in that commit.

wkennington commented 9 years ago

Should be fixed by 5a89a87cc575f0d8b9f6cc20e8203c18ac30a8c0

peti commented 9 years ago

@wkennington, thank you for fixing this issue!