Skip to content

attempt to specify configure install prefix #95

attempt to specify configure install prefix

attempt to specify configure install prefix #95

Workflow file for this run

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