Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

ppc64le cannot use global install due to incorrectly compiled trampoline #2996

Open
2 tasks done
davised opened this issue Jan 23, 2025 · 2 comments
Open
2 tasks done
Labels
area:global Related to pixi global

Comments

@davised
Copy link

davised commented Jan 23, 2025

Checks

  • I have checked that this issue has not already been reported.

  • I have confirmed this bug exists on the latest version of pixi, using pixi --version.

Reproducible example

$ pixi info
System
------------
       Pixi version: 0.40.3
           Platform: linux-ppc64le
   Virtual packages: __unix=0=0
                   : __linux=4.18.0=0
                   : __glibc=2.28=0
                   : __cuda=12.4=0
                   : __archspec=1=power9le

This install process completes:

pixi global install ripgrep

And running this is fine:

pixi exec -s ripgrep rg -h

Issue description

When running the global installed rg:

$ rg
bash: /local/cqls/opt/ppc64le/bin/rg: cannot execute binary file: Exec format error

Expected behavior

I had to manually re-compile the ppc64le trampoline:

python trampoline/build-trampoline.py

and then recompile pixi for this to work. I realize that ppc64le is somewhat uncommon arch, so I'm happy to do an upload or PR or whatever if that would be helpful.

Now all is well.

@Hofer-Julian
Copy link
Contributor

Thanks for the report @davised!

We actually had multiple attempts to try to get ppc64le to fully working, and our understanding was that the last attempt finally worked. Obviously that wasn't the case.

But you are saying, if you build the trampoline yourself it works?

ppc64le binaries are built via cross-compilation. If you can find the mistake in our setup, that would be great:

- name: "Linux-powerpc64le"
target: powerpc64le-unknown-linux-gnu
os: ubuntu-latest

@Hofer-Julian Hofer-Julian added the area:global Related to pixi global label Jan 24, 2025
@davised
Copy link
Author

davised commented Jan 24, 2025

Ok I figured out why. The version from github is still compiled for ppc64 and not ppc64le.

Here is the version on github:

$ file pixi-trampoline-powerpc64le-unknown-linux-gnu
pixi-trampoline-powerpc64le-unknown-linux-gnu: ELF 64-bit **MSB** pie executable, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, interpreter /lib64/ld64.so.1, BuildID[sha1]=2e7d9af2e324c7f982a56029dcf62e59bad18940, for GNU/Linux 3.2.0, stripped

vs the one I compiled myself:

$ file ../pixi-trampoline-powerpc64le-unknown-linux-gnu
../pixi-trampoline-powerpc64le-unknown-linux-gnu: ELF 64-bit **LSB** pie executable, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, interpreter /lib64/ld64.so.2, for GNU/Linux 3.10.0, BuildID[sha1]=6bf9a282af36576904bc63931ba2fa274a6c77ce, stripped

Is it possible the github workflow didn't run after you updated the recipe to point to ppc64le?

I looked through the recipe, and it looks good from here.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
area:global Related to pixi global
Projects
None yet
Development

No branches or pull requests

2 participants