diff --git a/.github/workflows/wkdev-sdk.yml b/.github/workflows/wkdev-sdk.yml index 94ecdfb..c5d1979 100644 --- a/.github/workflows/wkdev-sdk.yml +++ b/.github/workflows/wkdev-sdk.yml @@ -19,6 +19,7 @@ jobs: echo "WKDEV_SDK_TAG=latest" >> "${GITHUB_ENV}" fi echo "WKDEV_SDK_CONTAINER_REGISTRY_USER_NAME=$(echo ${GITHUB_REPOSITORY_OWNER} | tr '[:upper:]' '[:lower:]')" >> "${GITHUB_ENV}" + echo "REPO=ghcr.io/$(echo ${GITHUB_REPOSITORY_OWNER} | tr '[:upper:]' '[:lower:]')/wkdev-sdk" >> "${GITHUB_ENV}" - name: Install podman run: sudo apt-get update && sudo apt-get -y install podman fuse-overlayfs @@ -26,6 +27,12 @@ jobs: - name: Checkout repo uses: actions/checkout@v4 + - name: Clean unrelated images + run: | + podman rmi --ignore --force ${REPO}:latest + podman manifest rm ${REPO}:latest || true + podman rmi --ignore --force ${REPO}:latest_amd64 + - name: Build image run: | source ./register-sdk-on-host.sh @@ -48,8 +55,7 @@ jobs: wkdev-enter -n ${CONTAINER} --exec -- git clone --depth=1 https://github.com/WebKit/WebKit.git wkdev-enter -n ${CONTAINER} --exec -- ./WebKit/Tools/Scripts/build-webkit --wpe --release --generate-project-only wkdev-enter -n ${CONTAINER} --exec -- ./WebKit/Tools/Scripts/build-webkit --gtk --release --generate-project-only - podman stop ${CONTAINER} || true - podman rm ${CONTAINER} || true + podman rm --force ${CONTAINER} rm -rf ${HOME}/${CONTAINER}-home build_arm64: @@ -61,6 +67,7 @@ jobs: echo "WKDEV_SDK_TAG=latest" >> "${GITHUB_ENV}" fi echo "WKDEV_SDK_CONTAINER_REGISTRY_USER_NAME=$(echo ${GITHUB_REPOSITORY_OWNER} | tr '[:upper:]' '[:lower:]')" >> "${GITHUB_ENV}" + echo "REPO=ghcr.io/$(echo ${GITHUB_REPOSITORY_OWNER} | tr '[:upper:]' '[:lower:]')/wkdev-sdk" >> "${GITHUB_ENV}" - name: Install podman run: sudo apt-get update && sudo apt-get -y install podman fuse-overlayfs @@ -68,6 +75,12 @@ jobs: - name: Checkout repo uses: actions/checkout@v4 + - name: Clean unrelated images + run: | + podman rmi --ignore --force ${REPO}:latest + podman manifest rm ${REPO}:latest || true + podman rmi --ignore --force ${REPO}:latest_amd64 + - name: Build image run: | source ./register-sdk-on-host.sh @@ -90,13 +103,60 @@ jobs: wkdev-enter -n ${CONTAINER} --exec -- git clone --depth=1 https://github.com/WebKit/WebKit.git wkdev-enter -n ${CONTAINER} --exec -- ./WebKit/Tools/Scripts/build-webkit --wpe --release --generate-project-only wkdev-enter -n ${CONTAINER} --exec -- ./WebKit/Tools/Scripts/build-webkit --gtk --release --generate-project-only - podman stop ${CONTAINER} || true - podman rm ${CONTAINER} || true + podman rm --force ${CONTAINER} + rm -rf ${HOME}/${CONTAINER}-home + + build_armv7: + runs-on: arm-bothost-2 + steps: + - name: Set tag name + run: | + if [ "${GITHUB_BASE_REF}" = 'main' ]; then + echo "WKDEV_SDK_TAG=latest" >> "${GITHUB_ENV}" + fi + echo "WKDEV_SDK_CONTAINER_REGISTRY_USER_NAME=$(echo ${GITHUB_REPOSITORY_OWNER} | tr '[:upper:]' '[:lower:]')" >> "${GITHUB_ENV}" + echo "REPO=ghcr.io/$(echo ${GITHUB_REPOSITORY_OWNER} | tr '[:upper:]' '[:lower:]')/wkdev-sdk" >> "${GITHUB_ENV}" + + - name: Install podman + run: sudo apt-get update && sudo apt-get -y install podman fuse-overlayfs + + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Clean unrelated images + run: | + podman rmi --ignore --force ${REPO}:latest + podman manifest rm ${REPO}:latest || true + podman rmi --ignore --force ${REPO}:latest_amd64 + + - name: Build image + run: | + source ./register-sdk-on-host.sh + wkdev-sdk-bakery --mode=build --verbose --arch arm + podman image list + wkdev-sdk-bakery --mode=export --verbose --arch arm + + - name: Archive image + uses: actions/upload-artifact@v4 + with: + name: wkdev-sdk-arm.tar + path: wkdev-sdk-arm.tar + retention-days: 7 + + - name: Test image + run: | + CONTAINER="wkdev-$(date +%s)" + source ./register-sdk-on-host.sh + wkdev-create --create-home --home ${HOME}/${CONTAINER}-home --verbose --attach --no-pull --name ${CONTAINER} --arch arm --shell /bin/bash + wkdev-enter -n ${CONTAINER} --exec -- git clone --depth=1 https://github.com/WebKit/WebKit.git + wkdev-enter -n ${CONTAINER} --exec -- ./WebKit/Tools/Scripts/build-webkit --wpe --release --generate-project-only + wkdev-enter -n ${CONTAINER} --exec -- ./WebKit/Tools/Scripts/build-webkit --gtk --release --generate-project-only + podman rm --force ${CONTAINER} rm -rf ${HOME}/${CONTAINER}-home deploy: runs-on: [self-hosted, x64] - needs: [build_amd64, build_arm64] + needs: [build_amd64, build_armv7, build_arm64] if: github.ref_name == 'main' || startsWith(github.ref_name, 'tag/') steps: - name: Set tag name @@ -120,14 +180,19 @@ jobs: merge-multiple: true - run: ls -al + - name: Clean all previous images + run: | + podman rmi --ignore --force ${REPO}:latest + podman manifest rm ${REPO}:latest || true + podman rmi --ignore --force ${REPO}:latest_arm64 + podman rmi --ignore --force ${REPO}:latest_amd64 + podman rmi --ignore --force ${REPO}:latest_arm + - name: Deploy image run: | - podman rmi -f wkdev-sdk:latest || true - podman manifest rm wkdev-sdk:latest || true - podman rmi -f wkdev-sdk:latest_amd64 || true - podman rmi -f wkdev-sdk:latest_arm64 || true podman load < ./wkdev-sdk-amd64.tar podman load < ./wkdev-sdk-arm64.tar + podman load < ./wkdev-sdk-arm.tar podman image list echo "${{ secrets.GITHUB_TOKEN }}" | podman login ghcr.io --username=${GITHUB_REPOSITORY_OWNER} --password-stdin source ./register-sdk-on-host.sh diff --git a/images/wkdev_sdk/Containerfile b/images/wkdev_sdk/Containerfile index 0010921..27f06d3 100644 --- a/images/wkdev_sdk/Containerfile +++ b/images/wkdev_sdk/Containerfile @@ -62,7 +62,7 @@ COPY /required_system_packages/*.lst . RUN sed -i 's/^Types: deb$/Types: deb deb-src/' /etc/apt/sources.list.d/ubuntu.sources && \ ${APT_UPDATE} && \ for list in *.lst; do \ - ${APT_INSTALL} $(sed -e "s/.*#.*//; /^$/d" "${list}"); \ + ${APT_INSTALL} $(sed -e "s/.*#.*//; /^$/d" "${list}" | tr '\n' ' '); \ done; \ ${APT_BUILDDEP} gst-libav1.0 gst-plugins-bad1.0 gst-plugins-base1.0 \ gst-plugins-good1.0 gst-plugins-ugly1.0 && \ diff --git a/images/wkdev_sdk/required_system_packages/04-devtools.lst b/images/wkdev_sdk/required_system_packages/04-devtools.lst index dd668e4..d641d04 100644 --- a/images/wkdev_sdk/required_system_packages/04-devtools.lst +++ b/images/wkdev_sdk/required_system_packages/04-devtools.lst @@ -5,7 +5,7 @@ build-essential cmake ninja-build ccache # Debugging / profiling / tracing -valgrind rr perf-tools-unstable systemd-coredump +valgrind perf-tools-unstable systemd-coredump # Documentation asciidoc doxygen doxygen-latex doxygen-doxyparse graphviz python3-sphinx devhelp libglib2.0-doc libgtk-4-doc libsoup-3.0-doc diff --git a/images/wkdev_sdk/required_system_packages/06-devtools-opt.lst b/images/wkdev_sdk/required_system_packages/06-devtools-opt.lst new file mode 100644 index 0000000..8ce8bda --- /dev/null +++ b/images/wkdev_sdk/required_system_packages/06-devtools-opt.lst @@ -0,0 +1,3 @@ +# These are not available on all platforms + +rr diff --git a/scripts/host-only/wkdev-sdk-bakery b/scripts/host-only/wkdev-sdk-bakery index c68dc66..b26a355 100755 --- a/scripts/host-only/wkdev-sdk-bakery +++ b/scripts/host-only/wkdev-sdk-bakery @@ -57,14 +57,6 @@ build_image() { tag="$(get_tag_for_build)" - if argsparse_is_option_set "arch"; then - container_arch="${program_options["arch"]}" - echo "Overriding container architecture: ${container_arch}" - podman_argument+=("--arch=${container_arch}") - - tag="${tag}_${container_arch}" - fi - _log_ "" _log_ "-> Building container image '${container_image_name}' using tag '${tag}'..." _log_ "" @@ -73,6 +65,14 @@ build_image() { timer_start local podman_argument=("--jobs" "$(get_number_of_cores_for_build)") + + if argsparse_is_option_set "arch"; then + container_arch="${program_options["arch"]}" + echo "Overriding container architecture: ${container_arch}" + podman_argument+=("--arch=${container_arch}") + + tag="${tag}_${container_arch}" + fi podman_argument+=("--tag" "${tag}") for environment_variable in "${cumulated_values_env[@]}" diff --git a/utilities/application.sh b/utilities/application.sh index 09e7af0..930a58a 100644 --- a/utilities/application.sh +++ b/utilities/application.sh @@ -96,6 +96,7 @@ run_command_silent_unless_verbose() { shift if argsparse_is_option_set "verbose"; then + echo "${command}" "${@}" "${command}" "${@}" else "${command}" "${@}" &>/dev/null