Raku / App-Rakubrew

Raku environment manager
https://rakubrew.org/
Other
26 stars 13 forks source link

raku: No such file or directory when trying to use in SparrowCI #60

Closed melezhik closed 1 year ago

melezhik commented 1 year ago

I here is what I get when I try to use rakubrew in SparrowCI:

[task run: task.bash - tasks/main]
[dump code: task.bash]
[1] set -e
[2] 
[3] version=$(config version)
[4] echo "Use rakudo version: $version"
[5] eval "$(~/.rakubrew/bin/rakubrew init Bash)"
[6] rakubrew download moar-$version
[7] rakubrew switch moar-$version
[8] ls -l ~/.rakubrew/versions/moar-$version/bin/
[9] 
[10] cd source
[11] which zef
[12] which raku
[13] raku --version
[14] zef --version
[15] 
[16] zef update 
[17] zef install --/test .
[18] 
[task stdout]
18:16:56 :: Use rakudo version: 2022.07
18:16:57 :: Downloading https://rakudo.org/dl/rakudo/rakudo-moar-2022.07-01-linux-x86_64-gcc.tar.gz
18:16:58 :: Extracting
18:16:59 :: Switching to moar-2022.07
18:16:59 :: Done, moar-2022.07 installed
18:16:59 :: Switching to moar-2022.07
18:16:59 :: total 204
18:16:59 :: -rwxr-xr-x    1 worker   wheel        17904 Nov  8 18:16 moar
18:16:59 :: -rwxr-xr-x    1 worker   wheel        14128 Nov  8 18:16 nqp
18:17:00 :: -rwxr-xr-x    1 worker   wheel        14128 Nov  8 18:16 nqp-m
18:17:00 :: -rwxr-xr-x    1 worker   wheel        14176 Nov  8 18:16 perl6
18:17:00 :: -rwxr-xr-x    1 worker   wheel        14176 Nov  8 18:16 perl6-debug
18:17:00 :: -rwxr-xr-x    1 worker   wheel        14176 Nov  8 18:16 perl6-debug-m
18:17:00 :: -rwxr-xr-x    1 worker   wheel         1927 Nov  8 18:16 perl6-gdb-m
18:17:00 :: -rwxr-xr-x    1 worker   wheel         1779 Nov  8 18:16 perl6-lldb-m
18:17:00 :: -rwxr-xr-x    1 worker   wheel        14176 Nov  8 18:16 perl6-m
18:17:00 :: -rwxr-xr-x    1 worker   wheel         1605 Nov  8 18:16 perl6-valgrind-m
18:17:00 :: lrwxrwxrwx    1 worker   wheel            6 Nov  8 18:16 raku -> rakudo
18:17:00 :: lrwxrwxrwx    1 worker   wheel           12 Nov  8 18:16 raku-debug -> rakudo-debug
18:17:00 :: -rwxr-xr-x    1 worker   wheel        14176 Nov  8 18:16 rakudo
18:17:00 :: -rwxr-xr-x    1 worker   wheel        14176 Nov  8 18:16 rakudo-debug
18:17:00 :: -rwxr-xr-x    1 worker   wheel        14176 Nov  8 18:16 rakudo-debug-m
18:17:00 :: -rwxr-xr-x    1 worker   wheel         1927 Nov  8 18:16 rakudo-gdb-m
18:17:00 :: -rwxr-xr-x    1 worker   wheel         1779 Nov  8 18:16 rakudo-lldb-m
18:17:00 :: -rwxr-xr-x    1 worker   wheel        14176 Nov  8 18:16 rakudo-m
18:17:00 :: -rwxr-xr-x    1 worker   wheel         1605 Nov  8 18:16 rakudo-valgrind-m
18:17:00 :: /home/worker/.rakubrew/versions/moar-2022.07/share/perl6/site/bin/zef
18:17:00 :: /home/worker/.rakubrew/versions/moar-2022.07/bin/raku
[task stderr]
18:17:00 :: /var/.sparrowdo/env/main/.sparrowdo/tasks/main/task.bash: line 13: /home/worker/.rakubrew/versions/moar-2022.07/bin/raku: No such file or directory
18:17:00 :: task exit status: 127
18:17:00 :: task tasks/main FAILED
The spawned command 'docker exec -i sparrow-worker sh -l /var/.sparrowdo/env/main/.sparrowdo/sparrowrun.sh' exited unsuccessfully (exit code: 127, signal: 0)
  in block <unit> at /home/sph/.raku/resources/57C38AFDF922EB0C43584FF5F701A03850B5346F line 13
  in sub MAIN at /home/sph/.raku/bin/sparrowdo line 3
  in block <unit> at /home/sph/.raku/bin/sparrowdo line 1

