8dd7ee47c5
Some downstream distributors like RHEL don't have patchelf(1). Relying on patchelf(1) during the build will make it difficult for such downstreams to distribute Toolbox. Fortunately, the path of the dynamic linker (ie., PT_INTERP) is hardcoded in the ABI specification of each architecture [1]. This means that Toolbox's build system can keep it's own architecture to dynamic linker mapping, and specify it during the build through the GNU ld linker's --dynamic-linker flag, as opposed to using a tool like patchelf(1) to change the path of the dynamic linker in the built binary to the one inside /run/host. Currently, the list of architectures covers the ones that Fedora builds for. [1] https://sourceware.org/glibc/wiki/ABIList https://github.com/containers/toolbox/pull/942
61 lines
1.5 KiB
YAML
61 lines
1.5 KiB
YAML
---
|
|
- hosts: all
|
|
tasks:
|
|
- name: Install requirements
|
|
become: yes
|
|
package:
|
|
use: dnf
|
|
name:
|
|
- ShellCheck
|
|
- bash-completion
|
|
- bats
|
|
- flatpak-session-helper
|
|
- golang
|
|
- golang-github-cpuguy83-md2man
|
|
- meson
|
|
- ninja-build
|
|
- podman
|
|
- skopeo
|
|
- systemd
|
|
- udisks2
|
|
|
|
- name: Setup submodules
|
|
shell: |
|
|
git submodule init
|
|
git submodule update
|
|
args:
|
|
chdir: '{{ zuul.project.src_dir }}'
|
|
|
|
- name: Check versions of crucial packages
|
|
command: rpm -qa *kernel* *glibc* golang podman conmon containernetworking-plugins containers-common container-selinux crun runc fuse-overlayfs flatpak-session-helper
|
|
|
|
- name: Show podman versions
|
|
command: podman version
|
|
|
|
- name: Show podman debug information
|
|
command: podman info --debug
|
|
|
|
- name: Set up build directory
|
|
command: meson builddir
|
|
args:
|
|
chdir: '{{ zuul.project.src_dir }}'
|
|
|
|
- name: Build Toolbox
|
|
command: ninja -C builddir
|
|
args:
|
|
chdir: '{{ zuul.project.src_dir }}'
|
|
creates: builddir/src/toolbox
|
|
|
|
- name: Install Toolbox
|
|
become: yes
|
|
command: ninja -C builddir install
|
|
args:
|
|
chdir: '{{ zuul.project.src_dir }}'
|
|
creates: /usr/local/bin/toolbox
|
|
|
|
- name: Setup environment
|
|
become: yes
|
|
command:
|
|
cmd: systemd-tmpfiles --create
|
|
creates: /run/media
|
|
creates: /run/host
|