dlang / dub

Package and build management system for D
MIT License
677 stars 227 forks source link

Build fails with gdc 13.x #2577

Open ximion opened 1 year ago

ximion commented 1 year ago

System information

Bug Description

When trying to compile dub using GDC, the build fails while the previous 1.29 version built fine. Error message:

Command `["gdmd", "-of/tmp/dub/bin/dub", "-I/tmp/dub/source", "-version=DubUseCurl", "-version=DubApplication", "-g", "-O", "-w", "@build-files.txt"]` failed, output was:
Serializing composite type Flags!(BuildRequirement) which has no serializable fields
Serializing composite type Flags!(BuildOption) which has no serializable fields
source/dub/internal/dyaml/stdsumtype.d:2053:13: error: static assert:  "`handlers[0]` of type `template` never matches"
 2053 |             static assert(matches[].canFind(hid),
      |             ^
source/dub/internal/dyaml/stdsumtype.d:1717:52: note: instantiated from here: ‘matchImpl!(const(SumType!(NativePath, Version)))’
 1717 |         return matchImpl!(Yes.exhaustive, handlers)(args);
      |                                                    ^
source/dub/commandline.d:2319:43: note: instantiated from here: ‘match!(const(SumType!(NativePath, Version)))’
 2319 |                                 ovr.target.match!(
      |                                           ^

How to reproduce?

Try to build dub using gdc

Expected Behavior

Either the build succeeds as it did before, or dub emits a message that the compiler/version is unsupported for building dub.

WebFreak001 commented 1 year ago

https://github.com/dlang/dub/pull/2548 for WIP changes, but was needing a GDC update.

Your error message looks like the match there doesn't use const properly.

ibuclaw commented 1 year ago

Bad commit 8a25429f80cd7b6e1e34504b39f9219537fc5320

ximion commented 1 year ago

If there was a (even temporary) fix available soonish, we could still get dub 1.30 into the next Debian release. Otherwise this will need a freeze exception, and even though it's a low popularity package, it technically also is a toolchain package which means it's not guaranteed to get that exception (switching to LDC would mean loosing architecture support, which comes with its own administrative issues).

WebFreak001 commented 1 year ago

building master seems to work on my machine with gdc (GCC) 12.2.1 20230111

ximion commented 1 year ago

It fails here with the same error, using gdc (Debian 12.2.0-14) 12.2.0 - did the .1 patch release change anything maybe?

ibuclaw commented 1 year ago

building master seems to work on my machine with gdc (GCC) 12.2.1 20230111

You need to build with -Werror to see the message.

WebFreak001 commented 1 year ago

invocation:

gdc -o /home/webfreak/.dub/cache/dub/1.27.0+commit.469.g06347027/build/application-debug-linux.posix-x86_64-gdc_v12.2.1-BF7153F2B14FBD99D3D27B7E78C530C9EBE7EF34F2463B70B875A011BEDBF6BE/dub -fdebug -g -Werror -Wall -fversion=DubUseCurl -fversion=DubApplication -fversion=Have_dub -Isource/ source/app.d source/dub/commandline.d source/dub/compilers/buildsettings.d source/dub/compilers/compiler.d source/dub/compilers/dmd.d source/dub/compilers/gdc.d source/dub/compilers/ldc.d source/dub/compilers/utils.d source/dub/data/settings.d source/dub/dependency.d source/dub/dependencyresolver.d source/dub/description.d source/dub/dub.d source/dub/generators/build.d source/dub/generators/cmake.d source/dub/generators/generator.d source/dub/generators/sublimetext.d source/dub/generators/targetdescription.d source/dub/generators/visuald.d source/dub/init.d source/dub/internal/colorize/colors.d source/dub/internal/colorize/cwrite.d source/dub/internal/colorize/package.d source/dub/internal/colorize/winterm.d source/dub/internal/configy/Attributes.d source/dub/internal/configy/DubTest.d source/dub/internal/configy/Exceptions.d source/dub/internal/configy/FieldRef.d source/dub/internal/configy/Read.d source/dub/internal/configy/Test.d source/dub/internal/configy/Utils.d source/dub/internal/dyaml/composer.d source/dub/internal/dyaml/constructor.d source/dub/internal/dyaml/dumper.d source/dub/internal/dyaml/emitter.d source/dub/internal/dyaml/encoding.d source/dub/internal/dyaml/escapes.d source/dub/internal/dyaml/event.d source/dub/internal/dyaml/exception.d source/dub/internal/dyaml/linebreak.d source/dub/internal/dyaml/loader.d source/dub/internal/dyaml/node.d source/dub/internal/dyaml/package.d source/dub/internal/dyaml/parser.d source/dub/internal/dyaml/queue.d source/dub/internal/dyaml/reader.d source/dub/internal/dyaml/representer.d source/dub/internal/dyaml/resolver.d source/dub/internal/dyaml/scanner.d source/dub/internal/dyaml/serializer.d source/dub/internal/dyaml/stdsumtype.d source/dub/internal/dyaml/style.d source/dub/internal/dyaml/tagdirective.d source/dub/internal/dyaml/token.d source/dub/internal/git.d source/dub/internal/libInputVisitor.d source/dub/internal/logging.d source/dub/internal/sdlang/ast.d source/dub/internal/sdlang/exception.d source/dub/internal/sdlang/lexer.d source/dub/internal/sdlang/package.d source/dub/internal/sdlang/parser.d source/dub/internal/sdlang/symbol.d source/dub/internal/sdlang/token.d source/dub/internal/sdlang/util.d source/dub/internal/tinyendian.d source/dub/internal/undead/xml.d source/dub/internal/utils.d source/dub/internal/vibecompat/core/file.d source/dub/internal/vibecompat/data/json.d source/dub/internal/vibecompat/data/serialization.d source/dub/internal/vibecompat/data/utils.d source/dub/internal/vibecompat/inet/path.d source/dub/internal/vibecompat/inet/url.d source/dub/package_.d source/dub/packagemanager.d source/dub/packagesupplier.d source/dub/packagesuppliers/fallback.d source/dub/packagesuppliers/filesystem.d source/dub/packagesuppliers/maven.d source/dub/packagesuppliers/package.d source/dub/packagesuppliers/packagesupplier.d source/dub/packagesuppliers/registry.d source/dub/platform.d source/dub/project.d source/dub/recipe/io.d source/dub/recipe/json.d source/dub/recipe/packagerecipe.d source/dub/recipe/sdl.d source/dub/recipe/selection.d source/dub/semver.d source/dub/version_.d
ximion commented 1 year ago

building master seems to work on my machine with gdc (GCC) 12.2.1 20230111

You need to build with -Werror to see the message.

Indeed! Removing the -w compile flag "fixes" this error.

WebFreak001 commented 1 year ago

on alpine with GDC 12.2.1 the build seems to "work", but gets a linker error at the end:

https://github.com/dlang/dub/actions/runs/4068606217/jobs/7007362399

ximion commented 1 year ago

invocation:

gdc -o /home/webfreak/.dub/cache/dub/1.27.0+commit.469.g06347027/build/application-debug-linux.posix-x86_64-gdc_v12.2.1-BF7153F2B14FBD99D3D27B7E78C530C9EBE7EF34F2463B70B875A011BEDBF6BE/dub -fdebug -g -Werror -Wall -fversion=DubUseCurl -fversion=DubApplication -fversion=Have_dub -Isource/ source/app.d source/dub/commandline.d source/dub/compilers/buildsettings.d source/dub/compilers/compiler.d source/dub/compilers/dmd.d source/dub/compilers/gdc.d source/dub/compilers/ldc.d source/dub/compilers/utils.d source/dub/data/settings.d source/dub/dependency.d source/dub/dependencyresolver.d source/dub/description.d source/dub/dub.d source/dub/generators/build.d source/dub/generators/cmake.d source/dub/generators/generator.d source/dub/generators/sublimetext.d source/dub/generators/targetdescription.d source/dub/generators/visuald.d source/dub/init.d source/dub/internal/colorize/colors.d source/dub/internal/colorize/cwrite.d source/dub/internal/colorize/package.d source/dub/internal/colorize/winterm.d source/dub/internal/configy/Attributes.d source/dub/internal/configy/DubTest.d source/dub/internal/configy/Exceptions.d source/dub/internal/configy/FieldRef.d source/dub/internal/configy/Read.d source/dub/internal/configy/Test.d source/dub/internal/configy/Utils.d source/dub/internal/dyaml/composer.d source/dub/internal/dyaml/constructor.d source/dub/internal/dyaml/dumper.d source/dub/internal/dyaml/emitter.d source/dub/internal/dyaml/encoding.d source/dub/internal/dyaml/escapes.d source/dub/internal/dyaml/event.d source/dub/internal/dyaml/exception.d source/dub/internal/dyaml/linebreak.d source/dub/internal/dyaml/loader.d source/dub/internal/dyaml/node.d source/dub/internal/dyaml/package.d source/dub/internal/dyaml/parser.d source/dub/internal/dyaml/queue.d source/dub/internal/dyaml/reader.d source/dub/internal/dyaml/representer.d source/dub/internal/dyaml/resolver.d source/dub/internal/dyaml/scanner.d source/dub/internal/dyaml/serializer.d source/dub/internal/dyaml/stdsumtype.d source/dub/internal/dyaml/style.d source/dub/internal/dyaml/tagdirective.d source/dub/internal/dyaml/token.d source/dub/internal/git.d source/dub/internal/libInputVisitor.d source/dub/internal/logging.d source/dub/internal/sdlang/ast.d source/dub/internal/sdlang/exception.d source/dub/internal/sdlang/lexer.d source/dub/internal/sdlang/package.d source/dub/internal/sdlang/parser.d source/dub/internal/sdlang/symbol.d source/dub/internal/sdlang/token.d source/dub/internal/sdlang/util.d source/dub/internal/tinyendian.d source/dub/internal/undead/xml.d source/dub/internal/utils.d source/dub/internal/vibecompat/core/file.d source/dub/internal/vibecompat/data/json.d source/dub/internal/vibecompat/data/serialization.d source/dub/internal/vibecompat/data/utils.d source/dub/internal/vibecompat/inet/path.d source/dub/internal/vibecompat/inet/url.d source/dub/package_.d source/dub/packagemanager.d source/dub/packagesupplier.d source/dub/packagesuppliers/fallback.d source/dub/packagesuppliers/filesystem.d source/dub/packagesuppliers/maven.d source/dub/packagesuppliers/package.d source/dub/packagesuppliers/packagesupplier.d source/dub/packagesuppliers/registry.d source/dub/platform.d source/dub/project.d source/dub/recipe/io.d source/dub/recipe/json.d source/dub/recipe/packagerecipe.d source/dub/recipe/sdl.d source/dub/recipe/selection.d source/dub/semver.d source/dub/version_.d

Ah! I was building dub using the build.d script - after removing -w, it builds and links fine.

WebFreak001 commented 1 year ago

ah I got the invocation from dub build --compiler=gdc -v

ximion commented 1 year ago

Weird that linking fails on Alpine, but Alpine also is a quite different environment compared to traditional GNU/Linux... At Debian we prefer using the build.d script so we don't have a recursive dependency on the older version of dub and bootstrapping is easier (also, dub is a pain to use in packaging, but it's getting better! Which is why 1.30 would be neat to have in Debian 12)

ximion commented 1 year ago

@WebFreak001

on alpine with GDC 12.2.1 the build seems to "work", but gets a linker error at the end

Well, I have to correct myself saying that this works on Debian... Dub itself links fine, but dub compiling another program then fails:

make[1]: Entering directory '/srv/build/dub-1.30.0'
gdmd -run /srv/build/dub-1.30.0/build.d \
        -g -O -wi -release
Wrote version_.d` file with version: 1.30.0-1
Building dub using gdmd (dflags: ["-g", "-O", "-wi", "-release", "-frelease"]), this may take a while...
DUB has been built as: /srv/build/dub-1.30.0/bin/dub
You may want to run `sudo ln -s /srv/build/dub-1.30.0/bin/dub /usr/local/bin` now
# create manual pages
cd /srv/build/dub-1.30.0/bin/ && ./dub /srv/build/dub-1.30.0/scripts/man/gen_man.d
Serializing composite type Flags!(BuildRequirement) which has no serializable fields
Serializing composite type Flags!(BuildOption) which has no serializable fields
/usr/bin/ld: /tmp/ccmwKCWi.o: in function `_D3std6format8internal5write__T8getWidthTAyaZQoFNaNfQlZl':
gen_man.d:(.text+0x6d76): undefined reference to `_D3std9algorithm9searching__T3allSQBg6format8internal5write__T8getWidthTAyaZQoFQhZ9__lambda2Z__TQCpTQBcZQCxMFNaNfQBpZb'
/usr/bin/ld: /tmp/ccmwKCWi.o: in function `_D3std6format8internal5write__T8getWidthTAaZQnFNaNfQkZl':
gen_man.d:(.text+0x72ed): undefined reference to `_D3std9algorithm9searching__T3allSQBg6format8internal5write__T8getWidthTAaZQnFQgZ9__lambda2Z__TQCoTQBbZQCwMFNaNfQBoZb'
/usr/bin/ld: /tmp/ccmwKCWi.o: in function `_D3std6format8internal5write__T8getWidthTAwZQnFNaNbNiNfQoZl':
gen_man.d:(.text+0x74e0): undefined reference to `_D3std9algorithm9searching__T3allSQBg6format8internal5write__T8getWidthTAwZQnFQgZ9__lambda2Z__TQCoTQBbZQCwMFNaNbNiNfQBsZb'
/usr/bin/ld: /tmp/.dub/build/dub-~master/library-$DFLAGS-linux.posix-x86_64-gdc_v12.2.0-14391039E1E7EBE8123AD291C9AC30F7763605C96DA5F891D0EE281DA46E40CD/libdub.a: in function `_D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTeTaZQCaFNaNfKQBrxeMKxSQDvQDu4spec__T10FormatSpecTaZQpZv':
Attributes.d:(.text+0x9536c): undefined reference to `_D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTeTaZQCaFKQBnxeMKxSQDrQDq4spec__T10FormatSpecTaZQpZ__T9__lambda6TeZQnFNaNbNiNeKeZAxa'
collect2: error: ld returned 1 exit status
Error gdc failed with exit code 1.

Flags used:

LDFLAGS='-Wl,-z,relro'
DFLAGS='-frelease'

CFLAGS='-g -O2 -ffile-prefix-map=/srv/build/dub-1.30.0=. -fstack-protector-strong -Wformat -Werror=format-security'
ximion commented 1 year ago

Trying to use dub 1.31 to build the manual pages yields even more linker errors:

cd /srv/build/dub-1.31.0/bin/ && ./dub /srv/build/dub-1.31.0/scripts/man/gen_man.d

Serializing composite type Flags!(BuildRequirement) which has no serializable fields
Serializing composite type Flags!(BuildOption) which has no serializable fields
/usr/bin/ld: /tmp/ccncQhRw.o: in function `_D3std6format8internal5write__T8getWidthTAyaZQoFNaNfQlZl':
gen_man.d:(.text+0x6d76): undefined reference to `_D3std9algorithm9searching__T3allSQBg6format8internal5write__T8getWidthTAyaZQoFQhZ9__lambda2Z__TQCpTQBcZQCxMFNaNfQBpZb'
/usr/bin/ld: /tmp/ccncQhRw.o: in function `_D3std6format8internal5write__T8getWidthTAaZQnFNaNfQkZl':
gen_man.d:(.text+0x72ed): undefined reference to `_D3std9algorithm9searching__T3allSQBg6format8internal5write__T8getWidthTAaZQnFQgZ9__lambda2Z__TQCoTQBbZQCwMFNaNfQBoZb'
/usr/bin/ld: /tmp/ccncQhRw.o: in function `_D3std6format8internal5write__T8getWidthTAwZQnFNaNbNiNfQoZl':
gen_man.d:(.text+0x74e0): undefined reference to `_D3std9algorithm9searching__T3allSQBg6format8internal5write__T8getWidthTAwZQnFQgZ9__lambda2Z__TQCoTQBbZQCwMFNaNbNiNfQBsZb'
/usr/bin/ld: /tmp/.dub/build/dub-~master/library-$DFLAGS-linux.posix-x86_64-gdc_v12.2.0-EF73A06517126EA137612C896E3528F5C82DA77AA2D4C1F06844C8F055492695/libdub.a: in function `_D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTeTaZQCaFNaNfKQBrxeMKxSQDvQDu4spec__T10FormatSpecTaZQpZv':
commandline.d:(.text+0x83d66): undefined reference to `_D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTeTaZQCaFKQBnxeMKxSQDrQDq4spec__T10FormatSpecTaZQpZ__T9__lambda6TeZQnFNaNbNiNeKeZAxa'
/usr/bin/ld: /tmp/.dub/build/dub-~master/library-$DFLAGS-linux.posix-x86_64-gdc_v12.2.0-EF73A06517126EA137612C896E3528F5C82DA77AA2D4C1F06844C8F055492695/libdub.a: in function `_D3std9algorithm10comparison__T8mismatchSQBn4path__T14asRelativePathVEQCqQBd13CaseSensitivei1TAyaTQeZQBxFQlQnZ9__lambda6TSQEqQDd__T12pathSplitterTQCaZQtFQChZ12PathSplitterTQBzZQFpMFNaNbNiNfQCqQCtZSQHn8typecons__T5TupleTQDuTQDyZQp':
commandline.d:(.text+0x2a6289): undefined reference to `_D3std4path__T14asRelativePathVEQBeQBd13CaseSensitivei1TAyaTQeZQBxFQlQnZ__T9__lambda6TQBeTQBiZQtFNaNbNiNfQBxQCaZb'
/usr/bin/ld: /tmp/.dub/build/dub-~master/library-$DFLAGS-linux.posix-x86_64-gdc_v12.2.0-EF73A06517126EA137612C896E3528F5C82DA77AA2D4C1F06844C8F055492695/libdub.a: in function `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv__T11actOnChosenSQRcQRb__TQQyTQQnTQOsZQRk5emptyMFNdZ9__lambda1ZQCiFNaNbNiNfKSQTkQTj__TQTgTQSvTQRaZQTsZb':
commandline.d:(.text+0x2ae6cc): undefined reference to `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv5emptyMFNdZ__T9__lambda1TQQiZQpFNaNbNiNfQQxZb'
/usr/bin/ld: commandline.d:(.text+0x2ae715): undefined reference to `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv5emptyMFNdZ__T9__lambda1TQOjZQpFNaNbNiNfQOyZb'
/usr/bin/ld: /tmp/.dub/build/dub-~master/library-$DFLAGS-linux.posix-x86_64-gdc_v12.2.0-EF73A06517126EA137612C896E3528F5C82DA77AA2D4C1F06844C8F055492695/libdub.a: in function `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv__T11actOnChosenSQRcQRb__TQQyTQQnTQOsZQRk8popFrontMFZ9__lambda1ZQCjFNaNfKSQThQTg__TQTdTQSsTQQxZQTpZv':
commandline.d:(.text+0x2ae808): undefined reference to `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv8popFrontMFZ__T9__lambda1TQQjZQpFNaNbNiNfKQQzZv'
/usr/bin/ld: commandline.d:(.text+0x2ae823): undefined reference to `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv8popFrontMFZ__T9__lambda1TQOkZQpFNaNfKQOwZv'
/usr/bin/ld: /tmp/.dub/build/dub-~master/library-$DFLAGS-linux.posix-x86_64-gdc_v12.2.0-EF73A06517126EA137612C896E3528F5C82DA77AA2D4C1F06844C8F055492695/libdub.a: in function `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv__T11actOnChosenSQRcQRb__TQQyTQQnTQOsZQRk9moveFrontMFZ9__lambda1ZQCkFNaNfKSQTiQTh__TQTeTQStTQQyZQTqZya':
commandline.d:(.text+0x2aea9d): undefined reference to `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv9moveFrontMFZ__T9__lambda1TQQkZQpFNaNbNiNfKQRaZya'
/usr/bin/ld: commandline.d:(.text+0x2aeab8): undefined reference to `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv9moveFrontMFZ__T9__lambda1TQOlZQpFNaNfKQOxZxa'
/usr/bin/ld: /tmp/.dub/build/dub-~master/library-$DFLAGS-linux.posix-x86_64-gdc_v12.2.0-EF73A06517126EA137612C896E3528F5C82DA77AA2D4C1F06844C8F055492695/libdub.a: in function `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv__T11actOnChosenSQRcQRb__TQQyTQQnTQOsZQRk7popBackMFZ9__lambda1ZQCiFNaNfKSQTgQTf__TQTcTQSrTQQwZQToZv':
commandline.d:(.text+0x2aeb92): undefined reference to `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv7popBackMFZ__T9__lambda1TQQiZQpFNaNbNiNfKQQyZv'
/usr/bin/ld: commandline.d:(.text+0x2aebad): undefined reference to `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv7popBackMFZ__T9__lambda1TQOjZQpFNaNfKQOvZv'
/usr/bin/ld: /tmp/.dub/build/dub-~master/library-$DFLAGS-linux.posix-x86_64-gdc_v12.2.0-EF73A06517126EA137612C896E3528F5C82DA77AA2D4C1F06844C8F055492695/libdub.a: in function `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv__T11actOnChosenSQRcQRb__TQQyTQQnTQOsZQRk8moveBackMFZ9__lambda1ZQCjFNaNfKSQThQTg__TQTdTQSsTQQxZQTpZya':
commandline.d:(.text+0x2aec0b): undefined reference to `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv8moveBackMFZ__T9__lambda1TQQjZQpFNaNbNiNfKQQzZya'
/usr/bin/ld: commandline.d:(.text+0x2aec26): undefined reference to `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv8moveBackMFZ__T9__lambda1TQOkZQpFNaNfKQOwZxa'
collect2: error: ld returned 1 exit status
Error gdc failed with exit code 1.
ibuclaw commented 1 year ago

That's not good at all - I'll see if missing references can be boiled down to something palatable, but no guarantees on time.

Will try reducing that dub -Werror in the meantime.

ximion commented 1 year ago

It's a bit sad that we'll miss the Debian freeze deadline - I can ask for an exception, but I doubt I'll get it for a new upstream release (so Debian will be stuck at dub 1.28 ...).

In any case, once this works again I'll submit a PR for the dub CI, so we can catch these issues sooner next time :-)

WebFreak001 commented 1 year ago

you can usually workaround these issues with -fall-instantiations, but it's not ideal.

ibuclaw commented 1 year ago

@ximion By the way, this PR was backported for 12.3, can't say for sure whether it would help.

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108055

ximion commented 1 year ago

you can usually workaround these issues with -fall-instantiations, but it's not ideal.

Not in this case, at least not completely :(

cd /srv/build/dub-1.30.0/bin/ && DFLAGS="-frelease -fall-instantiations" ./dub /srv/build/dub-1.30.0/scripts/man/gen_man.d
Serializing composite type Flags!(BuildRequirement) which has no serializable fields
Serializing composite type Flags!(BuildOption) which has no serializable fields
/usr/bin/ld: /tmp/.dub/build/dub-~master/library-$DFLAGS-linux.posix-x86_64-gdc_v12.2.0-5B018ADD281F2DD65E9997254B3E2EA54AFB08E179AEC5CCEA33EEE2363D77BC/libdub.a: in function `_D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTeTaZQCaFNaNfKQBrxeMKxSQDvQDu4spec__T10FormatSpecTaZQpZv':
Attributes.d:(.text+0x95ffe): undefined reference to `_D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTeTaZQCaFKQBnxeMKxSQDrQDq4spec__T10FormatSpecTaZQpZ__T9__lambda6TeZQnFNaNbNiNeKeZAxa'
collect2: error: ld returned 1 exit status
Error gdc failed with exit code 1.
ibuclaw commented 1 year ago

@WebFreak001 looks like it might be related to that -Wdeprecated -Werrors behaviour you noticed.

Not close to an actual reduction, but this is as far as the mechanical one has taken it.

Package getPackage(PackageOverride ovr)
{
    ovr.match!(
        (any) {
            ovr.version_;
    });
    return null;
}

struct PackageOverride {
    deprecated  inout(Dependency) version_ () inout {
        return Dependency();
    }
}
WebFreak001 commented 1 year ago

that remaining linker error definitely looks like the bug link Iain just posted (it was the initial linker error that broke the alpine build at the start iirc)

So this remaining linker error you have has actually been known for a few months since I restarted the alpine GDC PR and was fixed by Iain, but still takes some time to sync up with the GCC release cycle.

ibuclaw commented 1 year ago

but still takes some time to sync up with the GCC release cycle.

Doesn't prevent Debian/Ubuntu from backporting early.

ibuclaw commented 1 year ago

@WebFreak001 looks like it might be related to that -Wdeprecated -Werrors behaviour you noticed.

Yep, building dub with dmd -w -de @build-files.txt gives us the same error message about no handlers.

ibuclaw commented 1 year ago

Reduction for the original build failure - not actually a compiler bug, rather a small discrepancy between what warnings-as-errors means between dmd and gdc. There is no distinction between deprecation and warning in gdc diagnostics, so -w turns on deprecations-as-errors too (dmd -de).

template match(alias handler)
{
    auto match()
    {   
        static assert(is(typeof((Override args) => handler(args))),
                      "I do not like green eggs and ham.");
    }
}

void getPackage(Override ovr)
{   
    match!((any) => ovr.version_);
}

struct Override
{
    deprecated int version_ () { return 0; }   
}

Likely dub should be fixed to not use a deprecated interface in the code that makes use of SumTypes.

ibuclaw commented 1 year ago

you can usually workaround these issues with -fall-instantiations, but it's not ideal.

Not in this case, at least not completely :(

Confirmed. With PR108055 applied, this whittles down to:

/usr/bin/../lib/gcc/x86_64-pc-linux-gnu/12.2.1/../../../../x86_64-pc-linux-gnu/bin/ld: /tmp/ccAQVmw5.o: in function `_D3std6format8internal5write__T8getWidthTAyaZQoFNaNfQlZl':
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.1/include/d/std/format/internal/write.d:3819: undefined reference to `_D3std9algorithm9searching__T3allSQBg6format8internal5write__T8getWidthTAyaZQoFQhZ9__lambda2Z__TQCpTQBcZQCxMFNaNfQBpZb'
/usr/bin/../lib/gcc/x86_64-pc-linux-gnu/12.2.1/../../../../x86_64-pc-linux-gnu/bin/ld: /tmp/ccAQVmw5.o: in function `_D3std6format8internal5write__T8getWidthTAaZQnFNaNfQkZl':
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.1/include/d/std/format/internal/write.d:3819: undefined reference to `_D3std9algorithm9searching__T3allSQBg6format8internal5write__T8getWidthTAaZQnFQgZ9__lambda2Z__TQCoTQBbZQCwMFNaNfQBoZb'
/usr/bin/../lib/gcc/x86_64-pc-linux-gnu/12.2.1/../../../../x86_64-pc-linux-gnu/bin/ld: /tmp/ccAQVmw5.o: in function `_D3std6format8internal5write__T8getWidthTAwZQnFNaNbNiNfQoZl':
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.1/include/d/std/format/internal/write.d:3819: undefined reference to `_D3std9algorithm9searching__T3allSQBg6format8internal5write__T8getWidthTAwZQnFQgZ9__lambda2Z__TQCoTQBbZQCwMFNaNbNiNfQBsZb'

With PR108055 and DFLAGS=-fall-instantiations this compiles successfully however.

Likely being bitten by the template emission changes in the front-end. Will have to adjust for 12.x to get the least surprising behaviour, maybe rethink strategy before 13.x.

Geod24 commented 1 year ago

Likely dub should be fixed to not use a deprecated interface in the code that makes use of SumTypes.

Looks like a simple fix, can you raise a PR or provide a link ?

ibuclaw commented 1 year ago

@Geod24 it comes from this function.

https://github.com/dlang/dub/blob/5f756ca805189be6761c866123818023c93ce5cb/source/dub/packagemanager.d#L222-L244

Geod24 commented 1 year ago

Looks like a DMD bug as it doesn't trigger a deprecation when it should.

topazus commented 1 year ago

I build dub 1.30.0 failed with the similar errors using ldc 1.30.0 on Fedora 37.

$ ldmd2 -run build.d
Using pre-existing version file. To force a rebuild, provide an explicit version (first argument) or remove: /home/ruby/rpmbuild/SOURCES/dub-1.30.0/source/dub/version_.d
Building dub using ldmd2 (dflags: ["-g", "-O", "-w"]), this may take a while...
Command `["ldmd2", "-of/home/ruby/rpmbuild/SOURCES/dub-1.30.0/bin/dub", "-I/home/ruby/rpmbuild/SOURCES/dub-1.30.0/source", "-version=DubUseCurl", "-version=DubApplication", "-g", "-O", "-w", "@build-files.txt"]` failed, output was:
Serializing composite type Flags!(BuildRequirement) which has no serializable fields
Serializing composite type Flags!(BuildOption) which has no serializable fields
Error: Error executing /usr/bin/ldc2: Killed

Error: /tmp/build-fc6919 failed with status: 1
$ ldmd2 --version
LDC - the LLVM D compiler (1.30.0):
  based on DMD v2.100.1 and LLVM 14.0.5
  built with LDC - the LLVM D compiler (1.30.0)
  Default target: x86_64-redhat-linux-gnu
WebFreak001 commented 1 year ago

@topazus

Error: Error executing /usr/bin/ldc2: Killed

how much memory does your build machine have? It looks like it was rather OOM killed instead of this being an LDC problem.

topazus commented 1 year ago

@topazus

Error: Error executing /usr/bin/ldc2: Killed

how much memory does your build machine have? It looks like it was rather OOM killed instead of this being an LDC problem.

My machine memory is 8G. I retried the build and it succeeded, maybe it caused by OOM. Thanks for your reply.

Geod24 commented 1 year ago

@ximion : Still having issues with the latest release ?

ximion commented 1 year ago

@ximion : Still having issues with the latest release ?

Yes, but it's probably GDC's faul. With GDC 12.2.0-14 I get:

Building dub using gdmd (dflags: ["-g", "-O", "-wi", "-release", "-frelease", "-fall-instantiations"]), this may take a while...
DUB has been built as: /srv/build/dub-1.31.1/bin/dub
You may want to run `sudo ln -s /srv/build/dub-1.31.1/bin/dub /usr/local/bin` now
# create manual pages
cd /srv/build/dub-1.31.1/bin/ && ./dub /srv/build/dub-1.31.1/scripts/man/gen_man.d
Serializing composite type Flags!(BuildRequirement) which has no serializable fields
Serializing composite type Flags!(BuildOption) which has no serializable fields
/usr/bin/ld: /tmp/.dub/build/dub-~master/library-$DFLAGS-linux.posix-x86_64-gdc_v12.2.0-D2C4CA6A417FEBE2B598421DE3E63E07FDA756D0F2DBAA216331D3AF2F6EE55C/libdub.a: in function `_D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTeTaZQCaFNaNfKQBrxeMKxSQDvQDu4spec__T10FormatSpecTaZQpZv':
commandline.d:(.text+0x84738): undefined reference to `_D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTeTaZQCaFKQBnxeMKxSQDrQDq4spec__T10FormatSpecTaZQpZ__T9__lambda6TeZQnFNaNbNiNeKeZAxa'
/usr/bin/ld: /tmp/.dub/build/dub-~master/library-$DFLAGS-linux.posix-x86_64-gdc_v12.2.0-D2C4CA6A417FEBE2B598421DE3E63E07FDA756D0F2DBAA216331D3AF2F6EE55C/libdub.a: in function `_D3std9algorithm10comparison__T8mismatchSQBn4path__T14asRelativePathVEQCqQBd13CaseSensitivei1TAyaTQeZQBxFQlQnZ9__lambda6TSQEqQDd__T12pathSplitterTQCaZQtFQChZ12PathSplitterTQBzZQFpMFNaNbNiNfQCqQCtZSQHn8typecons__T5TupleTQDuTQDyZQp':
commandline.d:(.text+0x2a6c35): undefined reference to `_D3std4path__T14asRelativePathVEQBeQBd13CaseSensitivei1TAyaTQeZQBxFQlQnZ__T9__lambda6TQBeTQBiZQtFNaNbNiNfQBxQCaZb'
/usr/bin/ld: /tmp/.dub/build/dub-~master/library-$DFLAGS-linux.posix-x86_64-gdc_v12.2.0-D2C4CA6A417FEBE2B598421DE3E63E07FDA756D0F2DBAA216331D3AF2F6EE55C/libdub.a: in function `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv__T11actOnChosenSQRcQRb__TQQyTQQnTQOsZQRk5emptyMFNdZ9__lambda1ZQCiFNaNbNiNfKSQTkQTj__TQTgTQSvTQRaZQTsZb':
commandline.d:(.text+0x2af078): undefined reference to `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv5emptyMFNdZ__T9__lambda1TQQiZQpFNaNbNiNfQQxZb'
/usr/bin/ld: commandline.d:(.text+0x2af0c1): undefined reference to `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv5emptyMFNdZ__T9__lambda1TQOjZQpFNaNbNiNfQOyZb'
/usr/bin/ld: /tmp/.dub/build/dub-~master/library-$DFLAGS-linux.posix-x86_64-gdc_v12.2.0-D2C4CA6A417FEBE2B598421DE3E63E07FDA756D0F2DBAA216331D3AF2F6EE55C/libdub.a: in function `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv__T11actOnChosenSQRcQRb__TQQyTQQnTQOsZQRk8popFrontMFZ9__lambda1ZQCjFNaNfKSQThQTg__TQTdTQSsTQQxZQTpZv':
commandline.d:(.text+0x2af1b4): undefined reference to `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv8popFrontMFZ__T9__lambda1TQQjZQpFNaNbNiNfKQQzZv'
/usr/bin/ld: commandline.d:(.text+0x2af1cf): undefined reference to `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv8popFrontMFZ__T9__lambda1TQOkZQpFNaNfKQOwZv'
/usr/bin/ld: /tmp/.dub/build/dub-~master/library-$DFLAGS-linux.posix-x86_64-gdc_v12.2.0-D2C4CA6A417FEBE2B598421DE3E63E07FDA756D0F2DBAA216331D3AF2F6EE55C/libdub.a: in function `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv__T11actOnChosenSQRcQRb__TQQyTQQnTQOsZQRk9moveFrontMFZ9__lambda1ZQCkFNaNfKSQTiQTh__TQTeTQStTQQyZQTqZya':
commandline.d:(.text+0x2af449): undefined reference to `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv9moveFrontMFZ__T9__lambda1TQQkZQpFNaNbNiNfKQRaZya'
/usr/bin/ld: commandline.d:(.text+0x2af464): undefined reference to `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv9moveFrontMFZ__T9__lambda1TQOlZQpFNaNfKQOxZxa'
/usr/bin/ld: /tmp/.dub/build/dub-~master/library-$DFLAGS-linux.posix-x86_64-gdc_v12.2.0-D2C4CA6A417FEBE2B598421DE3E63E07FDA756D0F2DBAA216331D3AF2F6EE55C/libdub.a: in function `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv__T11actOnChosenSQRcQRb__TQQyTQQnTQOsZQRk7popBackMFZ9__lambda1ZQCiFNaNfKSQTgQTf__TQTcTQSrTQQwZQToZv':
commandline.d:(.text+0x2af53e): undefined reference to `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv7popBackMFZ__T9__lambda1TQQiZQpFNaNbNiNfKQQyZv'
/usr/bin/ld: commandline.d:(.text+0x2af559): undefined reference to `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv7popBackMFZ__T9__lambda1TQOjZQpFNaNfKQOvZv'
/usr/bin/ld: /tmp/.dub/build/dub-~master/library-$DFLAGS-linux.posix-x86_64-gdc_v12.2.0-D2C4CA6A417FEBE2B598421DE3E63E07FDA756D0F2DBAA216331D3AF2F6EE55C/libdub.a: in function `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv__T11actOnChosenSQRcQRb__TQQyTQQnTQOsZQRk8moveBackMFZ9__lambda1ZQCjFNaNfKSQThQTg__TQTdTQSsTQQxZQTpZya':
commandline.d:(.text+0x2af5b7): undefined reference to `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv8moveBackMFZ__T9__lambda1TQQjZQpFNaNbNiNfKQQzZya'
/usr/bin/ld: commandline.d:(.text+0x2af5d2): undefined reference to `_D3std5range__T12ChooseResultTSQBd3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDcQDb__T5chainTSQDt9algorithm9iteration__T6joinerTSQFcQFb__T4TakeTSQFsQFr__T6RepeatTQFhZQmZQBfTQFsZQCfFQCbQGdZ6ResultTQGpTSQHwQGt__T5byUTFTaVEQIp8typecons__T4FlagVQHka19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQLsQHzQHs__TQHlTSQMj4path__T12pathSplitterTQLjZQtFQLqZ12PathSplitterTQNhZQJuFQCjQNsZQHpZQGxFNcQDrZQIdZQMfFQMcQOvQIfZQIvZQPv8moveBackMFZ__T9__lambda1TQOkZQpFNaNfKQOwZxa'
collect2: error: ld returned 1 exit status
Error gdc failed with exit code 1.

So, dub builds fine now, but when trying to build the manual pages using ./dub /srv/build/dub-1.31.1/scripts/man/gen_man.d I get undefined references again.

ximion commented 1 year ago

This is unfortunately still an issue, just with less symbols (GDC 13.x now):


/usr/bin/ld: /tmp/ccm9Cw7d.o: in function `_D3std6format8internal5write__T8getWidthTAaZQnFNaNfQkZl':
gen_man.d:(.text+0xafb4): undefined reference to `_D3std9algorithm9searching__T3allSQBg6format8internal5write__T8getWidthTAaZQnFQgZ9__lambda2Z__TQCoTQBbZQCwMFNaNfQBoZb'
/usr/bin/ld: /tmp/ccm9Cw7d.o: in function `_D3std6format8internal5write__T8getWidthTAyaZQoFNaNfQlZl':
gen_man.d:(.text+0xb031): undefined reference to `_D3std9algorithm9searching__T3allSQBg6format8internal5write__T8getWidthTAyaZQoFQhZ9__lambda2Z__TQCpTQBcZQCxMFNaNfQBpZb'
/usr/bin/ld: /tmp/ccm9Cw7d.o: in function `_D3std6format8internal5write__T8getWidthTAwZQnFNaNbNfQmZl':
gen_man.d:(.text+0xba9b): undefined reference to `_D3std9algorithm9searching__T3allSQBg6format8internal5write__T8getWidthTAwZQnFQgZ9__lambda2Z__TQCoTQBbZQCwMFNaNbNiNfQBsZb'
/usr/bin/ld: /tmp/ccm9Cw7d.o: in function `_D3std6format8internal5write__T20formatValueImplUlongTSQCbQCa8NoOpSinkTaZQBqFNaNfKQBcmIbMKxSQDmQDl4spec__T10FormatSpecTaZQpZv':
gen_man.d:(.text+0xceb6): undefined reference to `_D3std9algorithm9searching__T3allSQBg6format8internal5write__T20formatValueImplUlongTSQDgQCa8NoOpSinkTaZQBqFKQymIbMKxSQEmQDg4spec__T10FormatSpecTaZQpZ10__lambda16Z__TQFhTAaZQFoMFNaNfQmZb'
/usr/bin/ld: gen_man.d:(.text+0xcf4d): undefined reference to `_D3std9algorithm9searching__T3allSQBg6format8internal5write__T20formatValueImplUlongTSQDgQCa8NoOpSinkTaZQBqFKQymIbMKxSQEmQDg4spec__T10FormatSpecTaZQpZ10__lambda17Z__TQFhTAaZQFoMFNaNfQmZb'
collect2: error: ld returned 1 exit status
Error gdc failed with exit code 1.
ximion commented 1 year ago

This was last tested with Dub 1.34.0 and GDC 13.2.x and it's unfortunately currently still blocking dub upgrades in Debian and its derivatives.

ximion commented 1 year ago

Just as I wrote this, I found out that -fall-instantiations works this time! It's still a bug, but at least one that can be worked around now, so we can finally update dub in Debian :-)