I am not sure what I do wrong here ...

Full log is available - https://ci.sparrowhub.io/report/1626 ( please pay attention that the most recent logs appear on the top ... )

melezhik commented 1 year ago

I have added ldd information, is it alpine OS related issue?

[task run: task.bash - tasks/main]
[dump code: task.bash]
[1] set -e
[2] 
[3] version=$(config version)
[4] echo "Use rakudo version: $version"
[5] eval "$(~/.rakubrew/bin/rakubrew init Bash)"
[6] rakubrew download moar-$version
[7] rakubrew switch moar-$version
[8] ls -l ~/.rakubrew/versions/moar-$version/bin/
[9] 
[10] cd source
[11] stat ~/.rakubrew/versions/moar-$version/bin/rakudo
[12] file ~/.rakubrew/versions/moar-$version/bin/rakudo
[13] ldd ~/.rakubrew/versions/moar-$version/bin/rakudo
[14] 
[15] ~/.rakubrew/versions/moar-$version/bin/rakudo --version
[16] which zef
[17] which raku
[18] which rakudo
[19] 
[20] rakudo  --version
[21] raku --version
[22] zef --version
[23] 
[24] zef update 
[25] zef install --/test .
[26] 
[task stdout]
18:42:43 :: Use rakudo version: 2022.07
18:42:44 :: Downloading https://rakudo.org/dl/rakudo/rakudo-moar-2022.07-01-linux-x86_64-gcc.tar.gz
18:42:45 :: Extracting
18:42:46 :: Switching to moar-2022.07
18:42:46 :: Done, moar-2022.07 installed
18:42:46 :: Switching to moar-2022.07
18:42:46 :: total 204
18:42:46 :: -rwxr-xr-x    1 worker   wheel        17904 Nov  8 18:42 moar
18:42:46 :: -rwxr-xr-x    1 worker   wheel        14128 Nov  8 18:42 nqp
18:42:46 :: -rwxr-xr-x    1 worker   wheel        14128 Nov  8 18:42 nqp-m
18:42:46 :: -rwxr-xr-x    1 worker   wheel        14176 Nov  8 18:42 perl6
18:42:46 :: -rwxr-xr-x    1 worker   wheel        14176 Nov  8 18:42 perl6-debug
18:42:46 :: -rwxr-xr-x    1 worker   wheel        14176 Nov  8 18:42 perl6-debug-m
18:42:46 :: -rwxr-xr-x    1 worker   wheel         1927 Nov  8 18:42 perl6-gdb-m
18:42:46 :: -rwxr-xr-x    1 worker   wheel         1779 Nov  8 18:42 perl6-lldb-m
18:42:46 :: -rwxr-xr-x    1 worker   wheel        14176 Nov  8 18:42 perl6-m
18:42:46 :: -rwxr-xr-x    1 worker   wheel         1605 Nov  8 18:42 perl6-valgrind-m
18:42:46 :: lrwxrwxrwx    1 worker   wheel            6 Nov  8 18:42 raku -> rakudo
18:42:46 :: lrwxrwxrwx    1 worker   wheel           12 Nov  8 18:42 raku-debug -> rakudo-debug
18:42:46 :: -rwxr-xr-x    1 worker   wheel        14176 Nov  8 18:42 rakudo
18:42:46 :: -rwxr-xr-x    1 worker   wheel        14176 Nov  8 18:42 rakudo-debug
18:42:46 :: -rwxr-xr-x    1 worker   wheel        14176 Nov  8 18:42 rakudo-debug-m
18:42:46 :: -rwxr-xr-x    1 worker   wheel         1927 Nov  8 18:42 rakudo-gdb-m
18:42:46 :: -rwxr-xr-x    1 worker   wheel         1779 Nov  8 18:42 rakudo-lldb-m
18:42:46 :: -rwxr-xr-x    1 worker   wheel        14176 Nov  8 18:42 rakudo-m
18:42:46 :: -rwxr-xr-x    1 worker   wheel         1605 Nov  8 18:42 rakudo-valgrind-m
18:42:46 ::   File: /home/worker/.rakubrew/versions/moar-2022.07/bin/rakudo
18:42:46 ::   Size: 14176       Blocks: 32         IO Block: 4096   regular file
18:42:46 :: Device: 33h/51d Inode: 5185304     Links: 1
18:42:46 :: Access: (0755/-rwxr-xr-x)  Uid: ( 1000/  worker)   Gid: (   10/   wheel)
18:42:46 :: Access: 2022-11-08 18:42:45.681186377 +0000
18:42:46 :: Modify: 2022-11-08 18:42:45.681186377 +0000
18:42:46 :: Change: 2022-11-08 18:42:45.681186377 +0000
18:42:46 :: /home/worker/.rakubrew/versions/moar-2022.07/bin/rakudo: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=7065703052a5ff8b49afd1a78d082e1eb902133a, not stripped
18:42:46 ::     /lib64/ld-linux-x86-64.so.2 (0x7fa2da470000)
18:42:46 ::     libmoar.so => /home/worker/.rakubrew/versions/moar-2022.07/bin/../lib/libmoar.so (0x7fa2d9962000)
18:42:46 ::     libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7fa2da470000)
18:42:46 ::     libm.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7fa2da470000)
18:42:46 ::     libpthread.so.0 => /lib64/ld-linux-x86-64.so.2 (0x7fa2da470000)
18:42:46 ::     librt.so.1 => /lib64/ld-linux-x86-64.so.2 (0x7fa2da470000)
18:42:46 ::     libdl.so.2 => /lib64/ld-linux-x86-64.so.2 (0x7fa2da470000)
[task stderr]
18:42:46 :: Error loading shared library ld-linux-x86-64.so.2: No such file or directory (needed by /home/worker/.rakubrew/versions/moar-2022.07/bin/../lib/libmoar.so)
18:42:46 :: Error relocating /home/worker/.rakubrew/versions/moar-2022.07/bin/../lib/libmoar.so: __isnan: symbol not found
18:42:46 :: Error relocating /home/worker/.rakubrew/versions/moar-2022.07/bin/../lib/libmoar.so: __isinf: symbol not found
18:42:46 :: Error relocating /home/worker/.rakubrew/versions/moar-2022.07/bin/../lib/libmoar.so: __register_atfork: symbol not found
18:42:46 :: Error relocating /home/worker/.rakubrew/versions/moar-2022.07/bin/../lib/libmoar.so: __strdup: symbol not found
18:42:46 :: Error relocating /home/worker/.rakubrew/versions/moar-2022.07/bin/../lib/libmoar.so: gnu_get_libc_version: symbol not found
18:42:46 :: task exit status: 127
18:42:46 :: task tasks/main FAILED
The spawned command 'docker exec -i sparrow-worker sh -l /var/.sparrowdo/env/main/.sparrowdo/sparrowrun.sh' exited unsuccessfully (exit code: 127, signal: 0)
  in block <unit> at /home/sph/.raku/resources/57C38AFDF922EB0C43584FF5F701A03850B5346F line 13
  in sub MAIN at /home/sph/.raku/bin/sparrowdo line 3
  in block <unit> at /home/sph/.raku/bin/sparrowdo line 1

