devkitPro / docker

Dockerfiles for https://hub.docker.com/u/devkitpro/
GNU General Public License v3.0
58 stars 28 forks source link

Unable to build Atmosphere, hactool missing in devkitpro/devkita64 #31

Closed borntohonk closed 1 month ago

borntohonk commented 1 month ago

make[3]: hactool: No such file or directory make[3]: *** [/Atmosphere/emummc/Makefile:104: /Atmosphere/emummc/emummc_unpacked.kip] Error 127

attempting to comply with your request to not use CI's running pacman -Syu https://github.com/devkitPro/pacman/issues/31

please add hactool to your container, so that I can comply with your needs and instead use your container.

reproducible command on debian: (note: there's some quirks in atmospheres make all chain which fails troposphere commands, which is why make is called twice before that.)

expected result: hactool present so that atmosphere compiles

sudo docker pull devkitpro/devkita64:latest

sudo docker run --name atmosphere \
 --rm \
 --volume $PWD/.:/out \
 devkitpro/devkita64:latest /bin/bash -c \
 "git clone https://github.com/Atmosphere-NX/libnx.git && \
 git clone https://github.com/Atmosphere-NX/Atmosphere.git && \
 git -C libnx fetch && \
 git -C libnx checkout 1900_support && \
 make -C libnx -j$(nproc) && \
 make -C libnx install && \
 make -C Atmosphere/troposphere/haze -j$(nproc) && \
 make -C Atmosphere/troposphere/daybreak -j$(nproc) && \
 make -C Atmosphere -j$(nproc)"

or the equivalent github actions workflow:


 jobs:
  build:
    runs-on: ubuntu-latest
    container: devkitpro/devkita64
    - name: Checkout Atmosphere
      uses: actions/checkout@v4
      with:
        repository: Atmosphere-NX/Atmosphere
        path: Atmosphere

    - name: Checkout libnx
      uses: actions/checkout@v4
      with:
        repository: Atmosphere-NX/libnx
        path: libnx
        ref: 1900_support

    - name: Build libnx and Atmosphere
      run: |
        make -C libnx -j$(nproc) && \
        make -C libnx install && \
        make -C Atmosphere/troposphere/haze -j$(nproc) && \
        make -C Atmosphere/troposphere/daybreak -j$(nproc) && \
        make -C Atmosphere -j$(nproc)
borntohonk commented 1 month ago

second note:

importing hactool into the container externally:

hactool: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by hactool)

so glibc is also required in the container. (libc6-dev on apt)

WinterMute commented 1 month ago

second note:

importing hactool into the container externally:

hactool: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by hactool)

official devkitPro hactool binary contains no such symbol.

~so glibc is also required in the container. (libc6-dev on apt)~

libc6-dev is a development library, not a runtime library. As noted above hactool has no symbols which require changes to the image.