dylan-lang / opendylan

Open Dylan compiler and IDE
http://opendylan.org/
Other
458 stars 69 forks source link

Build failure with Debian packaging. #1004

Open fmitha opened 9 years ago

fmitha commented 9 years ago

I created some very preliminary and basic Debian packaging for Open Dylan. This packaging can be found at https://bitbucket.org/faheem/opendylan-debian.

Unfortunately, the build using this Debian packaging crashed with what looks like a compiler error. See opendylan_2014.1-1_amd64.build. I was testing this on Debian jessie amd64.

Debian expects an upstream "orig" tarball to work with. I'm using the opendylan-2014.1-sources.tar.bz2 tarball here.

You should be able to reproduce the build by copying this repository as a subdirectory called "debian" of the top level source Open Dylan directory, and then typing "debuild -uc -us".

NOTE; The Debian packaging uses the same build commands that the Open Dylan project documents in the README, namely ./configure, make, and make install.

However, when I ran these commands by hand, I was able to successfully build the sources. (I don't think I ran make install, though.)

The only difference between a Debian build and a build by hand (that I am aware of) is that Debian adds some hardening compile-time flags. These are normally harmless. See https://wiki.debian.org/Hardening. I did not add anything myself; these were added automatically.

                                                         Regards, Faheem Mitha
waywardmonkeys commented 9 years ago

His failure from the build log happened while building the dylan tests as part of make check after a full 3 stage bootstrap:

Building dylan-test-suite... fdmake: build product /usr/local/src/opendylan/opendylan-2014.1/Bootstrap.3/lib/libdylan-test-suite.so missing
fdmake: compile failed (65280), see /usr/local/src/opendylan/opendylan-2014.1/Bootstrap.3/build/logs/compile-dylan-test-suite.txt

...

Makefile:464: recipe for target 'check' failed
make[1]: *** [check] Error 1
make[1]: Leaving directory '/usr/local/src/opendylan/opendylan-2014.1'
dh_auto_test: make -j1 check returned exit code 2
debian/rules:23: recipe for target 'build' failed
make: *** [build] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2

I'm not sure what is running make check.

waywardmonkeys commented 9 years ago

This actual error here is this:

Cc constants.o : constants.c
constants.c:550:22
: error: integer constant is larger than the largest unsigned integer type
  T0 = (dylan_value) 0xFFFFFFFFFFFFFFFF8000000000000001L;
                     ^

constants.c:551
:31: error: integer constant is larger than the largest unsigned integer type

  MV_SET_ELT(0, (dylan_value) 0xFFFFFFFFFFFFFFFF8000000000000001L);
                              ^

So it is the sign extension bug ... at least one form of it.

waywardmonkeys commented 9 years ago

@housel commented on IRC earlier:

faheem__: That looks like a bug in the C back-end output code; for $minimum-integer it's outputting 0xFFFFFFFFFFFFFFFF8000000000000001L (sign-extending too far)

fmitha commented 9 years ago

For the record, dh calls make check as part of the dh_auto_test target in rules, which is invoked by default. One can disable it either by passing a nocheck option via the command line, or by creating an override_dh_auto_test target and putting nothing under it.