the full log is available - https://ci.sparrowhub.io/report/1629

melezhik commented 1 year ago

yes, this looks like alpine OS issue, not reproduced on Debian for example - https://ci.sparrowhub.io/report/1632

patrickbkr commented 1 year ago

Yes, the executables on rakudo.org (which rakubrew uses) don't work on Alpine, because libc is incompatible. The error is sadly misleading. I already put a comment on rakudo.org/download hinting at the issue. The best bet is to build a Rakudo yourself or just use the ones in the Alpine repos. They should be fairly up to date.

Unreleated to this issue: I generally recommend not using Rakubrew in automation scenarios. Its feature set is aimed at interactive use. In general downloading the release tarballs from rakudo.org, extracting them and setting up the paths (there even is a script to help with the path setup included in the tarballs) is straight forward, fewer lines of code than setting up rakubrew and less error prone as there is an entire piece of software less to worry about.

melezhik commented 1 year ago

In general downloading the release tarballs from rakudo.org, extracting them and setting up the paths

Good! Where can I get an example script for that?

patrickbkr commented 1 year ago

The following is untested, but it should be as simple as:

curl -o rakudo.tgz https://rakudo.org/dl/rakudo/rakudo-moar-$VER-01-linux-x86_64-gcc.tar.gz
tar -xzf rakudo.tgz
eval "$(rakudo-$VER/scripts/set-env.sh --quiet)"

There is some documentation about the set-env.sh script in the README.md file in the same archive.

melezhik commented 1 year ago

@patrickbkr - thanks for that. SparrowCI works fine with new installation method - https://ci.sparrowhub.io/report/1670