firasuke / mussel Goto Github PK
View Code? Open in Web Editor NEWThe shortest and fastest script to build working cross compilers targeting musl libc
License: ISC License
The shortest and fastest script to build working cross compilers targeting musl libc
License: ISC License
All three patches (-ffast-math
, powerpc, and powerpc64) are removing checks for conditions that produce a broken libc. By removing the checks, you're getting yourself (and your users) a broken libc. It will produce seriously wrong results, especially for the strtod
and printf
families, and might even be able to produce exploitable buffer overflows in them. It will also produce powerpc toolchains with silently broken ABI.
All of these patches should be removed, and the conditions that caused you to add them investigated and fixed. (They're indicative of your cross toolchain procedure not actually working.)
As far as I can see, both of these are used to unpack a single package each (binutils and GMP, respectively). Both of those projects also publish .xz
packages that are roughly of the same size. It would make it a bit easier to set up the build environment if you were to drop those dependencies and use the .xz
packages instead.
While running ./mussel.sh x86-64 -k -l -o -p
and having all the sources downloaded, the script just finishes on .. Installing musl headers...
without giving any error.
More details:
+=======================================================+
| mussel.sh - The fastest musl libc Toolchain Generator |
+-------------------------------------------------------+
| Copyright (c) 2020-2022, Firas Khalil Khana |
| Distributed under the terms of the ISC License |
+=======================================================+
Target Architecture: x86-64
Optional C++ Support: yes
Optional Linux Headers Support: yes
Optional OpenMP Support: yes
Optional Parallel Support: yes
Optional pkg-config Support: yes
!. binutils source directory already exists, skipping...
!. binutils-2.38.tar.lz already exists, skipping...
.. Verifying binutils-2.38.tar.lz...
binutils-2.38.tar.lz: OK
.. Unpacking binutils-2.38.tar.lz...
=> binutils-2.38.tar.lz prepared.
!. gcc source directory already exists, skipping...
!. gcc-11.2.0.tar.xz already exists, skipping...
.. Verifying gcc-11.2.0.tar.xz...
gcc-11.2.0.tar.xz: OK
.. Unpacking gcc-11.2.0.tar.xz...
=> gcc-11.2.0.tar.xz prepared.
!. gmp source directory already exists, skipping...
!. gmp-6.2.1.tar.zst already exists, skipping...
.. Verifying gmp-6.2.1.tar.zst...
gmp-6.2.1.tar.zst: OK
.. Unpacking gmp-6.2.1.tar.zst...
=> gmp-6.2.1.tar.zst prepared.
!. isl source directory already exists, skipping...
!. isl-0.24.tar.xz already exists, skipping...
.. Verifying isl-0.24.tar.xz...
isl-0.24.tar.xz: OK
.. Unpacking isl-0.24.tar.xz...
=> isl-0.24.tar.xz prepared.
!. linux source directory already exists, skipping...
!. linux-5.14.15.tar.xz already exists, skipping...
.. Verifying linux-5.14.15.tar.xz...
linux-5.14.15.tar.xz: OK
.. Unpacking linux-5.14.15.tar.xz...
=> linux-5.14.15.tar.xz prepared.
!. mpc source directory already exists, skipping...
!. mpc-1.2.1.tar.gz already exists, skipping...
.. Verifying mpc-1.2.1.tar.gz...
mpc-1.2.1.tar.gz: OK
.. Unpacking mpc-1.2.1.tar.gz...
=> mpc-1.2.1.tar.gz prepared.
!. mpfr source directory already exists, skipping...
!. mpfr-4.1.0.tar.xz already exists, skipping...
.. Verifying mpfr-4.1.0.tar.xz...
mpfr-4.1.0.tar.xz: OK
.. Unpacking mpfr-4.1.0.tar.xz...
=> mpfr-4.1.0.tar.xz prepared.
!. musl source directory already exists, skipping...
!. musl-1.2.2.tar.gz already exists, skipping...
.. Verifying musl-1.2.2.tar.gz...
musl-1.2.2.tar.gz: OK
.. Unpacking musl-1.2.2.tar.gz...
=> musl-1.2.2.tar.gz prepared.
!. pkgconf source directory already exists, skipping...
!. pkgconf-1.8.0.tar.xz already exists, skipping...
.. Verifying pkgconf-1.8.0.tar.xz...
pkgconf-1.8.0.tar.xz: OK
.. Unpacking pkgconf-1.8.0.tar.xz...
=> pkgconf-1.8.0.tar.xz prepared.
.. Applying 0001-pure64-for-x86-64.patch from glaucus for gcc...
=> gcc patched with 0001-pure64-for-x86-64!
.. Cleaning builds directory...
=> builds cleaned.
.. Cleaning sysroot directory...
=> sysroot cleaned.
.. Preparing musl headers...
.. Installing musl headers...
While I was building mussel via the Copacabana build system, I decided to look at the logs and saw that, at some point, the G.C.C. build broke:
The main script apparently exited on error, but Copacabana'''s build script didn't stop there --- and I think that's my fault, so I will fix it as soon as possible.
I also noted some more errors, but they're on my front.
Hello there,
Because discussions is not enabled for this repo, I place it here, as it's not an issue.
I wonder if someone every tried to do a canadian-cross compile with this?
What my main goal is.
x86_64-linux-gnu
systemarmv6-linux-musleabihf
for exampleaarch64-linux-gnu
This way it would be possible to build cross-compilers for all the provided targets but then are able to run on a arm64/aarch64 host/architecture.
Else something like QEMU needs to be used to emulate the aarch64 architecture, which is probably not going to provide the best performance.
Someone an idea, or tried this before either using mussel or something else? And if so, does someone have any pointers?
Thanks in advance!
btw. I already tried to install the aarch64-linux-gnu-g**
cross compilers, use that as GCC/G++ and added the correct --host
and --build
arguments to the configure commands.
.. Verifying binutils-2.40.tar.lz...
b3sum: skipping invalid checksum line
!. binutils-2.40.tar.lz is corrupted, redownloading...
mussel script gets stuck in a loop of downloading, attempting to check against checksum and then downloading again [same file]
I use the C implementation of the b3sum tool since most implementations are rust, like b3sum-ng
Perhaps add an option to use m5sum? Or perhaps, what is a good C/C++ implementation of b3sum?
When testing a build for aarch64 I noticed that the paths seem to be hardcoded, so toolchains can't be moved to a directory other than where they were built at. As you can see, aarch64-linux-musl-gcc
works when invoked at mussel
's default path:
andy:~/code/mussel/toolchain/bin$ ./aarch64-linux-musl-gcc test.c -o test -s -static -v
Using built-in specs.
COLLECT_GCC=./aarch64-linux-musl-gcc
COLLECT_LTO_WRAPPER=/home/andy/code/mussel/toolchain/libexec/gcc/aarch64-linux-musl/13.2.0/lto-wrapper
Target: aarch64-linux-musl
Configured with: /home/andy/code/mussel/sources/gcc/gcc-13.2.0/configure --prefix=/home/andy/code/mussel/toolchain --target=aarch64-linux-musl --with-sysroot=/home/andy/code/mussel/sysroot --enable-languages=c,c++ --disable-multilib --disable-bootstrap --disable-libsanitizer --disable-werror --enable-initfini-array --with-arch=armv8-a --with-abi=lp64 --enable-fix-cortex-a53-835769 --enable-fix-cortex-a53-843419
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 13.2.0 (GCC)
COLLECT_GCC_OPTIONS='-o' 'test' '-s' '-static' '-v' '-march=armv8-a' '-mlittle-endian' '-mabi=lp64'
/home/andy/code/mussel/toolchain/libexec/gcc/aarch64-linux-musl/13.2.0/cc1 -quiet -v test.c -quiet -dumpbase test.c -dumpbase-ext .c -march=armv8-a -mlittle-endian -mabi=lp64 -version -o /tmp/cc9VhAz8.s
GNU C17 (GCC) version 13.2.0 (aarch64-linux-musl)
compiled by GNU C version 13.2.0, GMP version 6.3.0, MPFR version 4.2.1, MPC version 1.3.1, isl version isl-0.26-GMP
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "/home/andy/code/mussel/sysroot/usr/local/include"
#include "..." search starts here:
#include <...> search starts here:
/home/andy/code/mussel/toolchain/lib/gcc/aarch64-linux-musl/13.2.0/../../../../aarch64-linux-musl/include
/home/andy/code/mussel/sysroot/usr/include
/home/andy/code/mussel/toolchain/lib/gcc/aarch64-linux-musl/13.2.0/include
End of search list.
Compiler executable checksum: c3f9714356a1cc7be1615938ff7e0062
COLLECT_GCC_OPTIONS='-o' 'test' '-s' '-static' '-v' '-march=armv8-a' '-mlittle-endian' '-mabi=lp64'
/home/andy/code/mussel/toolchain/lib/gcc/aarch64-linux-musl/13.2.0/../../../../aarch64-linux-musl/bin/as -v -EL -march=armv8-a -mabi=lp64 -o /tmp/ccft0xy7.o /tmp/cc9VhAz8.s
GNU assembler version 2.42 (aarch64-linux-musl) using BFD version (GNU Binutils) 2.42
COMPILER_PATH=/home/andy/code/mussel/toolchain/libexec/gcc/aarch64-linux-musl/13.2.0/:/home/andy/code/mussel/toolchain/libexec/gcc/aarch64-linux-musl/13.2.0/:/home/andy/code/mussel/toolchain/libexec/gcc/aarch64-linux-musl/:/home/andy/code/mussel/toolchain/lib/gcc/aarch64-linux-musl/13.2.0/:/home/andy/code/mussel/toolchain/lib/gcc/aarch64-linux-musl/:/home/andy/code/mussel/toolchain/lib/gcc/aarch64-linux-musl/13.2.0/../../../../aarch64-linux-musl/bin/
LIBRARY_PATH=/home/andy/code/mussel/toolchain/lib/gcc/aarch64-linux-musl/13.2.0/:/home/andy/code/mussel/toolchain/lib/gcc/aarch64-linux-musl/13.2.0/../../../../aarch64-linux-musl/lib/../lib/:/home/andy/code/mussel/sysroot/lib/../lib/:/home/andy/code/mussel/sysroot/usr/lib/../lib/:/home/andy/code/mussel/toolchain/lib/gcc/aarch64-linux-musl/13.2.0/../../../../aarch64-linux-musl/lib/:/home/andy/code/mussel/sysroot/lib/:/home/andy/code/mussel/sysroot/usr/lib/
COLLECT_GCC_OPTIONS='-o' 'test' '-s' '-static' '-v' '-march=armv8-a' '-mlittle-endian' '-mabi=lp64' '-dumpdir' 'test.'
/home/andy/code/mussel/toolchain/libexec/gcc/aarch64-linux-musl/13.2.0/collect2 -plugin /home/andy/code/mussel/toolchain/libexec/gcc/aarch64-linux-musl/13.2.0/liblto_plugin.so -plugin-opt=/home/andy/code/mussel/toolchain/libexec/gcc/aarch64-linux-musl/13.2.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccrj2Upo.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_eh -plugin-opt=-pass-through=-lc --sysroot=/home/andy/code/mussel/sysroot -Bstatic -X -EL -maarch64linux --fix-cortex-a53-835769 --fix-cortex-a53-843419 -o test -s /home/andy/code/mussel/sysroot/usr/lib/../lib/crt1.o /home/andy/code/mussel/sysroot/usr/lib/../lib/crti.o /home/andy/code/mussel/toolchain/lib/gcc/aarch64-linux-musl/13.2.0/crtbeginT.o -L/home/andy/code/mussel/toolchain/lib/gcc/aarch64-linux-musl/13.2.0 -L/home/andy/code/mussel/toolchain/lib/gcc/aarch64-linux-musl/13.2.0/../../../../aarch64-linux-musl/lib/../lib -L/home/andy/code/mussel/sysroot/lib/../lib -L/home/andy/code/mussel/sysroot/usr/lib/../lib -L/home/andy/code/mussel/toolchain/lib/gcc/aarch64-linux-musl/13.2.0/../../../../aarch64-linux-musl/lib -L/home/andy/code/mussel/sysroot/lib -L/home/andy/code/mussel/sysroot/usr/lib /tmp/ccft0xy7.o --start-group -lgcc -lgcc_eh -lc --end-group /home/andy/code/mussel/toolchain/lib/gcc/aarch64-linux-musl/13.2.0/crtend.o /home/andy/code/mussel/sysroot/usr/lib/../lib/crtn.o
COLLECT_GCC_OPTIONS='-o' 'test' '-s' '-static' '-v' '-march=armv8-a' '-mlittle-endian' '-mabi=lp64' '-dumpdir' 'test.'
andy:~/code/mussel/toolchain/bin$ echo $?
0
Now let's try compiling test.c
after moving the toolchain into a new directory.
andy:~/code/mussel/toolchain/bin$ cd ../..
andy:~/code/mussel$ mkdir -p test_dir
mkdir: created directory 'test_dir'
andy:~/code/mussel$ mv sysroot toolchain test_dir/
renamed 'sysroot' -> 'test_dir/sysroot'
renamed 'toolchain' -> 'test_dir/toolchain'
andy:~/code/mussel$ cd test_dir/toolchain/bin
andy:~/code/mussel/test_dir/toolchain/bin$ ./aarch64-linux-musl-gcc test.c -o test -s -static -v
Since toolchain
and sysroot
were moved, gcc can no longer find the headers and thus fails.
Using built-in specs.
COLLECT_GCC=./aarch64-linux-musl-gcc
COLLECT_LTO_WRAPPER=/home/andy/code/mussel/test_dir/toolchain/bin/../libexec/gcc/aarch64-linux-musl/13.2.0/lto-wrapper
Target: aarch64-linux-musl
Configured with: /home/andy/code/mussel/sources/gcc/gcc-13.2.0/configure --prefix=/home/andy/code/mussel/toolchain --target=aarch64-linux-musl --with-sysroot=/home/andy/code/mussel/sysroot --enable-languages=c,c++ --disable-multilib --disable-bootstrap --disable-libsanitizer --disable-werror --enable-initfini-array --with-arch=armv8-a --with-abi=lp64 --enable-fix-cortex-a53-835769 --enable-fix-cortex-a53-843419
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 13.2.0 (GCC)
COLLECT_GCC_OPTIONS='-o' 'test' '-s' '-static' '-v' '-march=armv8-a' '-mlittle-endian' '-mabi=lp64'
/home/andy/code/mussel/test_dir/toolchain/bin/../libexec/gcc/aarch64-linux-musl/13.2.0/cc1 -quiet -v -iprefix /home/andy/code/mussel/test_dir/toolchain/bin/../lib/gcc/aarch64-linux-musl/13.2.0/ test.c -quiet -dumpbase test.c -dumpbase-ext .c -march=armv8-a -mlittle-endian -mabi=lp64 -version -o /tmp/ccHA1H0P.s
GNU C17 (GCC) version 13.2.0 (aarch64-linux-musl)
compiled by GNU C version 13.2.0, GMP version 6.3.0, MPFR version 4.2.1, MPC version 1.3.1, isl version isl-0.26-GMP
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "/home/andy/code/mussel/sysroot/usr/local/include"
ignoring duplicate directory "/home/andy/code/mussel/test_dir/toolchain/bin/../lib/gcc/../../lib/gcc/aarch64-linux-musl/13.2.0/../../../../aarch64-linux-musl/include"
ignoring nonexistent directory "/home/andy/code/mussel/sysroot/usr/include"
ignoring duplicate directory "/home/andy/code/mussel/test_dir/toolchain/bin/../lib/gcc/../../lib/gcc/aarch64-linux-musl/13.2.0/include"
#include "..." search starts here:
#include <...> search starts here:
/home/andy/code/mussel/test_dir/toolchain/bin/../lib/gcc/aarch64-linux-musl/13.2.0/../../../../aarch64-linux-musl/include
/home/andy/code/mussel/test_dir/toolchain/bin/../lib/gcc/aarch64-linux-musl/13.2.0/include
End of search list.
Compiler executable checksum: c3f9714356a1cc7be1615938ff7e0062
test.c:1:10: fatal error: stdio.h: No such file or directory
1 | #include <stdio.h>
| ^~~~~~~~~
compilation terminated.
andy:~/code/mussel/test_dir/toolchain/bin$ echo $?
1
I'll submit another PR when I get around to it as I believe I found a fix, but I figured I'd file this issue so it's accounted for.
My CMLFS system has LLVM & elftoolchain as default compiler and binary tools [and system libc is musl]. From my experience, GCC has to be built with binutils and not elftoolchain. My CMLFS system was able to build GCC with LLVM and binutils. I have not tried compiling mussel without GCC yet. Perhaps this experience of mine may be useful for this repo.
I installed GCC, mpc, mpfr, and binutils in /opt/gnu
. GMP is installed in /usr
. CPU architecture is x86_64
. I had to do the following to compile mussel without errors:
/cgnutools
, so I modified mussel script to set MPREFIX="/cgnutools"
x86_64-pc-linux-musl-ranlib
, x86_64-pc-linux-musl-ar
... these are linked to x86_64-pc-linux-musl-gcc-ar
and x86_64-pc-linux-musl-gcc-ranlib
... otherwise mussel fails to build musl libc due to 'missing' those two binaries.sudo -E CC=/opt/gnu/bin/gcc CXX=/opt/gnu/bin/g++ ./mussel.sh x86_64 -l -o -k -p
/cgnutools
I am planning to release 3.0.0 of CMLFS that uses mussel to bootstrap the toolchain. I wanted to see if a completed CMLFS system can rebuild itself...
Running on WLS2, check runs:
p@LT:~$ ~/mussel/check.sh
bash: 5.1.16(1)-release
bc: 1.07.1
binutils: Binutils for Ubuntu) 2.38
bison: 3.8.2
bzip2: 1.0.8
ccache: 4.5.1
coreutils: 8.32
diffutils: 3.8
findutils: 4.8.0
g++: 11.3.0-1ubuntu1~22.04)
gawk: 5.1.0
gcc: 11.3.0-1ubuntu1~22.04)
git: 2.34.1
glibc: /home/pwills/mussel/check.sh: 52: /lib/libc.so.6: not found
grep: 3.7
gzip: 1.10
linux: 5.10.102.1-microsoft-standard-WSL2
lzip: 1.23
m4: 1.4.18
make: 4.3
perl: 5.34.0
rsync: 3.2.3
sed: 4.8
tar: 1.34
texinfo: 6.8
xz: 5.2.5
zstd: v1.4.8
This happens because /lib/libc.so.6
doesn't exist on ubuntu jammy with an up to date apt install libc6.
I'm not sure if this is the cause of the mussel script completing yet having an empty toolchain/arm-linux-musleabihf/include
directory. Here is the file for that run of mussel.sh
.
In an attempted workaround, I symlinked /lib/x86_64-linux-gnu/libc.so.6
to /lib/libc.so.6
This sort of fixed the check, but got the same empty include dir for the target. The simple workaround for this is just to copy the files from sources/musl/musl-${version}/include
into the toolchain/arm-linux-musleabihf/include
directory.
Note: the target examples I'm using are for mussel.sh armv7
.
.. Fetching binutils-2.42.tar.xz...
##################### 100.0% binutils-2.42.tar.xz##O=-
.. Verifying binutils-2.42.tar.xz...
binutils-2.42.tar.xz: No such file or directory
08AB67877F7F0000:error:80000002:system library:file_ctrl:No such file or directory:crypto/bio/bss_file.c:297:calling fopen( binutils-2.42.tar.xz, r)
08AB67877F7F0000:error:10080002:BIO routines:file_ctrl:system lib:crypto/bio/bss_file.c:300:
!. binutils-2.42.tar.xz is corrupted, redownloading...
##################### 100.0% binutils-2.42.tar.xz##O=-
.. Unpacking binutils-2.42.tar.xz...
=> binutils-2.42.tar.xz prepared.
.. Fetching gcc-13.2.0.tar.xz...
##################### 100.0% gcc-13.2.0.tar.xz##O=-
.. Verifying gcc-13.2.0.tar.xz...
gcc-13.2.0.tar.xz: No such file or directory
087B27B30C7F0000:error:80000002:system library:file_ctrl:No such file or directory:crypto/bio/bss_file.c:297:calling fopen( gcc-13.2.0.tar.xz, r)
087B27B30C7F0000:error:10080002:BIO routines:file_ctrl:system lib:crypto/bio/bss_file.c:300:
!. gcc-13.2.0.tar.xz is corrupted, redownloading...
##################### 100.0% gcc-13.2.0.tar.xz##O=-
.. Unpacking gcc-13.2.0.tar.xz...
=> gcc-13.2.0.tar.xz prepared.
.. Fetching gmp-6.3.0.tar.xz...
##################### 100.0% gmp-6.3.0.tar.xz##O=-
.. Verifying gmp-6.3.0.tar.xz...
gmp-6.3.0.tar.xz: No such file or directory
082B7A19F67F0000:error:80000002:system library:file_ctrl:No such file or directory:crypto/bio/bss_file.c:297:calling fopen( gmp-6.3.0.tar.xz, r)
082B7A19F67F0000:error:10080002:BIO routines:file_ctrl:system lib:crypto/bio/bss_file.c:300:
!. gmp-6.3.0.tar.xz is corrupted, redownloading...
##################### 100.0% gmp-6.3.0.tar.xz##O=-
.. Unpacking gmp-6.3.0.tar.xz...
=> gmp-6.3.0.tar.xz prepared.
.. Fetching isl-0.26.tar.xz...
##################### 100.0% isl-0.26.tar.xz##O=-
.. Verifying isl-0.26.tar.xz...
isl-0.26.tar.xz: No such file or directory
088BE9ED3F7F0000:error:80000002:system library:file_ctrl:No such file or directory:crypto/bio/bss_file.c:297:calling fopen( isl-0.26.tar.xz, r)
088BE9ED3F7F0000:error:10080002:BIO routines:file_ctrl:system lib:crypto/bio/bss_file.c:300:
!. isl-0.26.tar.xz is corrupted, redownloading...
##################### 100.0% isl-0.26.tar.xz##O=-
.. Unpacking isl-0.26.tar.xz...
=> isl-0.26.tar.xz prepared.
.. Fetching mpc-1.3.1.tar.gz...
##################### 100.0% mpc-1.3.1.tar.gz##O=-
.. Verifying mpc-1.3.1.tar.gz...
mpc-1.3.1.tar.gz: No such file or directory
085B8F3AC57F0000:error:80000002:system library:file_ctrl:No such file or directory:crypto/bio/bss_file.c:297:calling fopen( mpc-1.3.1.tar.gz, r)
085B8F3AC57F0000:error:10080002:BIO routines:file_ctrl:system lib:crypto/bio/bss_file.c:300:
!. mpc-1.3.1.tar.gz is corrupted, redownloading...
##################### 100.0% mpc-1.3.1.tar.gz##O=-
.. Unpacking mpc-1.3.1.tar.gz...
=> mpc-1.3.1.tar.gz prepared.
.. Fetching mpfr-4.2.1.tar.xz...
##################### 100.0% mpfr-4.2.1.tar.xz##O=-
.. Verifying mpfr-4.2.1.tar.xz...
mpfr-4.2.1.tar.xz: No such file or directory
08FBA474427F0000:error:80000002:system library:file_ctrl:No such file or directory:crypto/bio/bss_file.c:297:calling fopen( mpfr-4.2.1.tar.xz, r)
08FBA474427F0000:error:10080002:BIO routines:file_ctrl:system lib:crypto/bio/bss_file.c:300:
!. mpfr-4.2.1.tar.xz is corrupted, redownloading...
##################### 100.0% mpfr-4.2.1.tar.xz##O=-
.. Unpacking mpfr-4.2.1.tar.xz...
=> mpfr-4.2.1.tar.xz prepared.
.. Fetching musl-1.2.4.tar.gz...
##################### 100.0% musl-1.2.4.tar.gz##O=-
.. Verifying musl-1.2.4.tar.gz...
musl-1.2.4.tar.gz: No such file or directory
089B13EA667F0000:error:80000002:system library:file_ctrl:No such file or directory:crypto/bio/bss_file.c:297:calling fopen( musl-1.2.4.tar.gz, r)
089B13EA667F0000:error:10080002:BIO routines:file_ctrl:system lib:crypto/bio/bss_file.c:300:
!. musl-1.2.4.tar.gz is corrupted, redownloading...
##################### 100.0% musl-1.2.4.tar.gz##O=-
.. Unpacking musl-1.2.4.tar.gz...
=> musl-1.2.4.tar.gz prepared.
.. Applying 0001-pure64-for-x86-64.patch from glaucus for gcc...
=> gcc patched with 0001-pure64-for-x86-64!
mussel.sh
uses the patch
tool, but there's no check for it in check.sh
.
Error information in the log file:
g++ -DHAVE_CONFIG_H -I. -I/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl -I/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include -Iinclude/ -I/home/cat/git/mussel/sources/gcc/gcc-12.2.0/gmp -I/home/cat/git/mussel/builds/cross-gcc/./gmp -g -O2 -MT isl_test_cpp17.o -MD -MP -MF $depbase.Tpo -c -o isl_test_cpp17.o /home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc &&\
mv -f $depbase.Tpo $depbase.Po
In file included from /home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:20:
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17-generic.cc: In function ‘isl::id construct_id(isl::ctx, bool*)’:
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17-generic.cc:25:24: error: no matching function for call to ‘isl::id::id(isl::ctx&, const char [2], std::shared_ptr<S>&)’
25 | isl::id id(ctx, "S", s);
| ^
In file included from /home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:7:
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10634:1: note: candidate: ‘isl::id::id(isl::ctx, const string&)’
10634 | id::id(isl::ctx ctx, const std::string &str)
| ^~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10634:1: note: candidate expects 2 arguments, 3 provided
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10622:1: note: candidate: ‘isl::id::id(const isl::id&)’
10622 | id::id(const id &obj)
| ^~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10622:1: note: candidate expects 1 argument, 3 provided
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10619:1: note: candidate: ‘isl::id::id()’
10619 | id::id()
| ^~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10619:1: note: candidate expects 0 arguments, 3 provided
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10616:1: note: candidate: ‘isl::id::id(isl_id*)’
10616 | id::id(__isl_take isl_id *ptr)
| ^~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10616:1: note: candidate expects 1 argument, 3 provided
In file included from /home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:20:
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17-generic.cc: In function ‘void test_try_user(isl::ctx)’:
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17-generic.cc:39:27: error: no matching function for call to ‘isl::id::id(isl::ctx&, const char [5], int)’
39 | isl::id id(ctx, "test", 5);
| ^
In file included from /home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:7:
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10634:1: note: candidate: ‘isl::id::id(isl::ctx, const string&)’
10634 | id::id(isl::ctx ctx, const std::string &str)
| ^~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10634:1: note: candidate expects 2 arguments, 3 provided
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10622:1: note: candidate: ‘isl::id::id(const isl::id&)’
10622 | id::id(const id &obj)
| ^~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10622:1: note: candidate expects 1 argument, 3 provided
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10619:1: note: candidate: ‘isl::id::id()’
10619 | id::id()
| ^~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10619:1: note: candidate expects 0 arguments, 3 provided
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10616:1: note: candidate: ‘isl::id::id(isl_id*)’
10616 | id::id(__isl_take isl_id *ptr)
| ^~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10616:1: note: candidate expects 1 argument, 3 provided
In file included from /home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:20:
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17-generic.cc:42:22: error: ‘class isl::id’ has no member named ‘try_user’
42 | auto maybe_int = id.try_user<int>();
| ^~~~~~~~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17-generic.cc:42:31: error: expected primary-expression before ‘int’
42 | auto maybe_int = id.try_user<int>();
| ^~~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17-generic.cc:43:20: error: ‘class isl::id’ has no member named ‘try_user’
43 | auto maybe_s = id.try_user<std::shared_ptr<S>>();
| ^~~~~~~~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17-generic.cc:43:46: error: expected primary-expression before ‘>’ token
43 | auto maybe_s = id.try_user<std::shared_ptr<S>>();
| ^~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17-generic.cc:43:49: error: expected primary-expression before ‘)’ token
43 | auto maybe_s = id.try_user<std::shared_ptr<S>>();
| ^
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17-generic.cc:44:24: error: ‘class isl::id’ has no member named ‘try_user’
44 | auto maybe_int2 = id2.try_user<int>();
| ^~~~~~~~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17-generic.cc:44:33: error: expected primary-expression before ‘int’
44 | auto maybe_int2 = id2.try_user<int>();
| ^~~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17-generic.cc:60:21: error: ‘class isl::id’ has no member named ‘try_user’
60 | auto maybe_s = id.try_user<std::shared_ptr<S>>();
| ^~~~~~~~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17-generic.cc:60:47: error: expected primary-expression before ‘>’ token
60 | auto maybe_s = id.try_user<std::shared_ptr<S>>();
| ^~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17-generic.cc:60:50: error: expected primary-expression before ‘)’ token
60 | auto maybe_s = id.try_user<std::shared_ptr<S>>();
| ^
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc: In function ‘void test_user(isl::ctx)’:
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:44:27: error: no matching function for call to ‘isl::id::id(isl::ctx&, const char [5], int)’
44 | isl::id id(ctx, "test", 5);
| ^
In file included from /home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:7:
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10634:1: note: candidate: ‘isl::id::id(isl::ctx, const string&)’
10634 | id::id(isl::ctx ctx, const std::string &str)
| ^~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10634:1: note: candidate expects 2 arguments, 3 provided
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10622:1: note: candidate: ‘isl::id::id(const isl::id&)’
10622 | id::id(const id &obj)
| ^~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10622:1: note: candidate expects 1 argument, 3 provided
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10619:1: note: candidate: ‘isl::id::id()’
10619 | id::id()
| ^~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10619:1: note: candidate expects 0 arguments, 3 provided
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10616:1: note: candidate: ‘isl::id::id(isl_id*)’
10616 | id::id(__isl_take isl_id *ptr)
| ^~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10616:1: note: candidate expects 1 argument, 3 provided
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:46:44: error: no matching function for call to ‘isl::id::id(isl::ctx&, const char [6], std::string)’
46 | isl::id id3(ctx, "test3", std::string("s"));
| ^
In file included from /home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:7:
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10634:1: note: candidate: ‘isl::id::id(isl::ctx, const string&)’
10634 | id::id(isl::ctx ctx, const std::string &str)
| ^~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10634:1: note: candidate expects 2 arguments, 3 provided
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10622:1: note: candidate: ‘isl::id::id(const isl::id&)’
10622 | id::id(const id &obj)
| ^~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10622:1: note: candidate expects 1 argument, 3 provided
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10619:1: note: candidate: ‘isl::id::id()’
10619 | id::id()
| ^~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10619:1: note: candidate expects 0 arguments, 3 provided
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10616:1: note: candidate: ‘isl::id::id(isl_id*)’
10616 | id::id(__isl_take isl_id *ptr)
| ^~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/include/isl/cpp.h:10616:1: note: candidate expects 1 argument, 3 provided
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:48:21: error: ‘class isl::id’ has no member named ‘user’
48 | auto int_user = id.user<int>();
| ^~~~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:48:26: error: expected primary-expression before ‘int’
48 | auto int_user = id.user<int>();
| ^~~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:51:20: error: ‘class isl::id’ has no member named ‘user’
51 | auto s_user = id3.user<std::string>();
| ^~~~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:51:36: error: expected primary-expression before ‘>’ token
51 | auto s_user = id3.user<std::string>();
| ^
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:51:38: error: expected primary-expression before ‘)’ token
51 | auto s_user = id3.user<std::string>();
| ^
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc: In lambda function:
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:54:30: error: ‘class isl::id’ has no member named ‘user’
54 | check_invalid([&id] () { id.user<std::string>(); });
| ^~~~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:54:46: error: expected primary-expression before ‘>’ token
54 | check_invalid([&id] () { id.user<std::string>(); });
| ^
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:54:48: error: expected primary-expression before ‘)’ token
54 | check_invalid([&id] () { id.user<std::string>(); });
| ^
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc: In lambda function:
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:55:32: error: ‘class isl::id’ has no member named ‘user’
55 | check_invalid([&id2] () { id2.user<int>(); });
| ^~~~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:55:37: error: expected primary-expression before ‘int’
55 | check_invalid([&id2] () { id2.user<int>(); });
| ^~~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc: In lambda function:
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:56:32: error: ‘class isl::id’ has no member named ‘user’
56 | check_invalid([&id2] () { id2.user<std::string>(); });
| ^~~~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:56:48: error: expected primary-expression before ‘>’ token
56 | check_invalid([&id2] () { id2.user<std::string>(); });
| ^
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:56:50: error: expected primary-expression before ‘)’ token
56 | check_invalid([&id2] () { id2.user<std::string>(); });
| ^
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc: In lambda function:
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:57:32: error: ‘class isl::id’ has no member named ‘user’
57 | check_invalid([&id3] () { id3.user<int>(); });
| ^~~~
/home/cat/git/mussel/sources/gcc/gcc-12.2.0/isl/isl_test_cpp17.cc:57:37: error: expected primary-expression before ‘int’
57 | check_invalid([&id3] () { id3.user<int>(); });
| ^~~
make[3]: *** [Makefile:1970: isl_test_cpp17.o] Error 1
make[3]: Leaving directory '/home/cat/git/mussel/builds/cross-gcc/isl'
make[2]: *** [Makefile:2101: all-recursive] Error 1
make[2]: Leaving directory '/home/cat/git/mussel/builds/cross-gcc/isl'
make[1]: *** [Makefile:1589: all] Error 2
make[1]: Leaving directory '/home/cat/git/mussel/builds/cross-gcc/isl'
make: *** [Makefile:6565: all-isl] Error 2
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.