edwinb / Idris2-boot

A dependently typed programming language, a successor to Idris
https://idris-lang.org/
Other
902 stars 58 forks source link

link error building idris2.ipkg #300

Closed alrunner4 closed 4 years ago

alrunner4 commented 4 years ago

make idris2 is failing for me at idris --build idris2.ipkg with a linker error. I recently rebuilt idris1 from source (it broke on nix sometime recently). Idris1 does successfully build other simple executables.

I'm building 884d4ad.

~/src/idris2$ idris --version
idris: /nix/store/zayl6yjayksyha5ndhxm6lmhr51i8sj6-ncurses-6.1-20190112/lib/libtinfo.so.6: no version information available (required by idris)
1.3.2-git:0417c53fb
~/src/idris2$ idris --build idris2.ipkg
idris: /nix/store/zayl6yjayksyha5ndhxm6lmhr51i8sj6-ncurses-6.1-20190112/lib/libtinfo.so.6: no version information available (required by idris)
Entering directory `./src'
/tmp/idris20894-0.c: In function '_idris_Idris_46_ProcessIdr_46_do_95_getFileModifiedTime':
/tmp/idris20894-0.c:90202:14: warning: implicit declaration of function 'fileModifiedTime32'; did you mean 'fileModifiedTime'? [-Wimplicit-function-declaration]
90202 |     LOC(3) = fileModifiedTime32(GETPTR(LOC(2)),GETPTR(LOC(0)));
      |              ^~~~~~~~~~~~~~~~~~
      |              fileModifiedTime
/tmp/idris20894-0.c:90202:12: warning: assignment to 'VAL' {aka 'struct Val *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
90202 |     LOC(3) = fileModifiedTime32(GETPTR(LOC(2)),GETPTR(LOC(0)));
      |            ^
/tmp/idris20894-0.c: In function '_idris_Main_46_yprefix':
/tmp/idris20894-0.c:288296:22: warning: implicit declaration of function 'getIdris2_prefix' [-Wimplicit-function-declaration]
288296 |     RVAL = MKSTR(vm, getIdris2_prefix());
       |                      ^~~~~~~~~~~~~~~~
/tmp/idris20894-0.c:288296:22: warning: passing argument 2 of 'MKSTR' makes pointer from integer without a cast [-Wint-conversion]
288296 |     RVAL = MKSTR(vm, getIdris2_prefix());
       |                      ^~~~~~~~~~~~~~~~~~
       |                      |
       |                      int
In file included from /home/alex/.cabal/share/x86_64-linux-ghc-8.4.4/idris-1.3.2/rts/idris_buffer.h:7,
                 from /tmp/idris20894-0.c:3:
/home/alex/.cabal/share/x86_64-linux-ghc-8.4.4/idris-1.3.2/rts/idris_rts.h:310:31: note: expected 'const char *' but argument is of type 'int'
  310 | VAL MKSTR(VM* vm, const char* str);
      |                   ~~~~~~~~~~~~^~~
/nix/store/marrhghbi0l9l525gks1b0bwbpyh438a-binutils-2.31.1/bin/ld: /tmp/cc3HR8HM.o: in function `_idris_Compiler_46_Common_46_tmpName':
/tmp/idris20894-0.c:255414: warning: the use of `tmpnam' is dangerous, better use `mkstemp'
/nix/store/marrhghbi0l9l525gks1b0bwbpyh438a-binutils-2.31.1/bin/ld: /tmp/cc3HR8HM.o: in function `_idris_Idris_46_ProcessIdr_46_do_95_getFileModifiedTime':
/tmp/idris20894-0.c:90202: undefined reference to `fileModifiedTime32'
/nix/store/marrhghbi0l9l525gks1b0bwbpyh438a-binutils-2.31.1/bin/ld: /tmp/cc3HR8HM.o: in function `_idris_Main_46_yprefix':
/tmp/idris20894-0.c:288296: undefined reference to `getIdris2_prefix'
collect2: error: ld returned 1 exit status
FAILURE: "cc" ["-fwrapv","-fno-strict-overflow","-std=c99","-pipe","-fdata-sections","-ffunction-sections","-D_POSIX_C_SOURCE=200809L","-DHAS_PTHREAD","-DIDRIS_ENABLE_STATS","-I.","-Wl,-gc-sections","/tmp/idris20894-0.c","-L/home/alex/.cabal/share/x86_64-linux-ghc-8.4.4/idris-1.3.2/rts","-lidris_rts","-lpthread","-I/home/alex/.cabal/share/x86_64-linux-ghc-8.4.4/idris-1.3.2/rts","-lm","-I.","-I../prelude","-I.","-I/home/alex/.cabal/share/x86_64-linux-ghc-8.4.4/idris-1.3.2/libs/prelude","-I/home/alex/.cabal/share/x86_64-linux-ghc-8.4.4/idris-1.3.2/libs/base","-O2","-g","-o","/home/alex/src/idris2/idris2"]
Leaving directory `./src'
alrunner4 commented 4 years ago

D'oh. My bad. I missed the -S in the ipkg from prior days when I'd replaced opts = "--cg-opt -O2 --partial-eval.