Closed Kawanaao closed 4 months ago
Now you use different arguments as in the previous bug: Instead of -Xclang -mllvm
(separated by space) you use -Xclang=-mllvm
. Using a space instead should work now.
The other could have been fixed simpler already before: Add -Xclang=-mllvm
to the array FLAG_ARGS_WITH_PARAMS
.
Before I release this fix, please try:
-Xclang=-mllvm
to the array FLAG_ARGS_WITH_PARAMS
really fix the issue for you?FLAG_ARGS_WITH_PARAMS
like -Xclang -mmlir
and/or -Xclang=mmlir
? (I am not familiar with clang arguments.)Now you use different arguments as in the previous bug: Instead of
-Xclang -mllvm
(separated by space) you use-Xclang=-mllvm
. Using a space instead should work now.The other could have been fixed simpler already before: Add
-Xclang=-mllvm
to the arrayFLAG_ARGS_WITH_PARAMS
.Before I release this fix, please try:
- Does adding
-Xclang=-mllvm
to the arrayFLAG_ARGS_WITH_PARAMS
really fix the issue for you?- Is there anything else which should be added to
FLAG_ARGS_WITH_PARAMS
like-Xclang -mmlir
and/or-Xclang=mmlir
? (I am not familiar with clang arguments.)
Oh, I’m just trying to go through all the possible options for specifying arguments, simply and with the task of arguments through spaces, LDFLAGS turns out to be incorrect, that is, it is not affected in any way by FLAG_ARGS_WITH_PARAMS, case in simply removes duplicates
Just as I see - bashrc seems to just ignore that the arguments are separated by =, it feels like there is a problem in the deduplication mechanism, or it does not work on flags intended for C/C++, in the previous release (v22.2) -Xclang -mllvm -flag was not deduplicated for CFLAGS CXXFLAGS FFLAGS FCFLAGS F77FLAGS, as an example build.log of libmd on version v22.2:
* Package: app-crypt/libmd-1.1.0:0
* Repository: gentoo
* Maintainer: base-system@gentoo.org
* USE: abi_x86_64 amd64 elibc_glibc kernel_linux
* FEATURES: ccache compressdebug installsources network-sandbox preserve-libs sandbox splitdebug userpriv usersandbox
* FEATURES='assume-digests binpkg-docompress binpkg-dostrip binpkg-logs binpkg-multi-instance buildpkg-live ccache compressdebug config-protect-if-modified distlocks fixlafiles installsources ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch parallel-install pid-sandbox pkgdir-index-trusted preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms splitdebug strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr'
- * CFLAGS='-march=native -mtune=native -O3 -pipe -fstack-protector-strong -flto=thin -ffat-lto-objects -fopenmp -pthread -fPIC -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-mllvm -Xclang=-polly-parallel -Xclang=-mllvm -Xclang=-polly-vectorizer=stripmine -Xclang=-mllvm -Xclang=-polly-enable-mse -Xclang=-mllvm -Xclang=-polly-run-dce -g'
- * CXXFLAGS='-march=native -mtune=native -O3 -pipe -fstack-protector-strong -flto=thin -ffat-lto-objects -fopenmp -pthread -fPIC -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-mllvm -Xclang=-polly-parallel -Xclang=-mllvm -Xclang=-polly-vectorizer=stripmine -Xclang=-mllvm -Xclang=-polly-enable-mse -Xclang=-mllvm -Xclang=-polly-run-dce -g'
- * FFLAGS='-march=native -mtune=native -O3 -pipe -fstack-protector-strong -flto=thin -ffat-lto-objects -fopenmp -pthread -fPIC -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-mllvm -Xclang=-polly-parallel -Xclang=-mllvm -Xclang=-polly-vectorizer=stripmine -Xclang=-mllvm -Xclang=-polly-enable-mse -Xclang=-mllvm -Xclang=-polly-run-dce -g'
- * FCFLAGS='-march=native -mtune=native -O3 -pipe -fstack-protector-strong -flto=thin -ffat-lto-objects -fopenmp -pthread -fPIC -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-mllvm -Xclang=-polly-parallel -Xclang=-mllvm -Xclang=-polly-vectorizer=stripmine -Xclang=-mllvm -Xclang=-polly-enable-mse -Xclang=-mllvm -Xclang=-polly-run-dce -g'
- * F77FLAGS='-march=native -mtune=native -O3 -pipe -fstack-protector-strong -flto=thin -ffat-lto-objects -fopenmp -pthread -fPIC -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-mllvm -Xclang=-polly-parallel -Xclang=-mllvm -Xclang=-polly-vectorizer=stripmine -Xclang=-mllvm -Xclang=-polly-enable-mse -Xclang=-mllvm -Xclang=-polly-run-dce -g'
- * LDFLAGS='-Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -pthread -fPIC -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -g'
* RUSTFLAGS='-Ctarget-cpu=native -Copt-level=3 -Clink-arg=-fuse-ld=mold'
* MAKEOPTS='-j24'
* USE_NONGNU='1'
* clang version 18.1.7+libcxx
* clang version 18.1.7+libcxx
* LLD 18.1.7 (compatible with GNU linkers)
app-crypt/libmd: 7 minutes, 9 seconds average for 1 merge
2024-06-15T14:33:56 >>> app-crypt/libmd: 7 minutes, 9 seconds
>>> Unpacking source...
>>> Unpacking libmd-1.1.0.tar.xz to /var/tmp/portage/app-crypt/libmd-1.1.0/work
>>> Source unpacked in /var/tmp/portage/app-crypt/libmd-1.1.0/work
>>> Preparing source in /var/tmp/portage/app-crypt/libmd-1.1.0/work/libmd-1.1.0 ...
>>> Source prepared.
>>> Configuring source in /var/tmp/portage/app-crypt/libmd-1.1.0/work/libmd-1.1.0 ...
* abi_x86_64.amd64: running multilib-minimal_abi_src_configure
* econf: updating libmd-1.1.0/build-aux/config.guess with /usr/share/gnuconfig/config.guess
* econf: updating libmd-1.1.0/build-aux/config.sub with /usr/share/gnuconfig/config.sub
/var/tmp/portage/app-crypt/libmd-1.1.0/work/libmd-1.1.0/configure --prefix=/usr --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --datarootdir=/usr/share --disable-dependency-tracking --disable-silent-rules --disable-static --docdir=/usr/share/doc/libmd-1.1.0 --htmldir=/usr/share/doc/libmd-1.1.0/html --with-sysroot=/ --libdir=/usr/lib64
checking for a BSD-compatible install... /var/tmp/portage/._portage_reinstall_.ja8oq01w/bin/ebuild-helpers/xattr/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking whether make supports the include directive... yes (GNU style)
checking for x86_64-pc-linux-gnu-gcc... clang
checking whether the C compiler works... no
configure: error: in `/var/tmp/portage/app-crypt/libmd-1.1.0/work/libmd-1.1.0-abi_x86_64.amd64':
configure: error: C compiler cannot create executables
See `config.log' for more details
Regarding the additional flags of the second nesting, these could be
-Xclang -plugin-arg-<plugin-name> -Xclang <flag or arg>
These are the ones I know and have used, I'm not familiar with the others
Can you try with the head, please? (Only 10-flags.sh needs to be updated.)
Can you try with the head, please? (Only 10-flags.sh needs to be updated.)
Ah, I didn’t quite understand about head, for some reason the last commit was not shown hah
I tried it now, everything works great! :) There were no errors, but I’ll try to run through all the packages
Calculating dependencies ... done!
Dependency resolution took 1.99 s (backtrack: 0/20).
>>> Verifying ebuild manifests
>>> Emerging (1 of 1) app-crypt/libmd-1.1.0::gentoo
* libmd-1.1.0.tar.xz BLAKE2B SHA512 size ;-) ... [ ok ]
[32m*[0m FEATURES='assume-digests binpkg-docompress binpkg-dostrip binpkg-logs binpkg-multi-instance buildpkg-live config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync merge-wait multilib-strict network-sandbox news parallel-fetch pid-sandbox pkgdir-index-trusted preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr'
[32m*[0m CFLAGS='-march=native -mtune=native -O3 -pipe -fstack-protector-strong -flto=thin -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-mllvm -Xclang=-polly-parallel -Xclang=-mllvm -Xclang=-polly-vectorizer=stripmine -Xclang=-mllvm -Xclang=-polly-enable-mse -Xclang=-mllvm -Xclang=-polly-run-dce -pthread -fPIC -g'
[32m*[0m CXXFLAGS='-march=native -mtune=native -O3 -pipe -fstack-protector-strong -flto=thin -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-mllvm -Xclang=-polly-parallel -Xclang=-mllvm -Xclang=-polly-vectorizer=stripmine -Xclang=-mllvm -Xclang=-polly-enable-mse -Xclang=-mllvm -Xclang=-polly-run-dce -pthread -fPIC -g'
[32m*[0m FFLAGS='-march=native -mtune=native -O3 -pipe -fstack-protector-strong -flto=thin -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-mllvm -Xclang=-polly-parallel -Xclang=-mllvm -Xclang=-polly-vectorizer=stripmine -Xclang=-mllvm -Xclang=-polly-enable-mse -Xclang=-mllvm -Xclang=-polly-run-dce -pthread -fPIC -g'
[32m*[0m FCFLAGS='-march=native -mtune=native -O3 -pipe -fstack-protector-strong -flto=thin -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-mllvm -Xclang=-polly-parallel -Xclang=-mllvm -Xclang=-polly-vectorizer=stripmine -Xclang=-mllvm -Xclang=-polly-enable-mse -Xclang=-mllvm -Xclang=-polly-run-dce -pthread -fPIC -g'
[32m*[0m F77FLAGS='-march=native -mtune=native -O3 -pipe -fstack-protector-strong -flto=thin -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-mllvm -Xclang=-polly-parallel -Xclang=-mllvm -Xclang=-polly-vectorizer=stripmine -Xclang=-mllvm -Xclang=-polly-enable-mse -Xclang=-mllvm -Xclang=-polly-run-dce -pthread -fPIC -g'
[32m*[0m LDFLAGS='-Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native -O3 -pipe -fstack-protector-strong -ffat-lto-objects -fopenmp -fplugin=LLVMPolly.so -Xclang=-mllvm -Xclang=-polly -Xclang=-mllvm -Xclang=-polly-parallel -Xclang=-mllvm -Xclang=-polly-vectorizer=stripmine -Xclang=-mllvm -Xclang=-polly-enable-mse -Xclang=-mllvm -Xclang=-polly-run-dce -pthread -fPIC -g'
[32m*[0m RUSTFLAGS='-Ctarget-cpu=native -Copt-level=3 -Clink-arg=-fuse-ld=mold'
[32m*[0m MAKEOPTS='-j24'
[32m*[0m USE_NONGNU='1'
[32m*[0m clang version 18.1.7+libcxx
[32m*[0m clang version 18.1.7+libcxx
[32m*[0m LLD 18.1.7 (compatible with GNU linkers)
Released now as 23.1.
In continuation of the -mllvm flag, the release did not fix the problem, since for some reason only LDFLAGS was deduplicated, I did a little debugging of the function that adds these arguments without duplicates, the results look like this
If I understand correctly, then
case " $addres $dups
in" ignores the list of flags that can be left as is It's also worth clarifying that this only happens with LDFLAGS, other flags remain correct, they pass this function, but do not cause a traversal viafor