Issue Building Jami for aarch64 Devices (Asahi Linux)
How to report a bug
One bug = one bug report
If you have multiple issues, please file separate bug reports. It will be much easier to track bugs that way.
Avoid duplicates
Search for similar problem - update existing issue instead of creating new one.
A somewhat relevant issue is #877 (closed), which addressed a packaging issue for aarch64 Manjaro.
Bug report form
Describe your environment
I am using an M1 Max Mac Studio running Asahi Linux.
Please specify the following:
- OS:
- Jami version: main (master) branch of jami-client-qt, commit 7a84518f
- What build you are using: client-qt [jami.net | A store | your own (please specify commit for daemon/lrc/client-qt)...]
Steps to reproduce
Note: Better the scenario is, better we will be able to reproduce and debug.
- Can you reproduce the bug: [at will | occasionally | not at all]
- Steps:
- Start with M1 Max Mac Studio
- Install Asahi Linux Fedora Remix (https://www.fedora-asahi-remix.org/)
- Clone (git clone) the jami-client-qt repository over https
- Follow build guide for jami-client-qt
- Install dependencies
- `./build.py --init --distribution=fedora`
- `./build.py --dependencies --distribution=fedora`
- `./build.py --install --distribution=fedora`
- Install dependencies
- Actual result:
- good
- good
- good
- errors with following build guide steps
- errors with install/build script
- `./build.py --init --distribution=fedora` has issues finding certain packages, see the attached log for more details
- `./build.py --dependencies --distribution=fedora` fails to find openssl-static
- `./build.py --install --distribution=fedora` guesses the build & host system are aarch64-redhat-linux and fails on calling subprocess `extras/scripts/install.sh -p 10`
- errors with install/build script
- Expected result:
The expected result is to be able to build the program from source and run it natively. Since my platform is unsupported it makes sense that the build failed, but I think some changes to the build script may make it possible to support Asahi Linux Fedora Remix. Please let me know if this should be a bug report here or if this sort of discussion is better suited for another discussion area.
Additional information
Screenshots/videos/logs/etc
For retrieving logs, cf this page.
This is my first time trying to build Jami, so I am not very familiar with the process but I tried to follow the build docs. Unfortunately I do not have an x86 linux machine to compare to building on a supported machine.
Logs
note: this log has been sanitized... file paths have been renamed
➜ jami-client-qt git:(master) ./build.py --init --distribution=fedora_38
WARNING: Distribution 'fedora_38' is not supported. Choose one of: osx, win32, guix, debian, linuxmint, raspbian, trisquel, ubuntu, fedora, rhel, arch, parabola, opensuse-leap, org.gnome.Platform. Alternatively, you may force execution of this script by providing the '--distribution=no-check' argument or by exporting the JAMI_BUILD_NO_CHECK environment variable.
➜ jami-client-qt git:(master) ./build.py --init --distribution=fedora
Installing commit-msg hooks...
Copying: ./extras/scripts/commit-msg to .git/hooks/commit-msg
Copying: ./extras/scripts/commit-msg to .git/modules/daemon/hooks/commit-msg
Installing pre-commit hooks...
clang-format not found. can't format source files
qmlformat not found, can't format QML files
No formatters found, skipping hook install
clang-format not found. can't format source files
No formatters found, skipping hook install
➜ jami-client-qt git:(master) ./build.py --dependencies --distribution=fedora
Error: This command has to be run with superuser privileges (under the root user on most systems).
Error executing script! Exit code: 256 (['dnf update', 'dnf install %(packages)s'])
➜ jami-client-qt git:(master) sudo ./build.py --dependencies --distribution=fedora
Last metadata expiration check: 0:55:50 ago on Tue Sep 19 09:22:39 2023.
allow_vendor_change is disabled. This option is currently not supported for downgrade and distro-sync commands
Dependencies resolved.
Nothing to do.
Complete!
Last metadata expiration check: 0:55:51 ago on Tue Sep 19 09:22:39 2023.
allow_vendor_change is disabled. This option is currently not supported for downgrade and distro-sync commands
Package cmake-3.27.4-6.fc38.aarch64 is already installed.
Package make-1:4.4.1-1.fc38.aarch64 is already installed.
Package pulseaudio-libs-devel-16.1-4.fc38.aarch64 is already installed.
Package graphviz-7.1.0-3.fc38.aarch64 is already installed.
Package gcc-c++-13.2.1-1.fc38.aarch64 is already installed.
Package which-2.21-39.fc38.aarch64 is already installed.
Package alsa-lib-devel-1.2.10-2.fc38.aarch64 is already installed.
No match for argument: openssl-static
Package bzip2-1.0.8-13.fc38.aarch64 is already installed.
Error: Unable to find a match: openssl-static
Error executing script! Exit code: 256 (['dnf update', 'dnf install %(packages)s'])
➜ jami-client-qt git:(master) ./build.py --install --distribution=fedora
info: consider setting the TARBALLS environment variable to a stable writable location to avoid loosing cached tarballs
info: Building/installing using the command: extras/scripts/install.sh -p 10
+ QT_MIN_VER=6.4
+ debug=
+ global=false
+ static=
+ qtpath=
+ proc=1
+ priv_install=true
+ enable_libwrap=true
+ enable_webengine=true
+ arch=
+ getopts gsc:dQ:P:p:uWwa: OPT
+ case "$OPT" in
+ proc=10
+ getopts gsc:dQ:P:p:uWwa: OPT
++ pwd
+ TOP=/run/media/username/drive/jami_folder/official_repos/jami-client-qt
+ INSTALL_DIR=/run/media/username/drive/jami_folder/official_repos/jami-client-qt/install
+ '[' false = true ']'
+ BUILD_DIR=build
+ DAEMON=/run/media/username/drive/jami_folder/official_repos/jami-client-qt/daemon
+ [[ linux-gnu == \d\a\r\w\i\n* ]]
+ cd /run/media/username/drive/jami_folder/official_repos/jami-client-qt/daemon
+ mkdir -p contrib/native
+ cd contrib/native
+ ../bootstrap
Guessing build system... aarch64-redhat-linux
Guessing host system... aarch64-redhat-linux
Creating configuration file... config.mak
Bootstrap completed.
Run "make" to start compilation.
Other targets:
* make install same as "make"
* make prebuilt fetch and install prebuilt binaries
* make list list packages
* make list-tarballs list required source tarballs
* make fetch fetch required source tarballs
* make fetch-all fetch all source tarballs
* make distclean clean everything and undo bootstrap
* make mostlyclean clean everything except source tarballs
* make clean clean everything
* make package prepare prebuilt packages
+ make -j10
Please specify at least one package name on the command line.
Please specify at least one package name on the command line.
mkdir -p dhtnet-406c0f46ca9d9a7785436a3981236aa0578c5b13
rm -f -R dhtnet && tar xzf /run/media/username/drive/jami_folder/official_repos/jami-client-qt/daemon/contrib/tarballs/dhtnet-406c0f46ca9d9a7785436a3981236aa0578c5b13.tar.gz -C dhtnet-406c0f46ca9d9a7785436a3981236aa0578c5b13
(cd dhtnet-406c0f46ca9d9a7785436a3981236aa0578c5b13 && patch -flp1) < /run/media/username/drive/jami_folder/official_repos/jami-client-qt/daemon/contrib/src/dhtnet/libjami-testable.patch
/bin/sh: line 1: patch: command not found
make: *** [/run/media/username/drive/jami_folder/official_repos/jami-client-qt/daemon/contrib/src/dhtnet/rules.mak:34: dhtnet] Error 127
Traceback (most recent call last):
File "/run/media/username/drive/jami_folder/official_repos/jami-client-qt/./build.py", line 724, in <module>
main()
File "/run/media/username/drive/jami_folder/official_repos/jami-client-qt/./build.py", line 699, in main
run_install(parsed_args)
File "/run/media/username/drive/jami_folder/official_repos/jami-client-qt/./build.py", line 440, in run_install
return subprocess.run(command, env=environ, check=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib64/python3.11/subprocess.py", line 571, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['extras/scripts/install.sh', '-p', '10']' returned non-zero exit status 2.