-
-
Save AlainODea/98141991849093285c52 to your computer and use it in GitHub Desktop.
/* DO NOT EDIT: This file is automatically generated by Cabal */ | |
/* package rts-1.0 */ | |
#define VERSION_rts "1.0" | |
#define MIN_VERSION_rts(major1,major2,minor) (\ | |
(major1) < 1 || \ | |
(major1) == 1 && (major2) < 0 || \ | |
(major1) == 1 && (major2) == 0 && (minor) <= 0) | |
/* package ghc-prim-0.4.0.0 */ | |
#define VERSION_ghc_prim "0.4.0.0" | |
#define MIN_VERSION_ghc_prim(major1,major2,minor) (\ | |
(major1) < 0 || \ | |
(major1) == 0 && (major2) < 4 || \ | |
(major1) == 0 && (major2) == 4 && (minor) <= 0) | |
/* package integer-gmp-1.0.0.0 */ | |
#define VERSION_integer_gmp "1.0.0.0" | |
#define MIN_VERSION_integer_gmp(major1,major2,minor) (\ | |
(major1) < 1 || \ | |
(major1) == 1 && (major2) < 0 || \ | |
(major1) == 1 && (major2) == 0 && (minor) <= 0) | |
/* tool cpphs-1.19.3 */ | |
#define TOOL_VERSION_cpphs "1.19.3" | |
#define MIN_TOOL_VERSION_cpphs(major1,major2,minor) (\ | |
(major1) < 1 || \ | |
(major1) == 1 && (major2) < 19 || \ | |
(major1) == 1 && (major2) == 19 && (minor) <= 3) | |
/* tool gcc-4.8 */ | |
#define TOOL_VERSION_gcc "4.8" | |
#define MIN_TOOL_VERSION_gcc(major1,major2,minor) (\ | |
(major1) < 4 || \ | |
(major1) == 4 && (major2) < 8 || \ | |
(major1) == 4 && (major2) == 8 && (minor) <= 0) | |
/* tool ghc-7.10.3 */ | |
#define TOOL_VERSION_ghc "7.10.3" | |
#define MIN_TOOL_VERSION_ghc(major1,major2,minor) (\ | |
(major1) < 7 || \ | |
(major1) == 7 && (major2) < 10 || \ | |
(major1) == 7 && (major2) == 10 && (minor) <= 3) | |
/* tool ghc-pkg-7.10.3 */ | |
#define TOOL_VERSION_ghc_pkg "7.10.3" | |
#define MIN_TOOL_VERSION_ghc_pkg(major1,major2,minor) (\ | |
(major1) < 7 || \ | |
(major1) == 7 && (major2) < 10 || \ | |
(major1) == 7 && (major2) == 10 && (minor) <= 3) | |
/* tool haddock-2.14.3 */ | |
#define TOOL_VERSION_haddock "2.14.3" | |
#define MIN_TOOL_VERSION_haddock(major1,major2,minor) (\ | |
(major1) < 2 || \ | |
(major1) == 2 && (major2) < 14 || \ | |
(major1) == 2 && (major2) == 14 && (minor) <= 3) | |
/* tool hpc-0.67 */ | |
#define TOOL_VERSION_hpc "0.67" | |
#define MIN_TOOL_VERSION_hpc(major1,major2,minor) (\ | |
(major1) < 0 || \ | |
(major1) == 0 && (major2) < 67 || \ | |
(major1) == 0 && (major2) == 67 && (minor) <= 0) | |
/* tool hsc2hs-0.67 */ | |
#define TOOL_VERSION_hsc2hs "0.67" | |
#define MIN_TOOL_VERSION_hsc2hs(major1,major2,minor) (\ | |
(major1) < 0 || \ | |
(major1) == 0 && (major2) < 67 || \ | |
(major1) == 0 && (major2) == 67 && (minor) <= 0) | |
/* tool pkg-config-0.26 */ | |
#define TOOL_VERSION_pkg_config "0.26" | |
#define MIN_TOOL_VERSION_pkg_config(major1,major2,minor) (\ | |
(major1) < 0 || \ | |
(major1) == 0 && (major2) < 26 || \ | |
(major1) == 0 && (major2) == 26 && (minor) <= 0) | |
/* tool strip-2.24 */ | |
#define TOOL_VERSION_strip "2.24" | |
#define MIN_TOOL_VERSION_strip(major1,major2,minor) (\ | |
(major1) < 2 || \ | |
(major1) == 2 && (major2) < 24 || \ | |
(major1) == 2 && (major2) == 24 && (minor) <= 0) | |
#define CURRENT_PACKAGE_KEY "base_HQfYBxpPvuw8OunzQu6JGM" | |
Unexpected results from: | |
TEST="print020 process010 posix005 T2464 T9878 T9878b T9032 T7145b recomp011 T7354 processGroup002 T2276_ghci T5321FD T5030 T4801 T6048 T5631 T5837 T5642 T9020 T3064 parsing001 T1969 T9675 T5321Fun T783 T3294 T9961" | |
OVERALL SUMMARY for test run started at Wed Dec 30 19:16:15 2015 UTC | |
0:12:19 spent to go through | |
4491 total tests, which gave rise to | |
14487 test cases, of which | |
10351 were skipped | |
55 had missing libraries | |
3989 expected passes | |
64 expected failures | |
6 caused framework failures | |
0 unexpected passes | |
12 unexpected failures | |
16 unexpected stat failures | |
Unexpected failures: | |
../../libraries/process/tests process010 [bad stdout] (normal) | |
../../libraries/unix/tests processGroup002 [bad exit code] (normal) | |
../../libraries/unix/tests/libposix posix005 [bad stdout] (normal) | |
driver T2464 [stderr mismatch] (normal) | |
driver/recomp011 recomp011 [bad stdout] (normal) | |
ffi/should_run T2276_ghci [bad exit code] (ghci) | |
ghci.debugger/scripts print020 [bad stdout] (ghci) | |
ghci/scripts T9878 [bad stderr] (ghci) | |
ghci/scripts T9878b [bad stderr] (ghci) | |
indexed-types/should_fail T7354 [stderr mismatch] (normal) | |
rename/should_compile T7145b [stderr mismatch] (normal) | |
rename/should_fail T9032 [bad stderr] (normal) | |
Unexpected stat failures: | |
perf/compiler T1969 [stat not good enough] (normal) | |
perf/compiler T3064 [stat not good enough] (normal) | |
perf/compiler T3294 [stat not good enough] (normal) | |
perf/compiler T4801 [stat not good enough] (normal) | |
perf/compiler T5030 [stat not good enough] (normal) | |
perf/compiler T5321FD [stat not good enough] (normal) | |
perf/compiler T5321Fun [stat not good enough] (normal) | |
perf/compiler T5631 [stat not good enough] (normal) | |
perf/compiler T5642 [stat not good enough] (normal) | |
perf/compiler T5837 [stat not good enough] (normal) | |
perf/compiler T6048 [stat not good enough] (optasm) | |
perf/compiler T783 [stat not good enough] (normal) | |
perf/compiler T9020 [stat not good enough] (optasm) | |
perf/compiler T9675 [stat not good enough] (optasm) | |
perf/compiler T9961 [stat not good enough] (normal) | |
perf/compiler parsing001 [stat not good enough] (normal) |
processGroup002 is another failure:
=====> processGroup002(normal) 4484 of 4491 [0, 0, 6]
cd ../../libraries/unix/tests && "/home/ghcbld/ghc-7.10.3/inplace/bin/ghc-stage2" -o processGroup002 processGroup002.hs -fforce-recomp -dcore-lint -dcmm-lint -dno-debug-output -no-user-package-db -rtsopts -fno-warn-tabs -fno-ghci-history -package unix > processGroup002.comp.stderr 2>&1
cd ../../libraries/unix/tests && ./processGroup002 </dev/null > processGroup002.run.stdout 2> processGroup002.run.stderr
Wrong exit code (expected 0 , actual 1 )
Stdout:
Testing joinProcessGroup:
Stderr:
processGroup002: joinProcessGroup: permission denied (Not owner)
This fails identically on Karel's Solaris 11 builder so it seems to be a common issue with process permissions on Illumos and Solaris.
cpphs compiles with GHC 7.10.3 installed on SmartOS.
T7145b.hs:
{-# LANGUAGE CPP #-}
module T7145b ( A.Applicative(pure) ) where
import qualified Control.Applicative as A
pure :: ()
pure = ()
Run cpphs on it with the --cpp switch so it knows to emulate/ignore gcc CLI args:
tempdir=$(mktemp --tmpdir --directory ghcXXXXX_0)
tempfile="$tempdir/ghc_1.hscpp"
touch $tempfile
cpphs --cpp -E -undef -traditional '-D__GLASGOW_HASKELL__=709' '-Dsolaris2_BUILD_OS=1' '-Di386_BUILD_ARCH=1' '-Dsolaris2_HOST_OS=1' '-Di386_HOST_ARCH=1' -x assembler-with-cpp T7145b.hs -o $tempfile
$tempfile now contains:
#line 1 "T7145b.hs"
{-# LANGUAGE CPP #-}
module T7145b ( A.Applicative(pure) ) where
import qualified Control.Applicative as A
pure :: ()
pure = ()
In a nicely circular manner I can now use cpphs as the hs-cpp when building GHC.
cp ~/.cabal/bin/cpphs /opt/local/bin/cpphs
cd ~/ghc-7.10.3/
./configure --with-hs-cpp=/opt/local/bin/cpphs --with-hs-cpp-flags="--cpp"
In a similar manner GCC could be hacked into mostly working as follows (assuming overridecpp.spec is present as I've previously described):
./configure --with-hs-cpp=/opt/local/bin/gcc --with-hs-cpp-flags="-specs=overridecpp.spec"
Triggering a make now with the cpphs configuration. I'll run another one tomorrow with the GCC workaround.
Build with cpphs fails in final phase with this error:
cpphs: macro MIN_VERSION_integer_gmp expected 3 arguments, but was given 0
libraries/base/ghc.mk:4: recipe for target 'libraries/base/dist-install/build/.depend-v-p-dyn.haskell' failed
make[1]: *** [libraries/base/dist-install/build/.depend-v-p-dyn.haskell] Error 1
Makefile:71: recipe for target 'all' failed
make: *** [all] Error 2
MIN_VERSION_integer_gmp is used in at least three files in the GHC source:
- https://github.com/ghc/ghc/blob/380b25ea4754c2aea683538ffdb179f8946219a0/libraries/base/Data/Bits.hs#L60
- https://github.com/ghc/ghc/blob/380b25ea4754c2aea683538ffdb179f8946219a0/libraries/base/GHC/Natural.hs#L49-L50
- https://github.com/ghc/ghc/blob/380b25ea4754c2aea683538ffdb179f8946219a0/libraries/base/GHC/Real.hs#L31
- https://github.com/ghc/ghc/blob/380b25ea4754c2aea683538ffdb179f8946219a0/libraries/base/GHC/Real.hs#L638
I cannot reproduce the cpphs error with Bits.hs:
cpphs --cpp -E -undef -traditional '-D__GLASGOW_HASKELL__=709' '-Dsolaris2_BUILD_OS=1' '-Di386_BUILD_ARCH=1' '-Dsolaris2_HOST_OS=1' '-Di386_HOST_ARCH=1' -x assembler-with-cpp libraries/base/Data/Bits.hs -o $tempfile -Iincludes
Using pargs.d to debug I get this:
7 9131 exec_common:exec-success 6964669646: /opt/local/bin/cpphs --cpp -DOPTIMISE_INTEGER_GCD_LCM -include libraries/base/d
argv[0]: /opt/local/bin/cpphs
argv[1]: --cpp
argv[2]: -DOPTIMISE_INTEGER_GCD_LCM
argv[3]: -include
argv[4]: libraries/base/dist-install/build/autogen/cabal_macros.h
argv[5]: -I
argv[6]: libraries/base/dist-install/build
argv[7]: -I
argv[8]: libraries/base/dist-install/build
argv[9]: -I
argv[10]: libraries/base/dist-install/build/autogen
argv[11]: -I
argv[12]: libraries/base/include
argv[13]: -I
argv[14]: /root/ghc-7.10.3/libraries/integer-gmp2/include
argv[15]: -I
argv[16]: /root/ghc-7.10.3/rts/dist/build
argv[17]: -I
argv[18]: /root/ghc-7.10.3/includes
argv[19]: -I
argv[20]: /root/ghc-7.10.3/includes/dist-derivedconstants/header
argv[21]: -D__GLASGOW_HASKELL__=710
argv[22]: -include
argv[23]: /root/ghc-7.10.3/includes/ghcversion.h
argv[24]: -Dsolaris2_BUILD_OS=1
argv[25]: -Di386_BUILD_ARCH=1
argv[26]: -Dsolaris2_HOST_OS=1
argv[27]: -Di386_HOST_ARCH=1
argv[28]: -D__GLASGOW_HASKELL_TH__=NO
argv[29]: -x
argv[30]: assembler-with-cpp
argv[31]: libraries/base/GHC/Natural.hs
argv[32]: -o
argv[33]: /tmp/ghc69539_0/ghc_37.hscpp
cpphs: macro MIN_VERSION_integer_gmp expected 3 arguments, but was given 0
libraries/base/ghc.mk:4: recipe for target 'libraries/base/dist-install/build/.depend-v-p-dyn.haskell' failed
make[1]: *** [libraries/base/dist-install/build/.depend-v-p-dyn.haskell] Error 1
Makefile:71: recipe for target 'all' failed
make: *** [all] Error 2
dtrace: pid 69206 has exited
GHC 7.10.3's build fails when cpphs is the configured hs-cpp. It runs into an error when preprocessing libraries/base/GHC/Natural.hs.
Prep on either SmartOS or Ubuntu:
tar xf ghc-7.10.3-src.tar.bz2
cd ghc-7.10.3/
./configure --with-hs-cpp=$(which cpphs) --with-hs-cpp-flags="--cpp"
make -j8
On SmartOS:
tempdir=$(mktemp --tmpdir --directory ghcXXXXX_0)
tempfile="$tempdir/ghc_1.hscpp"
touch $tempfile
/opt/local/bin/cpphs --cpp -DOPTIMISE_INTEGER_GCD_LCM -include libraries/base/dist-install/build/autogen/cabal_macros.h -I libraries/base/dist-install/build -I libraries/base/dist-install/build -I libraries/base/dist-install/build/autogen -I libraries/base/include -I /root/ghc-7.10.3/libraries/integer-gmp2/include -I /root/ghc-7.10.3/rts/dist/build -I /root/ghc-7.10.3/includes -I /root/ghc-7.10.3/includes/dist-derivedconstants/header -D__GLASGOW_HASKELL__=710 -include /root/ghc-7.10.3/includes/ghcversion.h -Dsolaris2_BUILD_OS=1 -Di386_BUILD_ARCH=1 -Dsolaris2_HOST_OS=1 -Di386_HOST_ARCH=1 -D__GLASGOW_HASKELL_TH__=NO -x assembler-with-cpp libraries/base/GHC/Natural.hs -o $tempfile
On Ubuntu:
tempdir=$(mktemp --tmpdir --directory ghcXXXXX_0)
tempfile="$tempdir/ghc_1.hscpp"
touch $tempfile
~/.cabal/bin/cpphs --cpp -DOPTIMISE_INTEGER_GCD_LCM -include libraries/base/dist-install/build/autogen/cabal_macros.h -I libraries/base/dist-install/build -I libraries/base/dist-install/build -I libraries/base/dist-install/build/autogen -I libraries/base/include -I /home/alain_odea/Documents/haskell/ghc-7.10.3/libraries/integer-gmp2/include -I /home/alain_odea/Documents/haskell/ghc-7.10.3/rts/dist/build -I /home/alain_odea/Documents/haskell/ghc-7.10.3/includes -I /home/alain_odea/Documents/haskell/ghc-7.10.3/includes/dist-derivedconstants/header -D__GLASGOW_HASKELL__=710 -include /home/alain_odea/Documents/haskell/ghc-7.10.3/includes/ghcversion.h -Dlinux_BUILD_OS=1 -Di386_BUILD_ARCH=1 -Dlinux_HOST_OS=1 -Di386_HOST_ARCH=1 -D__GLASGOW_HASKELL_TH__=NO -x assembler-with-cpp libraries/base/GHC/Natural.hs -o $tempfile
Both result in this error:
cpphs: macro MIN_VERSION_integer_gmp expected 3 arguments, but was given 0
In either case removing "-include libraries/base/dist-install/build/autogen/cabal_macros.h" from the cpphs arguments makes the error go away.
cabal-macros.h is now in this gist. Using cpphs on it alone has no error messages.
cpphs --cpp libraries/base/dist-install/build/autogen/cabal_macros.h
outofmem passes when run individually.
First pass at using specs failed:
--with-hs-cpp-flag="-specs=/opt/local/etc/ghc/overridecpp.spec"
It doesn't configure the C preprocessor properly and cannot compile GHC 7.10.3 successfully.
Using --with-hs-cpp-flags appears to remove the other arguments GHC needs for GCC's preprocessor so I'm trying this:
--with-hs-cpp-flag="-specs=/opt/local/etc/ghc/overridecpp.spec -E -undef -traditional -x assembler-with-cpp"
Using this as overridecpp.spec:
*cpp:
%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}
Configuring GHC with modified hs-cpp-flags works to fix the tests:
./configure --with-hs-cpp-flags="-specs=/opt/local/etc/ghc/overridecpp.spec -E -undef -traditional -x assembler-with-cpp"
overridecpp.spec:
*cpp:
%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}
The challenge now is how to integrate this extra file and new default hs-cpp-flags cleanly into the GHC build and install. I'll spin that by the ghc-devs mailing list.
posix005 is another failure:
This test is asserting the order of environment variables is the order in which they are declared. I'll need to check the standard to see if that is a legit expectation or just a lucky coincidence.
The failure output is identical on Karel's Solaris 11 builder.