attempt to specify configure install prefix #95
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: linux | |
on: | |
push: | |
branches: [ "main" ] | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
build: | |
strategy: | |
matrix: | |
include: | |
- os: ubuntu-latest | |
name: linux | |
flatpak_id: com.smallville7123.Hello | |
runs-on: ${{ matrix.os }} | |
name: ${{ matrix.name }} | |
steps: | |
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
- uses: actions/checkout@v3 | |
- name: uncompress docker image | |
run: | | |
xz -d ./ubuntu.tar.xz | |
- name: load docker image | |
run: | | |
sudo docker image load -i ./ubuntu.tar | |
- name: create docker container | |
run: | | |
sudo docker container create --user ubuntu --workdir /home/ubuntu --init --tty --tmpfs /tmp --ulimit nofile=262144:262144 --name git_local_ubuntu git_local_ubuntu:23.10 | |
- name: start docker container | |
run: | | |
sudo docker container start git_local_ubuntu | |
- name: allow ubuntu user to sudo | |
run: | | |
sudo docker container exec --user root git_local_ubuntu bash -c "echo 'ubuntu ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/ubuntu" | |
- name: update packages | |
run: | | |
sudo docker container exec git_local_ubuntu bash -c "sudo apt update" | |
- name: install apt-utils | |
run: | | |
sudo docker container exec git_local_ubuntu bash -c "sudo apt install -y apt-utils" | |
- name: install perl-readline | |
run: | | |
sudo docker container exec git_local_ubuntu bash -c "sudo apt install -y libterm-readline-gnu-perl" | |
- name: install systemd | |
run: | | |
sudo docker container exec git_local_ubuntu bash -c "sudo apt install -y systemd systemd-sysv systemd-dev" | |
- name: boot systemd - commit image | |
run: | | |
sudo docker container commit git_local_ubuntu git_local_ubuntu:23.10 | |
- name: boot systemd - stop container | |
run: | | |
sudo docker container stop git_local_ubuntu | |
- name: boot systemd - remove container | |
run: | | |
sudo docker container rm git_local_ubuntu | |
- name: boot systemd - host remount cgroup | |
run: | | |
sudo mount -o remount,rw,nosuid,nodev,noexec,relatime /sys/fs/cgroup | |
- name: boot systemd - create systemd container | |
run: | | |
sudo docker container create --user root --workdir /home/root --tmpfs /tmp --tty --cap-add SYS_ADMIN --cap-add NET_ADMIN --cgroup-parent docker.slice --security-opt apparmor:unconfined --security-opt seccomp=unconfined --ulimit nofile=262144:262144 -v /sys/fs/cgroup:/sys/fs/cgroup:rw --cgroupns host --name git_local_ubuntu git_local_ubuntu:23.10 /sbin/init | |
- name: boot systemd - start systemd container | |
run: | | |
sudo docker container start git_local_ubuntu | |
sudo docker container exec git_local_ubuntu bash -c "sleep 5 ; systemctl --wait is-system-running || sysctl --failed" | |
- name: boot systemd - verify | |
run: | | |
sudo docker container exec git_local_ubuntu bash -c "systemctl status" | |
- name: boot systemd - create user session | |
run: | | |
sudo docker container exec git_local_ubuntu bash -c "mkdir -p /run/user/\$(id -u ubuntu)" | |
sudo docker container exec git_local_ubuntu bash -c "chown ubuntu:ubuntu /run/user/\$(id -u ubuntu)" | |
sudo docker container exec git_local_ubuntu bash -c "systemctl start user@\$(id -u ubuntu)" | |
- name: SYSTEMD - install polkitd | |
run: | | |
sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/\$(id -u ubuntu)/bus systemd-run --user --scope --collect /bin/bash -c \"sudo apt install -y polkitd pkexec polkitd-pkla\"" | |
- name: reboot systemd - commit image | |
run: | | |
sudo docker container commit git_local_ubuntu git_local_ubuntu:23.10 | |
- name: reboot systemd - stop container | |
run: | | |
sudo docker container stop git_local_ubuntu | |
- name: reboot systemd - remove container | |
run: | | |
sudo docker container rm git_local_ubuntu | |
- name: reboot systemd - create systemd container | |
run: | | |
sudo docker container create --user root --workdir /home/root --tmpfs /tmp --tty --cap-add SYS_ADMIN --cap-add NET_ADMIN --cgroup-parent docker.slice --security-opt apparmor:unconfined --security-opt seccomp=unconfined --ulimit nofile=262144:262144 -v /sys/fs/cgroup:/sys/fs/cgroup:rw --cgroupns host --name git_local_ubuntu git_local_ubuntu:23.10 /sbin/init | |
- name: reboot systemd - start systemd container | |
run: | | |
sudo docker container start git_local_ubuntu | |
sudo docker container exec git_local_ubuntu bash -c "sleep 5 ; systemctl --wait is-system-running || sysctl --failed" | |
- name: reboot systemd - verify | |
run: | | |
sudo docker container exec git_local_ubuntu bash -c "systemctl status" | |
- name: reboot systemd - create user session | |
run: | | |
sudo docker container exec git_local_ubuntu bash -c "mkdir -p /run/user/\$(id -u ubuntu)" | |
sudo docker container exec git_local_ubuntu bash -c "chown ubuntu:ubuntu /run/user/\$(id -u ubuntu)" | |
sudo docker container exec git_local_ubuntu bash -c "systemctl start user@\$(id -u ubuntu)" | |
- name: generate program | |
run: | | |
sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "printf \"#include <stdio.h>\nint main() { printf(\\\"Hello World!\\\\\n\\\"); return 0; }\n\" > program.c" | |
- name: cat program | |
run: | | |
sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "cat program.c" | |
- name: SYSTEMD - install clang-17 | |
run: | | |
sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/\$(id -u ubuntu)/bus systemd-run --user --scope --collect /bin/bash -c \"sudo apt install -y clang-17 clang-format-17 lldb-17 lld-17 clang-tidy-17 clang-tools-17 flang-17 llvm-17-linker-tools llvm-17-tools llvm-17-runtime llvm-17-tools mlir-17-tools libmlir-17\"" | |
- name: SYSTEMD - make clang-17 default | |
run: | | |
sudo docker cp ./update_alternatives_clang.sh git_local_ubuntu:/home/ubuntu/update_alternatives_clang.sh | |
sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "sudo chmod +x update_alternatives_clang.sh" | |
sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "sudo chown ubuntu:ubuntu update_alternatives_clang.sh" | |
sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/\$(id -u ubuntu)/bus systemd-run --user --scope --collect /bin/bash -c \"sudo ./update_alternatives_clang.sh 17\"" | |
- name: SYSTEMD - install cmake | |
run: | | |
sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/\$(id -u ubuntu)/bus systemd-run --user --scope --collect /bin/bash -c \"sudo apt install -y cmake\"" | |
- name: SYSTEMD - install automake | |
run: | | |
sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/\$(id -u ubuntu)/bus systemd-run --user --scope --collect /bin/bash -c \"sudo apt install -y automake\"" | |
- name: copy GITHUB_WORKSPACE directory to docker | |
run: | | |
echo "copying $GITHUB_WORKSPACE to docker" | |
sudo docker cp $GITHUB_WORKSPACE git_local_ubuntu:/home/ubuntu/git_repo | |
sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "sudo chown -R ubuntu:ubuntu git_repo" | |
- name: SYSTEMD - cmake build | |
run: | | |
sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/\$(id -u ubuntu)/bus systemd-run --user --scope --collect /bin/bash -c \"cd git_repo ; make CC=clang CXX=clang++\"" | |
# - name: compile program | |
# run: | | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "clang program.c -O3 -g0 -o program-linux" | |
# - name: lld program-linux | |
# run: | | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "ldd program-linux" | |
# - name: execute program | |
# run: | | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "./program-linux" | |
# - name: copy program | |
# run: | | |
# sudo docker cp git_local_ubuntu:/home/ubuntu/program-linux ./program-linux | |
# - name: SYSTEMD - install flatpak | |
# run: | | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/\$(id -u ubuntu)/bus systemd-run --user --scope --collect /bin/bash -c \"sudo apt install -y flatpak flatpak-builder\"" | |
# - name: reboot systemd - commit image | |
# run: | | |
# sudo docker container commit git_local_ubuntu git_local_ubuntu:23.10 | |
# - name: reboot systemd - stop container | |
# run: | | |
# sudo docker container stop git_local_ubuntu | |
# - name: reboot systemd - remove container | |
# run: | | |
# sudo docker container rm git_local_ubuntu | |
# # flatpak requires --privileged and we dont know how to get around it | |
# - name: reboot systemd - create systemd container | |
# run: | | |
# sudo docker container create --user root --workdir /home/root --tmpfs /tmp --tty --cap-add SYS_ADMIN --cap-add NET_ADMIN --privileged --cgroup-parent docker.slice --security-opt apparmor:unconfined --security-opt seccomp=unconfined --ulimit nofile=262144:262144 -v /sys/fs/cgroup:/sys/fs/cgroup:rw --cgroupns host --name git_local_ubuntu git_local_ubuntu:23.10 /sbin/init | |
# - name: reboot systemd - start systemd container | |
# run: | | |
# sudo docker container start git_local_ubuntu | |
# sudo docker container exec git_local_ubuntu bash -c "sleep 5 ; systemctl --wait is-system-running || sysctl --failed" | |
# - name: reboot systemd - verify | |
# run: | | |
# sudo docker container exec git_local_ubuntu bash -c "systemctl status" | |
# - name: reboot systemd - create user session | |
# run: | | |
# sudo docker container exec git_local_ubuntu bash -c "mkdir -p /run/user/\$(id -u ubuntu)" | |
# sudo docker container exec git_local_ubuntu bash -c "chown ubuntu:ubuntu /run/user/\$(id -u ubuntu)" | |
# sudo docker container exec git_local_ubuntu bash -c "systemctl start user@\$(id -u ubuntu)" | |
# - name: SYSTEMD - add flatpak repository | |
# run: | | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/\$(id -u ubuntu)/bus systemd-run --user --scope --collect /bin/bash -c \"sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo\"" | |
# - name: SYSTEMD - install flatpak sdk | |
# run: | | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/\$(id -u ubuntu)/bus systemd-run --user --scope --collect /bin/bash -c \"sudo flatpak install -y flathub org.freedesktop.Platform//23.08 org.freedesktop.Sdk//23.08\"" | |
# - name: write flatpak manifest | |
# run: | | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "echo \"app-id: ${{ matrix.flatpak_id }}\" > ${{ matrix.flatpak_id }}.yml" | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "echo \"runtime: org.freedesktop.Platform\" >> ${{ matrix.flatpak_id }}.yml" | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "echo \"runtime-version: '23.08'\" >> ${{ matrix.flatpak_id }}.yml" | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "echo \"sdk: org.freedesktop.Sdk\" >> ${{ matrix.flatpak_id }}.yml" | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "echo \"command: program-linux\" >> ${{ matrix.flatpak_id }}.yml" | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "echo \"modules:\" >> ${{ matrix.flatpak_id }}.yml" | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "echo \" - name: hello\" >> ${{ matrix.flatpak_id }}.yml" | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "echo \" buildsystem: simple\" >> ${{ matrix.flatpak_id }}.yml" | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "echo \" build-commands:\" >> ${{ matrix.flatpak_id }}.yml" | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "echo \" - install -D program-linux /app/bin/program-linux\" >> ${{ matrix.flatpak_id }}.yml" | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "echo \" sources:\" >> ${{ matrix.flatpak_id }}.yml" | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "echo \" - type: file\" >> ${{ matrix.flatpak_id }}.yml" | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "echo \" path: \$HOME/program-linux\" >> ${{ matrix.flatpak_id }}.yml" | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "echo \" dest-filename: program-linux\" >> ${{ matrix.flatpak_id }}.yml" | |
# - name: SYSTEMD - build flatpak package | |
# run: | | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/\$(id -u ubuntu)/bus systemd-run --user --scope --collect /bin/bash -c \"flatpak-builder -y --user --install build-dir ${{ matrix.flatpak_id }}.yml\"" | |
# - name: SYSTEMD - execute flatpak package - run | |
# run: | | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/\$(id -u ubuntu)/bus systemd-run --user --scope --collect /bin/bash -c \"flatpak run ${{ matrix.flatpak_id }}\"" | |
# - name: copy flatpak package - export to repo | |
# run: | | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "flatpak build-export smallville7123_repo build-dir" | |
# - name: copy flatpak package - bundle from repo | |
# run: | | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "flatpak build-bundle smallville7123_repo ${{ matrix.flatpak_id }}.flatpak ${{ matrix.flatpak_id }}" | |
# - name: copy flatpak package - mkdir | |
# run: | | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "mkdir flatpak-package" | |
# - name: copy flatpak package - mv | |
# run: | | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "mv -v ${{ matrix.flatpak_id }}.flatpak flatpak-package/${{ matrix.flatpak_id }}.flatpak" | |
# - name: copy flatpak package - make install script | |
# run: | | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "echo \"sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo\" > flatpak-package/install.sh" | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "echo \"sudo flatpak install -y flathub org.freedesktop.Platform//23.08 org.freedesktop.Sdk//23.08\" >> flatpak-package/install.sh" | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "echo \"flatpak install -y --user ${{ matrix.flatpak_id }}.flatpak\" >> flatpak-package/install.sh" | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "echo \"flatpak run --user ${{ matrix.flatpak_id }}\" >> flatpak-package/run.sh" | |
# - name: copy flatpak package - chmod | |
# run: | | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "chmod +x flatpak-package/install.sh" | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "chmod +x flatpak-package/run.sh" | |
# - name: copy flatpak package - tar | |
# run: | | |
# sudo docker container exec --user ubuntu --workdir /home/ubuntu git_local_ubuntu bash -c "tar -cvf flatpak-package.tar flatpak-package" | |
# - name: copy flatpak package - copy | |
# run: | | |
# sudo docker cp git_local_ubuntu:/home/ubuntu/flatpak-package.tar ./flatpak-package.tar | |
# - uses: actions/upload-artifact@v3 | |
# with: | |
# name: flatpak-package.tar | |
# path: ./flatpak-package.tar | |
# retention-days: 1 |