wip: ci Assets #75
Workflow file for this run
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: 'build' | |
on: [push, pull_request] | |
jobs: | |
Vars: | |
runs-on: ubuntu-latest | |
outputs: | |
VERSION: ${{ steps.Vars.outputs.VERSION }} | |
PROJECT_NAME: ${{ steps.Vars.outputs.PROJECT_NAME }} | |
REPOSITORY_URL: ${{ steps.Vars.outputs.REPOSITORY_URL }} | |
steps: | |
- id: Vars | |
run: | | |
echo "ref_type: ${{ github.ref_type }}" | |
echo "ref: ${{ github.ref }}" | |
echo "sha: ${{ github.sha }}" | |
echo "" | |
if [[ "${{ github.ref_type }}" == "tag" ]]; then | |
VERSION=${{ github.ref }} | |
VERSION=${VERSION#"refs/tags/"} | |
VERSION=${VERSION//"-"/"_"} # replace dashes with underscores in the version | |
else | |
VERSION=${{ github.sha }} | |
VERSION=g${VERSION:0:8} | |
fi | |
echo "VERSION=$VERSION" >> "$GITHUB_OUTPUT" | |
echo $VERSION | |
OWNER=${{ github.repository_owner }} | |
FULLNAME=${{ github.repository }} | |
PROJECT_NAME=${FULLNAME#"$OWNER/"} | |
echo "PROJECT_NAME=$PROJECT_NAME" >> "$GITHUB_OUTPUT" | |
echo $PROJECT_NAME | |
REPOSITORY_URL=${{ github.server_url }}/${{ github.repository }} | |
echo "REPOSITORY_URL=$REPOSITORY_URL" >> "$GITHUB_OUTPUT" | |
echo $REPOSITORY_URL | |
Build: | |
needs: [ Vars ] | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [x86_64-linux-gnu, aarch64-linux-gnu] | |
target: [xtensa-softmmu, riscv32-softmmu] | |
include: | |
#- platform: macos-x86_64 | |
# runs_on: macos-12 | |
# extra_configure_args: "--disable-cocoa --disable-coreaudio --python=python3.11" | |
# shell: bash -e {0} | |
# - platform: macos-arm64 | |
# runs_on: macos-latest-xlarge | |
# extra_configure_args: "--disable-cocoa --disable-coreaudio" | |
# shell: bash -e {0} | |
- platform: x86_64-linux-gnu | |
runs_on: ubuntu-20.04 | |
run_prerequisites: "sudo ./.github/workflows/scripts/prerequisites-linux-amd64.sh" | |
run_configure: "./.github/workflows/scripts/configure-linux-amd64.sh" | |
# Building with -Werror only on Linux as that breaks some features detection | |
# in meson on macOS. | |
#extra_configure_args: "--extra-cflags=-Werror --disable-gtk" | |
shell: bash -e {0} | |
- platform: aarch64-linux-gnu | |
runs_on: ubuntu-20.04 | |
# Used the minimal docker-hub's image instead of the heavy GitHub's one for correct croossbuild prerequisites | |
container: ubuntu:20.04 | |
run_prerequisites: "./.github/workflows/scripts/prerequisites-cross-linux-arm64.sh" | |
run_configure: "./.github/workflows/scripts/configure-cross-linux-arm64.sh" | |
#extra_configure_args: "--disable-gtk --cross-prefix=aarch64-linux-gnu-" | |
shell: bash -e {0} | |
# - platform: win-x86_64 | |
# runs_on: windows-2022 | |
# extra_configure_args: "" | |
# shell: msys2 {0} | |
runs-on: ${{ matrix.runs_on }} | |
container: ${{ matrix.container }} | |
defaults: | |
run: | |
shell: ${{ matrix.shell }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install prerequisites (${{ matrix.target }} @ ${{ matrix.platform }}) | |
run: | | |
echo "DBG0" | |
echo ${{ matrix.container }} | |
echo ${{ matrix.runs_on }} | |
${{ matrix.run_prerequisites }} | |
- name: Configure (${{ matrix.target }} @ ${{ matrix.platform }}) | |
env: | |
VERSION: ${{ needs.Vars.outputs.VERSION }} | |
TARGET: ${{ matrix.target }} | |
run: | | |
echo "DBG0" | |
echo ${{ matrix.container }} | |
echo ${{ matrix.runs_on }} | |
${{ matrix.run_configure }} | |
- name: Build (${{ matrix.target }} @ ${{ matrix.platform }}) | |
run: | | |
ninja -C build $PWD/install | |
- name: Package (${{ matrix.target }} @ ${{ matrix.platform }}) | |
env: | |
VERSION: ${{ needs.Vars.outputs.VERSION }} | |
PROJECT_NAME: ${{ needs.Vars.outputs.PROJECT_NAME }} | |
PLATFORM: ${{ matrix.platform }} | |
TARGET: ${{ matrix.target }} | |
run: | | |
find $PWD/install/qemu/share/qemu/ -maxdepth 1 -mindepth 1 -not -name 'esp*.bin' -exec rm -rf {} \; | |
export DIST_DIR=${PWD}/dist | |
mkdir -p ${DIST_DIR} | |
cd $PWD/install | |
ls -l qemu/ || : | |
ls -l qemu/* || : | |
ARCHIVE_NAME=${PROJECT_NAME}-${TARGET}-${VERSION}-${PLATFORM}.tar.bz2 | |
tar -cjvf ${DIST_DIR}/${ARCHIVE_NAME} qemu > ${DIST_DIR}/tar-list-${TARGET}-${PLATFORM}.txt 2>&1 | |
echo "${ARCHIVE_NAME}" > ${DIST_DIR}/file_${PLATFORM}_${TARGET} | |
- name: Artifacts (${{ matrix.target }} @ ${{ matrix.platform }}) | |
uses: actions/upload-artifact@v3 | |
with: | |
name: dist-qemu | |
path: | | |
dist | |
Upload: | |
if: startsWith(github.ref, 'refs/tags/') | |
needs: [ Vars, Build ] | |
runs-on: ubuntu-latest | |
steps : | |
- name: Create a source archive | |
id: create-source | |
env: | |
VERSION: ${{ needs.Vars.outputs.VERSION }} | |
PROJECT_NAME: ${{ needs.Vars.outputs.PROJECT_NAME }} | |
REPOSITORY_URL: ${{ needs.Vars.outputs.REPOSITORY_URL }} | |
run: | | |
export RELEASE_CHECKSUM_FILE="${PROJECT_NAME}-${VERSION}-checksum.sha256" | |
echo "RELEASE_CHECKSUM_FILE=$RELEASE_CHECKSUM_FILE" >> "$GITHUB_OUTPUT" | |
RELEASE_SRC_NAME="${PROJECT_NAME}-${VERSION}-src" | |
export RELEASE_SRC_FILE="${PROJECT_NAME}-${VERSION}-src.tar.bz2" | |
echo "RELEASE_SRC_FILE=$RELEASE_SRC_FILE" >> "$GITHUB_OUTPUT" | |
rm -rf -- "${RELEASE_SRC_NAME}" "${RELEASE_SRC_FILE}" | |
git clone --quiet --depth 1 --recurse-submodules --shallow-submodules "${REPOSITORY_URL}" "${RELEASE_SRC_NAME}" | |
find "${RELEASE_SRC_NAME}" -name ".git" -type d -exec rm -rf -- "{}" + | |
find "${RELEASE_SRC_NAME}" -name .git\* -exec rm -rf -- {} + | |
tar -cjvf "${RELEASE_SRC_FILE}" "${RELEASE_SRC_NAME}" > src-tar-list.txt 2>&1 | |
rm -rf -- "${RELEASE_SRC_NAME}" | |
ls -l | |
- name: Source list artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: src-tar-list | |
path: | | |
src-tar-list.txt | |
- uses: actions/download-artifact@v3 | |
with: | |
name: dist-qemu | |
- name: Create a checksum file | |
env: | |
RELEASE_CHECKSUM_FILE: ${{ steps.create-source.outputs.RELEASE_CHECKSUM_FILE }} | |
RELEASE_SRC_FILE: ${{ steps.create-source.outputs.RELEASE_SRC_FILE }} | |
run: | | |
echo DBG0 | |
echo $RELEASE_CHECKSUM_FILE | |
echo $RELEASE_SRC_FILE | |
DIST_FILE_LIST=$(find . -name file_\* -exec cat {} \+) | |
DIST_FILE_LIST="${DIST_FILE_LIST} ${RELEASE_SRC_FILE}" | |
echo "DBG1" | |
echo "${DIST_FILE_LIST}" | |
ls -l . | |
for n in $DIST_FILE_LIST; do | |
echo "trace n $n" | |
ls -l "$n" | |
stat -c%s "${n}" | |
sz=$(stat -c%s "${n}") | |
printf "# %s: %s bytes\n" "${n}" "${sz}" >> "${RELEASE_CHECKSUM_FILE}" | |
sha256sum -b "${n}" >> "${RELEASE_CHECKSUM_FILE}" | |
done | |
DIST_FILE_LIST="${DIST_FILE_LIST} ${RELEASE_CHECKSUM_FILE}" | |
# remove new lines from file list | |
DIST_FILE_LIST="${DIST_FILE_LIST//$'\n'/ }" | |
cat "${RELEASE_CHECKSUM_FILE}" | |
echo "DBG2" | |
rm -rf -- tmp && mkdir -p tmp && mv -v ${DIST_FILE_LIST} tmp/ | |
- name: Release | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: tmp/* |