ldc-developers / ldc2.snap

Snap package definition for LDC, the LLVM-based D compiler
11 stars 4 forks source link

Update to LDC 1.12.0 stable release and LLVM 7.0.1 #74

Closed WebDrake closed 5 years ago

WebDrake commented 5 years ago

https://github.com/ldc-developers/ldc/releases/tag/v1.12.0 https://github.com/ldc-developers/ldc/releases/tag/v1.12.0

kinke commented 5 years ago

You'll need to get rid of the previously required D_FLAGS override, as BUILD_LTO_LIBS=ON takes care of that since v1.12, see https://github.com/ldc-developers/ldc/commit/587e547586c09669c172cf63f6085cfd422de5cc.

kinke commented 5 years ago

The remaining test failures are due to the ltsmaster host compiler not supporting LLVM 7 at 100% (new default DWARF version and a floating-point regression in LLVM 7 requiring -mattr=+ssse3...); the ltsmaster 0.17.6 build we use for Travis was built against LLVM 6.0.1, that's why we haven't seen these with our CI.

WebDrake commented 5 years ago

Ah, OK, thanks -- is that likely to be fixed, or should I take a different approach to the bootstrap compiler?

kinke commented 5 years ago

I'd say it's extemely unlikely to be fixed, and that a different approach is desirable anyway - e.g., ltsmaster doesn't support LLVM 8 (upcoming v1.15). I think you should go for downloading the official prebuilt package of the appropriate version, use it to build a first intermediate compiler (replacing the currently used ltsmaster), and then use that one for the final build + tests. That's more or less how the official prebuilt packages are built (their first host compiler is the previous version).

WebDrake commented 5 years ago

Makes sense. Time to see if the build-snaps functionality works OK, then ;-)

WebDrake commented 5 years ago

I've opened a separate PR to switch out how the bootstrap compiler works: https://github.com/ldc-developers/ldc2.snap/pull/75. Assuming that goes OK I'll rebase this on top when done.

Thanks very much for looking into the problems and for the helpful hints and squash patches :-)

WebDrake commented 5 years ago

Reworked on top of the recent ldc-bootstrap changes, and incorporated the DFLAGS tweak from @kinke.

WebDrake commented 5 years ago

That's a weird build failure, especially as it worked in a local build:

[107/182] Generating bin/ldc2.o
FAILED: cd /home/vsts/work/1/s/parts/ldc-bootstrap/src && /usr/bin/ldmd2 -c -wi -O -inline -release -J/home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd -J/home/vsts/work/1/s/parts/ldc-bootstrap/src/res -I/home/vsts/work/1/s/parts/ldc-bootstrap/src -I/home/vsts/work/1/s/parts/ldc-bootstrap/build -version=IN_LLVM -I/home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd -of/home/vsts/work/1/s/parts/ldc-bootstrap/build/bin/ldc2.o /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/access.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/aggregate.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/aliasthis.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/apply.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/argtypes.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/arrayop.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/arraytypes.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/astcodegen.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/attrib.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/blockexit.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/builtin.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/canthrow.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/clone.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/compiler.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/complex.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/cond.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/console.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/constfold.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/cppmangle.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/cppmanglewin.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/ctfeexpr.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/ctorflow.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/dcast.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/dclass.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/declaration.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/delegatize.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/denum.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/dimport.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/dinterpret.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/dmacro.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/dmangle.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/dmodule.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/doc.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/dscope.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/dstruct.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/dsymbol.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/dsymbolsem.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/dtemplate.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/dversion.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/entity.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/errors.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/escape.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/expression.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/expressionsem.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/func.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/globals.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/gluelayer.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/hdrgen.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/hooks.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/id.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/identifier.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/impcnvtab.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/imphint.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/init.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/initsem.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/inline.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/inlinecost.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/intrange.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/json.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/lambdacomp.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/ldcbindings.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/lexer.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/mars.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/mtype.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/nogc.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/nspace.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/objc.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/opover.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/optimize.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/parse.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/parsetimevisitor.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/permissivevisitor.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/printast.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/root/aav.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/root/array.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/root/ctfloat.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/root/file.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/root/filename.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/root/hash.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/root/longdouble.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/root/outbuffer.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/root/port.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/root/rmem.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/root/rootobject.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/root/speller.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/root/stringtable.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/safe.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/sapply.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/semantic2.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/semantic3.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/sideeffect.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/statement.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/statement_rewrite_walker.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/statementsem.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/staticassert.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/staticcond.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/target.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/templateparamsem.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/tokens.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/traits.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/transitivevisitor.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/typesem.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/typinf.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/utf.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/utils.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/visitor.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/gen/dpragma.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/gen/ldctraits.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/gen/llvmhelpers.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/gen/logger.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/gen/semantic.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/driver/cache_pruning.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/driver/config.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/driver/configfile.d /home/vsts/work/1/s/parts/ldc-bootstrap/src/driver/main.d
/home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/root/outbuffer.d(310): Error: 'core.stdc.stdarg.va_copy' is not nothrow
/home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/root/outbuffer.d(321): Error: 'core.stdc.stdarg.va_end' is not nothrow
/home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/root/outbuffer.d(291): Error: function 'dmd.root.outbuffer.OutBuffer.vprintf' is nothrow yet may throw
/home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/root/outbuffer.d(340): Error: 'core.stdc.stdarg.va_start!(const(char)*).va_start' is not nothrow
/home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/root/outbuffer.d(342): Error: 'core.stdc.stdarg.va_end' is not nothrow
/home/vsts/work/1/s/parts/ldc-bootstrap/src/dmd/root/outbuffer.d(337): Error: function 'dmd.root.outbuffer.OutBuffer.printf' is nothrow yet may throw
ninja: build stopped: subcommand failed.
Failed to run 'override-build': Exit code was 1.
WebDrake commented 5 years ago

I'll re-verify that this works locally. Maybe the 16.04 deb-packaged LDC is slightly too out of date to build LDC successfully (although that would be strange).

kinke commented 5 years ago

It is indeed (v0.17.1), I remember having to slightly adapt ltsmaster to build more recent versions successfully (https://github.com/ldc-developers/ldc/pull/2821, only available since v0.17.6). :/

WebDrake commented 5 years ago

I've re-run the local build and indeed it fails in the same way. I think I must have been thinking of the builds of v1.11.0 (which does build successfully with the deb package).

I've updated the patch to switch to using build-snaps instead for the bootstrap of the bootstrap.