vaeth / portage-bashrc-mv

Provide support for /etc/portage/bashrc.d and /etc/portage/package.cflags for the portage package manager (Gentoo Linux)
http://www.mathematik.uni-wuerzburg.de/~vaeth/gentoo/index.html#portage-bashrc
30 stars 9 forks source link

LDFLAGS always deduplicated #41

Closed Kawanaao closed 4 months ago

Kawanaao commented 4 months ago

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

FlagAddNodupArgPar: LDFLAGS

FlagAddNodupArgPar: LDFLAGS
FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version 
FlagAddNodupArgPar: -march=native

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native 
FlagAddNodupArgPar: -mtune=native

FlagAddNodupArgPar: -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -flto=thin -Wl,-O3,--sort-common,--as-needed,--undefined-version -march=native -mtune=native 
FlagAddNodupArgPar: -O3

FlagAddNodupArgPar: -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 
FlagAddNodupArgPar: -pipe

FlagAddNodupArgPar: -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 
FlagAddNodupArgPar: -fstack-protector-strong

FlagAddNodupArgPar: -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 
FlagAddNodupArgPar: -flto=thin

FlagAddNodupArgPar: -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 
FlagAddNodupArgPar: -ffat-lto-objects

FlagAddNodupArgPar: -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 
FlagAddNodupArgPar: -fopenmp

FlagAddNodupArgPar: -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 
FlagAddNodupArgPar: -fplugin=LLVMPolly.so

FlagAddNodupArgPar: -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 
FlagAddNodupArgPar: -Xclang=-mllvm

FlagAddNodupArgPar: -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 
FlagAddNodupArgPar: -Xclang=-polly

FlagAddNodupArgPar: -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 
FlagAddNodupArgPar: -Xclang=-mllvm

FlagAddNodupArgPar: -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 
FlagAddNodupArgPar: -Xclang=-polly-parallel

FlagAddNodupArgPar: -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=-polly-parallel 
FlagAddNodupArgPar: -Xclang=-mllvm

FlagAddNodupArgPar: -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=-polly-parallel 
FlagAddNodupArgPar: -Xclang=-polly-vectorizer=stripmine

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine 
FlagAddNodupArgPar: -Xclang=-mllvm

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine 
FlagAddNodupArgPar: -Xclang=-polly-enable-mse

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse 
FlagAddNodupArgPar: -Xclang=-mllvm

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse 
FlagAddNodupArgPar: -Xclang=-polly-run-dce

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce 
FlagAddNodupArgPar: -pthread

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread 
FlagAddNodupArgPar: -fPIC

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC 
FlagAddNodupArgPar: -g

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -march=native

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -mtune=native

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -O3

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -pipe

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -fstack-protector-strong

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -flto=thin

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -ffat-lto-objects

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -fopenmp

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -fplugin=LLVMPolly.so

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -Xclang=-mllvm

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -Xclang=-polly

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -Xclang=-mllvm

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -Xclang=-polly-parallel

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -Xclang=-mllvm

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -Xclang=-polly-vectorizer=stripmine

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -Xclang=-mllvm

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -Xclang=-polly-enable-mse

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -Xclang=-mllvm

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -Xclang=-polly-run-dce

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -pthread

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -fPIC

FlagAddNodupArgPar: -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=-polly-parallel -Xclang=-polly-vectorizer=stripmine -Xclang=-polly-enable-mse -Xclang=-polly-run-dce -pthread -fPIC -g 
FlagAddNodupArgPar: -g

FlagAddNodupArgPar: CFLAGS
FlagAddNodupArgPar: CXXFLAGS
FlagAddNodupArgPar: CPPFLAGS
FlagAddNodupArgPar() {
    local argpar addres addf addvar dups
    dups=$1
    shift
    argpar=$1
    shift
    addvar=$1
    shift
    eval addres=\$$addvar
+   echo "FlagAddNodupArgPar: $addvar"
    FlagCombineParameters "$argpar" addf "$@"
    eval "set -- a $addf"
    shift
    for addf
    do
+       echo "FlagAddNodupArgPar: $addres $dups"
+       echo "FlagAddNodupArgPar: $addf"
        case " $addres $dups " in
        *[[:space:]]"$addf"[[:space:]]*)
            continue;;
        esac
        addres=$addres${addres:+\ }$addf
    done
    eval $addvar=\$addres
}

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 via for

vaeth commented 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:

  1. Does adding -Xclang=-mllvm to the array FLAG_ARGS_WITH_PARAMS really fix the issue for you?
  2. 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.)
Kawanaao commented 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:

  1. Does adding -Xclang=-mllvm to the array FLAG_ARGS_WITH_PARAMS really fix the issue for you?
  2. 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

  1. -Xclang -load -Xclang plugin.so (depricated, fplugin new alternative)
  2. -Xclang -add-plugin -Xclang plugin-name
  3. -Xclang -plugin-arg-<plugin-name> -Xclang <flag or arg>
  4. -Xclang -plugin-opt -Xclang opt1 -Xclang -plugin-opt -Xclang emit-llvm

These are the ones I know and have used, I'm not familiar with the others

vaeth commented 4 months ago

Can you try with the head, please? (Only 10-flags.sh needs to be updated.)

Kawanaao commented 4 months ago

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 ]
 * 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'
 * 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'
 * 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'
 * 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'
 * 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'
 * 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'
 * 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'
 * 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)
vaeth commented 4 months ago

Released now as 23.1.