GaloisInc / HaLVM

The Haskell Lightweight Virtual Machine (HaLVM): GHC running on Xen
BSD 3-Clause "New" or "Revised" License
1.05k stars 88 forks source link

Post platform cleanup #115

Open dmjio opened 7 years ago

dmjio commented 7 years ago

It would probably be best to clean out some of the utilities that were left over from the post-HaLVM platform changes when upgrading to GHC 8.x. This way HaLVM will more closely resemble a regular GHC.

On a stock GHC, the following is installed to /lib/*/bin and /bin:

/bin

builder@6816a77f17db:/ubuntu16.04$ ls -l /nix/store/dz4vpj27nza9jv96b1jdpxjghscwzgps-ghc-8.0.2/bin/
total 76
lrwxrwxrwx 1 builder builder     9 Jan  1  1970 ghc -> ghc-8.0.2
-r-xr-xr-x 1 builder builder   594 Jan  1  1970 ghc-8.0.2
lrwxrwxrwx 1 builder builder    13 Jan  1  1970 ghc-pkg -> ghc-pkg-8.0.2
-r-xr-xr-x 1 builder builder   626 Jan  1  1970 ghc-pkg-8.0.2
lrwxrwxrwx 1 builder builder    10 Jan  1  1970 ghci -> ghci-8.0.2
-r-xr-xr-x 1 builder builder   307 Jan  1  1970 ghci-8.0.2
lrwxrwxrwx 1 builder builder    17 Jan  1  1970 haddock -> haddock-ghc-8.0.2
-r-xr-xr-x 1 builder builder   585 Jan  1  1970 haddock-ghc-8.0.2
-r-xr-xr-x 1 builder builder 48120 Jan  1  1970 hp2ps
-r-xr-xr-x 1 builder builder   556 Jan  1  1970 hpc
-r-xr-xr-x 1 builder builder  1335 Jan  1  1970 hsc2hs
lrwxrwxrwx 1 builder builder    12 Jan  1  1970 runghc -> runghc-8.0.2
-r-xr-xr-x 1 builder builder   602 Jan  1  1970 runghc-8.0.2
lrwxrwxrwx 1 builder builder     6 Jan  1  1970 runhaskell -> runghc

/lib/*/bin

builder@6816a77f17db:/ubuntu16.04$ ls -l /nix/store/dz4vpj27nza9jv96b1jdpxjghscwzgps-ghc-8.0.2/lib/ghc-8.0.2/bin
total 20856
-r-xr-xr-x 1 builder builder 2341496 Jan  1  1970 ghc
-r-xr-xr-x 1 builder builder 4498112 Jan  1  1970 ghc-iserv
-r-xr-xr-x 1 builder builder   73872 Jan  1  1970 ghc-iserv-dyn
-r-xr-xr-x 1 builder builder 7795904 Jan  1  1970 ghc-iserv-prof
-r-xr-xr-x 1 builder builder  537856 Jan  1  1970 ghc-pkg
-r-xr-xr-x 1 builder builder   13570 Jan  1  1970 ghc-split
-r-xr-xr-x 1 builder builder 4643920 Jan  1  1970 haddock
-r-xr-xr-x 1 builder builder  743400 Jan  1  1970 hpc
-r-xr-xr-x 1 builder builder  611208 Jan  1  1970 hsc2hs
-r-xr-xr-x 1 builder builder   54816 Jan  1  1970 runghc
-r-xr-xr-x 1 builder builder   13736 Jan  1  1970 unlit

On HaLVM-2.4.0, /bin and /lib/*/bin contain:

/bin

[nix-shell:/ubuntu16.04]$ ls -l /nix/store/wc5har9fpf9milka49z10gdh4v99cjr8-HaLVM-2.4.0/bin/
total 96
-r-xr-xr-x 1 builder builder  8408 Jan  1  1970 convert-profile
-r-xr-xr-x 1 builder builder  1083 Jan  1  1970 halvm-cabal
-r-xr-xr-x 1 builder builder   647 Jan  1  1970 halvm-config
-r-xr-xr-x 1 builder builder   685 Jan  1  1970 halvm-ghc
-r-xr-xr-x 1 builder builder   638 Jan  1  1970 halvm-ghc-pkg
-r-xr-xr-x 1 builder builder  8584 Jan  1  1970 mkrenddir
lrwxrwxrwx 1 builder builder    30 Jan  1  1970 x86_64-unknown-HaLVM-ghc -> x86_64-unknown-HaLVM-ghc-8.0.2
-r-xr-xr-x 1 builder builder   504 Jan  1  1970 x86_64-unknown-HaLVM-ghc-8.0.2
lrwxrwxrwx 1 builder builder    34 Jan  1  1970 x86_64-unknown-HaLVM-ghc-pkg -> x86_64-unknown-HaLVM-ghc-pkg-8.0.2
-r-xr-xr-x 1 builder builder   536 Jan  1  1970 x86_64-unknown-HaLVM-ghc-pkg-8.0.2
-r-xr-xr-x 1 builder builder 48648 Jan  1  1970 x86_64-unknown-HaLVM-hp2ps

/lib/*/bin

[nix-shell:/ubuntu16.04]$ ls -l /nix/store/wc5har9fpf9milka49z10gdh4v99cjr8-HaLVM-2.4.0/lib/*/bin
total 89620
-r-xr-xr-x 1 builder builder   375336 Jan  1  1970 HsColour
-r-xr-xr-x 1 builder builder   570992 Jan  1  1970 alex
-r-xr-xr-x 1 builder builder  5637680 Jan  1  1970 cabal
-r-xr-xr-x 1 builder builder 72975304 Jan  1  1970 ghc
-r-xr-xr-x 1 builder builder  6072240 Jan  1  1970 ghc-pkg
-r-xr-xr-x 1 builder builder    13570 Jan  1  1970 ghc-split
-r-xr-xr-x 1 builder builder  4639560 Jan  1  1970 haddock.bin
-r-xr-xr-x 1 builder builder   838648 Jan  1  1970 happy
-r-xr-xr-x 1 builder builder      316 Jan  1  1970 hsc2hs
-r-xr-xr-x 1 builder builder   610224 Jan  1  1970 hsc2hs.bin
-r-xr-xr-x 1 builder builder    13472 Jan  1  1970 unlit

I'd say we should make the following changes to HaLVM-2.4.x:

There are sometimes problems with statically linking glibc, maybe a musl based GHC could be used to statically link some of the h* utilities. Static linking could give us greater portability.