mirror of
				https://github.com/hyperion-project/hyperion.ng.git
				synced 2025-03-01 10:33:28 +00:00 
			
		
		
		
	Merge work branch (#77)
- style workflow - include armv6 debian buster - correct RPATH for fedora - cleanup
This commit is contained in:
		@@ -1,40 +0,0 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
# detect CI
 | 
			
		||||
if [ "$HOME" != "" ]; then
 | 
			
		||||
	# GitHub Actions
 | 
			
		||||
	CI_NAME="$(uname -s | tr '[:upper:]' '[:lower:]')"
 | 
			
		||||
	CI_BUILD_DIR="$GITHUB_WORKSPACE"
 | 
			
		||||
else
 | 
			
		||||
	# for executing in non ci environment
 | 
			
		||||
	CI_NAME="$(uname -s | tr '[:upper:]' '[:lower:]')"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
function installAndUpgrade()
 | 
			
		||||
{
 | 
			
		||||
	arr=("$@")
 | 
			
		||||
	for i in "${arr[@]}";
 | 
			
		||||
	do
 | 
			
		||||
		list_output=`brew list --formula | grep $i`
 | 
			
		||||
		outdated_output=`brew outdated | grep $i`
 | 
			
		||||
 | 
			
		||||
		if [[ ! -z "$list_output" ]]; then
 | 
			
		||||
		    if [[ ! -z "$outdated_output" ]]; then
 | 
			
		||||
		    	echo "Outdated package: ${outdated_output}"
 | 
			
		||||
		    	brew unlink  ${outdated_output}
 | 
			
		||||
			brew upgrade $i
 | 
			
		||||
			brew link --overwrite $i
 | 
			
		||||
		    fi
 | 
			
		||||
		else
 | 
			
		||||
		    brew install $i
 | 
			
		||||
		fi
 | 
			
		||||
	done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# install osx deps for hyperion compile
 | 
			
		||||
if [[ $CI_NAME == 'osx' || $CI_NAME == 'darwin' ]]; then
 | 
			
		||||
	echo "Install dependencies"
 | 
			
		||||
	brew update
 | 
			
		||||
	dependencies=("qt5" "python" "libusb" "cmake" "doxygen")
 | 
			
		||||
	installAndUpgrade "${dependencies[@]}"
 | 
			
		||||
fi
 | 
			
		||||
							
								
								
									
										43
									
								
								.ci/ci_build.sh → .github/scripts/build.sh
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										43
									
								
								.ci/ci_build.sh → .github/scripts/build.sh
									
									
									
									
										vendored
									
									
								
							@@ -1,42 +1,29 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
# detect CI
 | 
			
		||||
if [ "$HOME" != "" ]; then
 | 
			
		||||
	# GitHub Actions
 | 
			
		||||
	echo "Github Actions detected"
 | 
			
		||||
	CI_NAME="$(uname -s | tr '[:upper:]' '[:lower:]')"
 | 
			
		||||
	CI_BUILD_DIR="$GITHUB_WORKSPACE"
 | 
			
		||||
else
 | 
			
		||||
	# for executing in non ci environment
 | 
			
		||||
	CI_NAME="$(uname -s | tr '[:upper:]' '[:lower:]')"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# set environment variables if not exists
 | 
			
		||||
[ -z "${BUILD_TYPE}" ] && BUILD_TYPE="Debug"
 | 
			
		||||
[ -z "${TARGET_ARCH}" ] && TARGET_ARCH="linux/amd64"
 | 
			
		||||
[ -z "${PLATFORM}" ] && PLATFORM="x11"
 | 
			
		||||
 | 
			
		||||
# Determine cmake build type; tag builds are Release, else Debug (-dev appends to platform)
 | 
			
		||||
if [[ $BUILD_SOURCEBRANCH == *"refs/tags"* || $GITHUB_REF == *"refs/tags"* ]]; then
 | 
			
		||||
if [[ $GITHUB_REF == *"refs/tags"* ]]; then
 | 
			
		||||
	BUILD_TYPE=Release
 | 
			
		||||
else
 | 
			
		||||
	PLATFORM=${PLATFORM}-dev
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
echo "Platform: ${PLATFORM}, build type: ${BUILD_TYPE}, CI_NAME: $CI_NAME, docker image: ${DOCKER_IMAGE}, docker type: ${DOCKER_TAG}"
 | 
			
		||||
echo "Compile Hyperion on '${RUNNER_OS}' with build type '${BUILD_TYPE}' and platform '${PLATFORM}'"
 | 
			
		||||
 | 
			
		||||
# Build the package on osx or linux
 | 
			
		||||
if [[ "$CI_NAME" == 'osx' || "$CI_NAME" == 'darwin' ]]; then
 | 
			
		||||
	echo "Compile Hyperion on OSX or Darwin"
 | 
			
		||||
	# compile prepare
 | 
			
		||||
# Build the package on MacOS, Windows or Linux
 | 
			
		||||
if [[ "$RUNNER_OS" == 'macOS' ]]; then
 | 
			
		||||
	mkdir build || exit 1
 | 
			
		||||
	cd build
 | 
			
		||||
	cmake -DPLATFORM=${PLATFORM} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_INSTALL_PREFIX:PATH=/usr/local ../ || exit 2
 | 
			
		||||
	make -j $(sysctl -n hw.ncpu) package || exit 3
 | 
			
		||||
	cd ${CI_BUILD_DIR} && source /${CI_BUILD_DIR}/test/testrunner.sh || exit 4
 | 
			
		||||
	cd ${GITHUB_WORKSPACE} && source /${GITHUB_WORKSPACE}/test/testrunner.sh || exit 4
 | 
			
		||||
	exit 0;
 | 
			
		||||
	exit 1 || { echo "---> Hyperion compilation failed! Abort"; exit 5; }
 | 
			
		||||
elif [[ $CI_NAME == *"mingw64_nt"* || "$CI_NAME" == 'windows_nt' ]]; then
 | 
			
		||||
	echo "Compile Hyperion on Windows"
 | 
			
		||||
	# compile prepare
 | 
			
		||||
elif [[ $RUNNER_OS == "Windows" ]]; then
 | 
			
		||||
	echo "Number of Cores $NUMBER_OF_PROCESSORS"
 | 
			
		||||
	mkdir build || exit 1
 | 
			
		||||
	cd build
 | 
			
		||||
@@ -44,17 +31,17 @@ elif [[ $CI_NAME == *"mingw64_nt"* || "$CI_NAME" == 'windows_nt' ]]; then
 | 
			
		||||
	cmake --build . --target package --config "Release" -- -nologo -v:m -maxcpucount || exit 3
 | 
			
		||||
	exit 0;
 | 
			
		||||
	exit 1 || { echo "---> Hyperion compilation failed! Abort"; exit 5; }
 | 
			
		||||
elif [[ "$CI_NAME" == 'linux' ]]; then
 | 
			
		||||
	echo "Compile Hyperion with DOCKER_IMAGE = ${DOCKER_IMAGE}, DOCKER_TAG = ${DOCKER_TAG}, ARCHITECTURE = ${ARCHITECTURE} and friendly name DOCKER_NAME = ${DOCKER_NAME}"
 | 
			
		||||
elif [[ "$RUNNER_OS" == 'Linux' ]]; then
 | 
			
		||||
	echo "Docker arguments used: DOCKER_IMAGE=${DOCKER_IMAGE}, DOCKER_TAG=${DOCKER_TAG}, TARGET_ARCH=${TARGET_ARCH}"
 | 
			
		||||
	# set GitHub Container Registry url
 | 
			
		||||
	REGISTRY_URL="ghcr.io/hyperion-project/${DOCKER_IMAGE}"
 | 
			
		||||
	# take ownership of deploy dir
 | 
			
		||||
	mkdir ${CI_BUILD_DIR}/deploy
 | 
			
		||||
	mkdir ${GITHUB_WORKSPACE}/deploy
 | 
			
		||||
 | 
			
		||||
	# run docker
 | 
			
		||||
	docker run --rm --platform=${ARCHITECTURE} \
 | 
			
		||||
		-v "${CI_BUILD_DIR}/deploy:/deploy" \
 | 
			
		||||
		-v "${CI_BUILD_DIR}:/source:ro" \
 | 
			
		||||
	docker run --rm --platform=${TARGET_ARCH} \
 | 
			
		||||
		-v "${GITHUB_WORKSPACE}/deploy:/deploy" \
 | 
			
		||||
		-v "${GITHUB_WORKSPACE}:/source:ro" \
 | 
			
		||||
		$REGISTRY_URL:$DOCKER_TAG \
 | 
			
		||||
		/bin/bash -c "mkdir hyperion && cp -r source/. /hyperion &&
 | 
			
		||||
		cd /hyperion && mkdir build && cd build &&
 | 
			
		||||
@@ -67,5 +54,5 @@ elif [[ "$CI_NAME" == 'linux' ]]; then
 | 
			
		||||
		exit 1 " || { echo "---> Hyperion compilation failed! Abort"; exit 5; }
 | 
			
		||||
 | 
			
		||||
	# overwrite file owner to current user
 | 
			
		||||
	sudo chown -fR $(stat -c "%U:%G" ${CI_BUILD_DIR}/deploy) ${CI_BUILD_DIR}/deploy
 | 
			
		||||
	sudo chown -fR $(stat -c "%U:%G" ${GITHUB_WORKSPACE}/deploy) ${GITHUB_WORKSPACE}/deploy
 | 
			
		||||
fi
 | 
			
		||||
							
								
								
									
										27
									
								
								.github/workflows/apt.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										27
									
								
								.github/workflows/apt.yml
									
									
									
									
										vendored
									
									
								
							@@ -49,20 +49,27 @@ jobs:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [
 | 
			
		||||
          { distribution: ubuntu, codename: focal,    description: Ubuntu 20.04 (Focal Fossa),     },
 | 
			
		||||
          { distribution: ubuntu, codename: jammy,    description: Ubuntu 22.04 (Jammy Jellyfish), },
 | 
			
		||||
          { distribution: ubuntu, codename: lunar,    description: Ubuntu 23.04 (Lunar Lobster),   },
 | 
			
		||||
          { distribution: ubuntu, codename: mantic,   description: Ubuntu 23.10 (Mantic Minotaur), },
 | 
			
		||||
          { distribution: debian, codename: buster,   description: Debian 10.x (Buster),           },
 | 
			
		||||
          { distribution: debian, codename: bullseye, description: Debian 11.x (Bullseye),         },
 | 
			
		||||
          { distribution: debian, codename: bookworm, description: Debian 12.x (Bookworm),         },
 | 
			
		||||
          { distribution: debian, codename: trixie,   description: Debian 13.x (Trixie),           }
 | 
			
		||||
          { distribution: ubuntu, codename: focal,    description: Ubuntu 20.04 (Focal Fossa)     },
 | 
			
		||||
          { distribution: ubuntu, codename: jammy,    description: Ubuntu 22.04 (Jammy Jellyfish) },
 | 
			
		||||
          { distribution: ubuntu, codename: lunar,    description: Ubuntu 23.04 (Lunar Lobster)   },
 | 
			
		||||
          { distribution: ubuntu, codename: mantic,   description: Ubuntu 23.10 (Mantic Minotaur) },
 | 
			
		||||
          { distribution: debian, codename: buster,   description: Debian 10.x (Buster)           },
 | 
			
		||||
          { distribution: debian, codename: bullseye, description: Debian 11.x (Bullseye)         },
 | 
			
		||||
          { distribution: debian, codename: bookworm, description: Debian 12.x (Bookworm)         },
 | 
			
		||||
          { distribution: debian, codename: trixie,   description: Debian 13.x (Trixie)           }
 | 
			
		||||
        ]
 | 
			
		||||
        architecture: [
 | 
			
		||||
          [ amd64, linux/amd64 ],
 | 
			
		||||
          [ arm64, linux/arm64 ],
 | 
			
		||||
          [ amd64, linux/amd64  ],
 | 
			
		||||
          [ arm64, linux/arm64  ],
 | 
			
		||||
          [ armhf, linux/arm/v7 ]
 | 
			
		||||
        ]
 | 
			
		||||
        include:
 | 
			
		||||
          - os: { distribution: debian, codename: bullseye, description: Debian 11.x (Bullseye) }
 | 
			
		||||
            architecture: [ armel, linux/arm/v6 ]
 | 
			
		||||
          - os: { distribution: debian, codename: bookworm, description: Debian 12.x (Bookworm) }
 | 
			
		||||
            architecture: [ armel, linux/arm/v6 ]
 | 
			
		||||
          - os: { distribution: debian, codename: trixie, description: Debian 13.x (Trixie) }
 | 
			
		||||
            architecture: [ armel, linux/arm/v6 ]
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: ⬇ Checkout
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								.github/workflows/cleanup.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/cleanup.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
name: Clean artifacts
 | 
			
		||||
name: 🧹 Clean artifacts
 | 
			
		||||
 | 
			
		||||
# Run cleanup workflow at the end of every day
 | 
			
		||||
on:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								.github/workflows/codeql.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/codeql.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
name: "CodeQL"
 | 
			
		||||
name: 📊 CodeQL
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								.github/workflows/nightly.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/nightly.yml
									
									
									
									
										vendored
									
									
								
							@@ -13,7 +13,7 @@ jobs:
 | 
			
		||||
 | 
			
		||||
  update_submodule:
 | 
			
		||||
    name: 🔁 Update Submodule rpi_ws281x (Nightly build only)
 | 
			
		||||
    if: ${{ github.repository == 'hyperion-project' && inputs.nightly }}
 | 
			
		||||
    if: ${{ !startsWith(github.repository, 'hyperion-project') }}
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: ⬇ Checkout
 | 
			
		||||
@@ -55,7 +55,7 @@ jobs:
 | 
			
		||||
  check:
 | 
			
		||||
    name: 🔀 Compare local <-> nightly (Nightly build only)
 | 
			
		||||
    needs: [update_submodule]
 | 
			
		||||
    if: ${{ github.repository == 'hyperion-project' && inputs.nightly }}
 | 
			
		||||
    if: ${{ !startsWith(github.repository, 'hyperion-project') }}
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: ⬇ Checkout
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										208
									
								
								.github/workflows/push.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										208
									
								
								.github/workflows/push.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,208 +0,0 @@
 | 
			
		||||
name: Hyperion CI Build
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
    branches:
 | 
			
		||||
      - '**'
 | 
			
		||||
    tags:
 | 
			
		||||
      - '*'
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
 | 
			
		||||
##################
 | 
			
		||||
##### Linux ######
 | 
			
		||||
##################
 | 
			
		||||
 | 
			
		||||
  Linux:
 | 
			
		||||
    name: 🐧 ${{ matrix.dockerName }}
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    strategy:
 | 
			
		||||
      matrix:
 | 
			
		||||
        dockerImage: [ x86_64, armv6l, armv7l, aarch64 ]
 | 
			
		||||
        include:
 | 
			
		||||
          - dockerImage: x86_64
 | 
			
		||||
            dockerName: Debian Buster (x86_64)
 | 
			
		||||
            platform: x11
 | 
			
		||||
          - dockerImage: armv6l
 | 
			
		||||
            dockerName: Debian Buster (Raspberry Pi v1 & ZERO)
 | 
			
		||||
            platform: rpi
 | 
			
		||||
          - dockerImage: armv7l
 | 
			
		||||
            dockerName: Debian Buster (Raspberry Pi 2 & 3)
 | 
			
		||||
            platform: rpi
 | 
			
		||||
          - dockerImage: aarch64
 | 
			
		||||
            dockerName: Debian Buster (Generic AARCH64)
 | 
			
		||||
            platform: amlogic
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: ⬇ Checkout
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        with:
 | 
			
		||||
          submodules: recursive
 | 
			
		||||
 | 
			
		||||
      - name: 👷 Build
 | 
			
		||||
        env:
 | 
			
		||||
          DOCKER_IMAGE: ${{ matrix.dockerImage }}
 | 
			
		||||
          DOCKER_TAG: buster
 | 
			
		||||
          DOCKER_NAME: ${{ matrix.dockerName }}
 | 
			
		||||
          PLATFORM: ${{ matrix.platform }}
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: ./.ci/ci_build.sh
 | 
			
		||||
 | 
			
		||||
      - name: 📦 Upload
 | 
			
		||||
        if: startsWith(github.event.ref, 'refs/tags')
 | 
			
		||||
        uses: actions/upload-artifact@v3
 | 
			
		||||
        with:
 | 
			
		||||
          path: deploy/Hyperion-*
 | 
			
		||||
 | 
			
		||||
###################
 | 
			
		||||
###### macOS ######
 | 
			
		||||
###################
 | 
			
		||||
 | 
			
		||||
  macOS:
 | 
			
		||||
    name: 🍏 macOS
 | 
			
		||||
    runs-on: macos-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: ⬇ Checkout
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        with:
 | 
			
		||||
          submodules: recursive
 | 
			
		||||
 | 
			
		||||
      - name: 🔧 Prepare
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          echo '::group::Install dependencies'
 | 
			
		||||
            ./.ci/ci_install.sh
 | 
			
		||||
          echo '::endgroup::'
 | 
			
		||||
 | 
			
		||||
      - name: 👷 Build
 | 
			
		||||
        env:
 | 
			
		||||
          PLATFORM: osx
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: ./.ci/ci_build.sh
 | 
			
		||||
 | 
			
		||||
      - name: 📦 Upload
 | 
			
		||||
        if: startsWith(github.event.ref, 'refs/tags')
 | 
			
		||||
        uses: actions/upload-artifact@v3
 | 
			
		||||
        with:
 | 
			
		||||
          path: build/Hyperion-*
 | 
			
		||||
 | 
			
		||||
#####################
 | 
			
		||||
###### Windows ######
 | 
			
		||||
#####################
 | 
			
		||||
 | 
			
		||||
  windows:
 | 
			
		||||
    name: 🪟 Windows
 | 
			
		||||
    runs-on: windows-2022
 | 
			
		||||
    env:
 | 
			
		||||
      VCINSTALLDIR: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC'
 | 
			
		||||
      QT_VERSION: 5.15.2
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: ⬇ Checkout
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        with:
 | 
			
		||||
          submodules: recursive
 | 
			
		||||
 | 
			
		||||
      - name: 💾 Cache/Restore
 | 
			
		||||
        uses: actions/cache@v3
 | 
			
		||||
        with:
 | 
			
		||||
          path: C:\Users\runneradmin\AppData\Local\Temp\chocolatey
 | 
			
		||||
          key: ${{ runner.os }}-chocolatey
 | 
			
		||||
 | 
			
		||||
      - name: 📥 Install OpenSSL, DirectX SDK, libjpeg-turbo
 | 
			
		||||
        shell: powershell
 | 
			
		||||
        run: |
 | 
			
		||||
          choco install --no-progress openssl --version=1.1.1.2100 -y
 | 
			
		||||
          choco install --no-progress directx-sdk -y
 | 
			
		||||
          Invoke-WebRequest https://netcologne.dl.sourceforge.net/project/libjpeg-turbo/2.0.6/libjpeg-turbo-2.0.6-vc64.exe -OutFile libjpeg-turbo.exe -UserAgent NativeHost
 | 
			
		||||
          .\libjpeg-turbo /S
 | 
			
		||||
 | 
			
		||||
      - name: 📥 Install Qt
 | 
			
		||||
        uses: jurplel/install-qt-action@v3
 | 
			
		||||
        with:
 | 
			
		||||
          version: ${{env.QT_VERSION}}
 | 
			
		||||
          target: 'desktop'
 | 
			
		||||
          arch: 'win64_msvc2019_64'
 | 
			
		||||
          cache: 'true'
 | 
			
		||||
          cache-key-prefix: 'cache-qt-windows'
 | 
			
		||||
 | 
			
		||||
      - name: 🛠️ Setup
 | 
			
		||||
        shell: cmd
 | 
			
		||||
        run: call "${{env.VCINSTALLDIR}}\Auxiliary\Build\vcvars64.bat"
 | 
			
		||||
 | 
			
		||||
      - name: 👷 Build
 | 
			
		||||
        env:
 | 
			
		||||
          PLATFORM: windows
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          echo '::group::Build packages'
 | 
			
		||||
            ./.ci/ci_build.sh
 | 
			
		||||
          echo '::endgroup::'
 | 
			
		||||
 | 
			
		||||
      - name: 📦 Upload
 | 
			
		||||
        if: startsWith(github.event.ref, 'refs/tags')
 | 
			
		||||
        uses: actions/upload-artifact@v3
 | 
			
		||||
        with:
 | 
			
		||||
          path: build/Hyperion-*
 | 
			
		||||
          retention-days: 1
 | 
			
		||||
 | 
			
		||||
#####################################
 | 
			
		||||
###### Publish GitHub Releases ######
 | 
			
		||||
#####################################
 | 
			
		||||
 | 
			
		||||
  github_publish:
 | 
			
		||||
    name: 🚀 Publish GitHub Releases
 | 
			
		||||
    if: startsWith(github.event.ref, 'refs/tags')
 | 
			
		||||
    needs: [Linux, macOS, windows]
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: ⬇ Checkout
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      - name: 🔧 Prepare
 | 
			
		||||
        run: |
 | 
			
		||||
          echo '::group::Generate environment variables from .version and tag'
 | 
			
		||||
            echo "TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
 | 
			
		||||
            echo "VERSION=$(tr -d '\n' < .version)" >> $GITHUB_ENV
 | 
			
		||||
          echo '::endgroup::'
 | 
			
		||||
 | 
			
		||||
      - name: 💾 Artifact download
 | 
			
		||||
        uses: actions/download-artifact@v3.0.2
 | 
			
		||||
        with:
 | 
			
		||||
          path: artifacts
 | 
			
		||||
 | 
			
		||||
      - name: 📦 Upload
 | 
			
		||||
        uses: softprops/action-gh-release@v1
 | 
			
		||||
        with:
 | 
			
		||||
          name: Hyperion ${{ env.VERSION }}
 | 
			
		||||
          tag_name: ${{ env.TAG }}
 | 
			
		||||
          files: "artifacts/**"
 | 
			
		||||
          draft: true
 | 
			
		||||
        env:
 | 
			
		||||
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
 | 
			
		||||
###################################
 | 
			
		||||
###### APT reusable workflow ######
 | 
			
		||||
###################################
 | 
			
		||||
 | 
			
		||||
  apt_build:
 | 
			
		||||
    name: APT Build
 | 
			
		||||
    if: startsWith(github.event.ref, 'refs/tags')
 | 
			
		||||
    needs: [Linux, macOS, windows]
 | 
			
		||||
    uses: ./.github/workflows/apt.yml
 | 
			
		||||
    secrets: inherit
 | 
			
		||||
    with:
 | 
			
		||||
      nightly: false
 | 
			
		||||
      publish: true
 | 
			
		||||
 | 
			
		||||
###################################
 | 
			
		||||
###### DNF reusable workflow ######
 | 
			
		||||
###################################
 | 
			
		||||
 | 
			
		||||
  dnf_build:
 | 
			
		||||
    name: DNF Build
 | 
			
		||||
    if: startsWith(github.event.ref, 'refs/tags')
 | 
			
		||||
    needs: [Linux, macOS, windows]
 | 
			
		||||
    uses: ./.github/workflows/dnf.yml
 | 
			
		||||
    secrets: inherit
 | 
			
		||||
    with:
 | 
			
		||||
      nightly: false
 | 
			
		||||
      publish: true
 | 
			
		||||
@@ -1,13 +1,25 @@
 | 
			
		||||
name: Hyperion PR Build
 | 
			
		||||
name: Hyperion CI/PR Builds
 | 
			
		||||
run-name: |
 | 
			
		||||
  ${{ github.event_name == 'pull_request' && '📦 Generate artifacts for PR' || '' }}
 | 
			
		||||
  ${{ github.event_name == 'pull_request' && github.event.pull_request.number || '' }}
 | 
			
		||||
  ${{ github.event_name == 'pull_request' && '-' || '' }}
 | 
			
		||||
  ${{ github.event_name == 'push' && '🌱 Push Build -' || '' }}
 | 
			
		||||
  ${{ github.event_name == 'pull_request' && github.event.pull_request.title || github.event.head_commit.message }}
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
    branches:
 | 
			
		||||
      - '**'
 | 
			
		||||
    tags:
 | 
			
		||||
      - '*'
 | 
			
		||||
  pull_request:
 | 
			
		||||
    branches:
 | 
			
		||||
      - master
 | 
			
		||||
      - 'master'
 | 
			
		||||
 | 
			
		||||
# Cancel running actions when a new action on the same PR is started
 | 
			
		||||
concurrency:
 | 
			
		||||
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
 | 
			
		||||
  cancel-in-progress: true
 | 
			
		||||
  cancel-in-progress: ${{ github.event_name == 'pull_request' }}
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
 | 
			
		||||
@@ -22,10 +34,10 @@ jobs:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [
 | 
			
		||||
          { description: Debian Buster (x86_64),                 platform: x11,     architecture: linux/amd64  },
 | 
			
		||||
          { description: Debian Buster (Raspberry Pi v1 & ZERO), platform: rpi,     architecture: linux/arm/v7 },
 | 
			
		||||
          { description: Debian Buster (Raspberry Pi 2 & 3),     platform: rpi,     architecture: linux/arm/v7 },
 | 
			
		||||
          { description: Debian Buster (Generic AARCH64),        platform: amlogic, architecture: linux/arm64  }
 | 
			
		||||
          { description: Debian Buster (x86_64),                 platform: x11,     architecture: [ amd64,   linux/amd64  ] },
 | 
			
		||||
          { description: Debian Buster (Raspberry Pi v1 & ZERO), platform: rpi,     architecture: [ armv6,   linux/arm/v5 ] },
 | 
			
		||||
          { description: Debian Buster (Raspberry Pi 2/3/4),     platform: rpi,     architecture: [ armv7,   linux/arm/v7 ] },
 | 
			
		||||
          { description: Debian Buster (Generic AARCH64),        platform: amlogic, architecture: [ aarch64, linux/arm64  ] }
 | 
			
		||||
        ]
 | 
			
		||||
        include:
 | 
			
		||||
          - distribution: debian
 | 
			
		||||
@@ -37,7 +49,8 @@ jobs:
 | 
			
		||||
        with:
 | 
			
		||||
          submodules: recursive
 | 
			
		||||
 | 
			
		||||
      - name: 🔧 Prepare
 | 
			
		||||
      - name: 🔧 Prepare PR
 | 
			
		||||
        if: ${{ github.event_name == 'pull_request' }}
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          echo '::group::Append PR number to version'
 | 
			
		||||
@@ -46,31 +59,27 @@ jobs:
 | 
			
		||||
          echo '::endgroup::'
 | 
			
		||||
 | 
			
		||||
      - name: 🛠️ Setup QEMU
 | 
			
		||||
        if: ${{ matrix.os.architecture[0] != 'amd64' }}
 | 
			
		||||
        uses: docker/setup-qemu-action@v3
 | 
			
		||||
 | 
			
		||||
      - name: 👷 Build
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          echo '::group::Build Hyperion'
 | 
			
		||||
            ./.github/scripts/build.sh
 | 
			
		||||
          echo '::endgroup::'
 | 
			
		||||
        env:
 | 
			
		||||
          DOCKER_IMAGE: ${{ matrix.distribution }}
 | 
			
		||||
          DOCKER_TAG: ${{ matrix.codename }}
 | 
			
		||||
          DOCKER_NAME: ${{ matrix.os.description }}
 | 
			
		||||
          PLATFORM: ${{ matrix.os.platform }}
 | 
			
		||||
          ARCHITECTURE: ${{ matrix.os.architecture }}
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          echo '::group::Build packages'
 | 
			
		||||
            ./.ci/ci_build.sh
 | 
			
		||||
          echo '::endgroup::'
 | 
			
		||||
 | 
			
		||||
          echo '::group::Collecting deployable artifacts'
 | 
			
		||||
            mkdir -p ${{ matrix.dockerImage }}
 | 
			
		||||
            mv deploy/*.tar.gz ${{ matrix.dockerImage }}
 | 
			
		||||
          echo '::endgroup::'
 | 
			
		||||
          TARGET_ARCH: ${{ matrix.os.architecture[1] }}
 | 
			
		||||
 | 
			
		||||
      - name: 📦 Upload
 | 
			
		||||
        if: ${{ startsWith(github.event.ref, 'refs/tags') || github.event_name == 'pull_request' }}
 | 
			
		||||
        uses: actions/upload-artifact@v3
 | 
			
		||||
        with:
 | 
			
		||||
          name: ${{ matrix.dockerImage }}
 | 
			
		||||
          path: ${{ matrix.dockerImage }}
 | 
			
		||||
          name: ${{ github.event_name == 'pull_request' && matrix.os.architecture[0] || 'artifact' }}
 | 
			
		||||
          path: ${{ github.event_name == 'pull_request' && 'deploy/*.tar.gz' || 'deploy/Hyperion-*' }}
 | 
			
		||||
 | 
			
		||||
######################
 | 
			
		||||
###### macOS #########
 | 
			
		||||
@@ -85,7 +94,8 @@ jobs:
 | 
			
		||||
        with:
 | 
			
		||||
          submodules: recursive
 | 
			
		||||
 | 
			
		||||
      - name: 🔧 Prepare
 | 
			
		||||
      - name: 🔧 Prepare PR
 | 
			
		||||
        if: ${{ github.event_name == 'pull_request' }}
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          echo '::group::Append PR number to version'
 | 
			
		||||
@@ -93,29 +103,27 @@ jobs:
 | 
			
		||||
            echo -n "+PR${{ github.event.pull_request.number }}" >> .version
 | 
			
		||||
          echo '::endgroup::'
 | 
			
		||||
 | 
			
		||||
          echo '::group::Install dependencies'
 | 
			
		||||
            ./.ci/ci_install.sh
 | 
			
		||||
          echo '::endgroup::'
 | 
			
		||||
 | 
			
		||||
      - name: 👷 Build
 | 
			
		||||
        env:
 | 
			
		||||
          PLATFORM: osx
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          echo '::group::Build packages'
 | 
			
		||||
            ./.ci/ci_build.sh
 | 
			
		||||
          echo '::group::Update/Install dependencies'
 | 
			
		||||
            brew update || true
 | 
			
		||||
            brew install --overwrite qt5 libusb
 | 
			
		||||
            brew link --overwrite --force qt5
 | 
			
		||||
          echo '::endgroup::'
 | 
			
		||||
 | 
			
		||||
          echo '::group::Collecting deployable artifacts'
 | 
			
		||||
            mkdir -p macOS
 | 
			
		||||
            mv build/*.dmg macOS
 | 
			
		||||
          echo '::group::Build packages'
 | 
			
		||||
            ./.github/scripts/build.sh
 | 
			
		||||
          echo '::endgroup::'
 | 
			
		||||
        env:
 | 
			
		||||
          PLATFORM: osx
 | 
			
		||||
 | 
			
		||||
      - name: 📦 Upload
 | 
			
		||||
        if: ${{ startsWith(github.event.ref, 'refs/tags') || github.event_name == 'pull_request' }}
 | 
			
		||||
        uses: actions/upload-artifact@v3
 | 
			
		||||
        with:
 | 
			
		||||
          name: macOS
 | 
			
		||||
          path: macOS
 | 
			
		||||
          name: ${{ github.event_name == 'pull_request' && 'macOS' || 'artifact' }}
 | 
			
		||||
          path: 'build/Hyperion-*'
 | 
			
		||||
 | 
			
		||||
######################
 | 
			
		||||
###### Windows #######
 | 
			
		||||
@@ -133,7 +141,8 @@ jobs:
 | 
			
		||||
        with:
 | 
			
		||||
          submodules: recursive
 | 
			
		||||
 | 
			
		||||
      - name: 🔧 Prepare
 | 
			
		||||
      - name: 🔧 Prepare PR
 | 
			
		||||
        if: ${{ github.event_name == 'pull_request' }}
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          echo '::group::Append PR number to version'
 | 
			
		||||
@@ -169,21 +178,80 @@ jobs:
 | 
			
		||||
        run: call "${{env.VCINSTALLDIR}}\Auxiliary\Build\vcvars64.bat"
 | 
			
		||||
 | 
			
		||||
      - name: 👷 Build
 | 
			
		||||
        env:
 | 
			
		||||
          PLATFORM: windows
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          echo '::group::Build packages'
 | 
			
		||||
            ./.ci/ci_build.sh
 | 
			
		||||
          echo '::endgroup::'
 | 
			
		||||
 | 
			
		||||
          echo '::group::Collecting deployable artifacts'
 | 
			
		||||
            mkdir -p windows
 | 
			
		||||
            mv build/*.exe windows
 | 
			
		||||
            ./.github/scripts/build.sh
 | 
			
		||||
          echo '::endgroup::'
 | 
			
		||||
        env:
 | 
			
		||||
          PLATFORM: windows
 | 
			
		||||
 | 
			
		||||
      - name: 📦 Upload
 | 
			
		||||
        if: ${{ startsWith(github.event.ref, 'refs/tags') || github.event_name == 'pull_request' }}
 | 
			
		||||
        uses: actions/upload-artifact@v3
 | 
			
		||||
        with:
 | 
			
		||||
          name: windows
 | 
			
		||||
          path: windows
 | 
			
		||||
          name: ${{ github.event_name == 'pull_request' && 'windows' || 'artifact' }}
 | 
			
		||||
          path: ${{ github.event_name == 'pull_request' && 'build/*.exe' || 'build/Hyperion-*' }}
 | 
			
		||||
 | 
			
		||||
#####################################
 | 
			
		||||
###### Publish GitHub Releases ######
 | 
			
		||||
#####################################
 | 
			
		||||
 | 
			
		||||
  github_publish:
 | 
			
		||||
    name: 🚀 Publish GitHub Releases
 | 
			
		||||
    if: startsWith(github.event.ref, 'refs/tags')
 | 
			
		||||
    needs: [Linux, macOS, windows]
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: ⬇ Checkout
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      - name: 🔧 Prepare
 | 
			
		||||
        run: |
 | 
			
		||||
          echo '::group::Generate environment variables from .version and tag'
 | 
			
		||||
            echo "TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
 | 
			
		||||
            echo "VERSION=$(tr -d '\n' < .version)" >> $GITHUB_ENV
 | 
			
		||||
          echo '::endgroup::'
 | 
			
		||||
 | 
			
		||||
      - name: 💾 Artifact download
 | 
			
		||||
        uses: actions/download-artifact@v3.0.2
 | 
			
		||||
        with:
 | 
			
		||||
          path: artifacts
 | 
			
		||||
 | 
			
		||||
      - name: 📦 Upload
 | 
			
		||||
        uses: softprops/action-gh-release@v1
 | 
			
		||||
        with:
 | 
			
		||||
          name: Hyperion ${{ env.VERSION }}
 | 
			
		||||
          tag_name: ${{ env.TAG }}
 | 
			
		||||
          files: "artifacts/**"
 | 
			
		||||
          draft: true
 | 
			
		||||
        env:
 | 
			
		||||
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
 | 
			
		||||
###################################
 | 
			
		||||
###### APT reusable workflow ######
 | 
			
		||||
###################################
 | 
			
		||||
 | 
			
		||||
  apt_build:
 | 
			
		||||
    name: APT Build
 | 
			
		||||
    if: startsWith(github.event.ref, 'refs/tags')
 | 
			
		||||
    needs: [Linux, macOS, windows]
 | 
			
		||||
    uses: ./.github/workflows/apt.yml
 | 
			
		||||
    secrets: inherit
 | 
			
		||||
    with:
 | 
			
		||||
      nightly: false
 | 
			
		||||
      publish: true
 | 
			
		||||
 | 
			
		||||
###################################
 | 
			
		||||
###### DNF reusable workflow ######
 | 
			
		||||
###################################
 | 
			
		||||
 | 
			
		||||
  dnf_build:
 | 
			
		||||
    name: DNF Build
 | 
			
		||||
    if: startsWith(github.event.ref, 'refs/tags')
 | 
			
		||||
    needs: [Linux, macOS, windows]
 | 
			
		||||
    uses: ./.github/workflows/dnf.yml
 | 
			
		||||
    secrets: inherit
 | 
			
		||||
    with:
 | 
			
		||||
      nightly: false
 | 
			
		||||
      publish: true
 | 
			
		||||
							
								
								
									
										3
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,4 +1,5 @@
 | 
			
		||||
name: Release Actions
 | 
			
		||||
name: 🚀 Release Actions
 | 
			
		||||
run-name: 🚀 Let HyperBian create
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  release:
 | 
			
		||||
 
 | 
			
		||||
@@ -489,7 +489,7 @@ if (ENABLE_DEPLOY_DEPENDENCIES AND UNIX AND NOT APPLE)
 | 
			
		||||
	set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--disable-new-dtags")
 | 
			
		||||
	SET(CMAKE_SKIP_BUILD_RPATH FALSE)
 | 
			
		||||
	SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
 | 
			
		||||
	SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:$ORIGIN/../lib")
 | 
			
		||||
	SET(CMAKE_INSTALL_RPATH "$ORIGIN/../lib")
 | 
			
		||||
	SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
 | 
			
		||||
endif ()
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
#!/bin/bash -e
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
DOCKER="docker"
 | 
			
		||||
# Git repo url of Hyperion
 | 
			
		||||
@@ -7,10 +7,9 @@ GIT_REPO_URL="https://github.com/hyperion-project/hyperion.ng.git"
 | 
			
		||||
REGISTRY_URL="ghcr.io/hyperion-project"
 | 
			
		||||
# cmake build type
 | 
			
		||||
BUILD_TYPE="Release"
 | 
			
		||||
# the docker image at GitHub Container Registry
 | 
			
		||||
BUILD_IMAGE="x86_64"
 | 
			
		||||
# the docker tag at GitHub Container Registry
 | 
			
		||||
BUILD_TAG="bullseye"
 | 
			
		||||
DISTRIBUTION="debian"
 | 
			
		||||
CODENAME="bullseye"
 | 
			
		||||
ARCHITECTURE="amd64"
 | 
			
		||||
# build packages (.deb .zip ...)
 | 
			
		||||
BUILD_PACKAGES=true
 | 
			
		||||
# packages string inserted to cmake cmd
 | 
			
		||||
@@ -18,9 +17,9 @@ PACKAGES=""
 | 
			
		||||
# platform string inserted to cmake cmd
 | 
			
		||||
BUILD_PLATFORM=""
 | 
			
		||||
#Run build using GitHub code files
 | 
			
		||||
BUILD_LOCAL=0
 | 
			
		||||
BUILD_LOCAL=false
 | 
			
		||||
#Build from scratch
 | 
			
		||||
BUILD_INCREMENTAL=0
 | 
			
		||||
BUILD_INCREMENTAL=false
 | 
			
		||||
#Verbose output
 | 
			
		||||
_VERBOSE=0
 | 
			
		||||
#Additional args
 | 
			
		||||
@@ -37,11 +36,7 @@ cd `dirname ${BASE_PATH}` > /dev/null
 | 
			
		||||
BASE_PATH=`pwd`;
 | 
			
		||||
popd  > /dev/null
 | 
			
		||||
 | 
			
		||||
BASE_PATH=`pwd`;function log () {
 | 
			
		||||
    if [[ $_V -eq 1 ]]; then
 | 
			
		||||
        echo "$@"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
BASE_PATH=`pwd`;
 | 
			
		||||
 | 
			
		||||
set +e
 | 
			
		||||
${DOCKER} ps >/dev/null 2>&1
 | 
			
		||||
@@ -62,7 +57,7 @@ function printHelp {
 | 
			
		||||
echo "########################################################
 | 
			
		||||
## A script to compile Hyperion inside a docker container
 | 
			
		||||
## Requires installed Docker: https://www.docker.com/
 | 
			
		||||
## Without arguments it will compile Hyperion for Debian Bullseye (x86_64) and uses Hyperion code from GitHub repository.
 | 
			
		||||
## Without arguments it will compile Hyperion for ${DISTRIBUTION}:${CODENAME}, ${ARCHITECTURE} architecture and uses Hyperion code from GitHub repository.
 | 
			
		||||
## For all images and tags currently available, see https://github.com/orgs/hyperion-project/packages
 | 
			
		||||
##
 | 
			
		||||
## Homepage: https://www.hyperion-project.org
 | 
			
		||||
@@ -71,8 +66,8 @@ echo "########################################################
 | 
			
		||||
# These are possible arguments to modify the script behaviour with their default values
 | 
			
		||||
#
 | 
			
		||||
# docker-compile.sh -h, --help          # Show this help message
 | 
			
		||||
# docker-compile.sh -i, --image         # The docker image, e.g., x86_64, armv6l, armv7l, aarch64
 | 
			
		||||
# docker-compile.sh -t, --tag           # The docker tag, e.g., buster, bullseye, bookworm
 | 
			
		||||
# docker-compile.sh -n, --name          # The distribution's codename, e.g., buster, bullseye, bookworm, jammy, trixie, lunar, mantic; Note: for Fedora it is the version number
 | 
			
		||||
# docker-compile.sh -a, --architecture  # The output architecture, e.g., amd64, arm64, arm/v7
 | 
			
		||||
# docker-compile.sh -b, --type          # Release or Debug build
 | 
			
		||||
# docker-compile.sh -p, --packages      # If true, build packages with CPack
 | 
			
		||||
# docker-compile.sh -l, --local         # Run build using local code files
 | 
			
		||||
@@ -80,7 +75,7 @@ echo "########################################################
 | 
			
		||||
# docker-compile.sh -f, --platform      # cmake PLATFORM parameter, e.g. x11, amlogic-dev
 | 
			
		||||
# docker-compile.sh -v, --verbose       # Run the script in verbose mode
 | 
			
		||||
# docker-compile.sh     -- args         # Additonal cmake arguments, e.g., -DHYPERION_LIGHT=ON
 | 
			
		||||
# More informations to docker tags at: https://github.com/Hyperion-Project/hyperion.docker-ci"
 | 
			
		||||
# More informations to docker containers available at: https://github.com/Hyperion-Project/hyperion.docker-ci"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function log () {
 | 
			
		||||
@@ -89,20 +84,32 @@ function log () {
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function check_distribution () {
 | 
			
		||||
	url=${REGISTRY_URL}/$1:${CODENAME} 
 | 
			
		||||
 | 
			
		||||
	log "Check for distribution at: $url"
 | 
			
		||||
	if $($DOCKER buildx imagetools inspect "$url" 2>&1 | grep -q $2) ; then 
 | 
			
		||||
		rc=0
 | 
			
		||||
	else
 | 
			
		||||
		rc=1
 | 
			
		||||
	fi
 | 
			
		||||
	return $rc
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
echo "Compile Hyperion using a Docker container"
 | 
			
		||||
options=$(getopt -l "image:,tag:,type:,packages:,platform:,local,incremental,verbose,help" -o "i:t:b:p:f:lcvh" -a -- "$@")
 | 
			
		||||
options=$(getopt -l "architecture:,name:,type:,packages:,platform:,local,incremental,verbose,help" -o "a:n:b:p:f:lcvh" -a -- "$@")
 | 
			
		||||
 | 
			
		||||
eval set -- "$options"
 | 
			
		||||
while true
 | 
			
		||||
do
 | 
			
		||||
    case $1 in
 | 
			
		||||
        -i|--image) 
 | 
			
		||||
        -a|--architecture) 
 | 
			
		||||
            shift
 | 
			
		||||
            BUILD_IMAGE=$1
 | 
			
		||||
            ARCHITECTURE=`echo $1 | tr '[:upper:]' '[:lower:]'` 
 | 
			
		||||
            ;;
 | 
			
		||||
        -t|--tag) 
 | 
			
		||||
        -n|--name) 
 | 
			
		||||
            shift
 | 
			
		||||
            BUILD_TAG=$1
 | 
			
		||||
            CODENAME=`echo $1 | tr '[:upper:]' '[:lower:]'` 
 | 
			
		||||
            ;;
 | 
			
		||||
        -b|--type) 
 | 
			
		||||
            shift
 | 
			
		||||
@@ -117,10 +124,10 @@ do
 | 
			
		||||
            BUILD_PLATFORM=$1
 | 
			
		||||
            ;;
 | 
			
		||||
        -l|--local) 
 | 
			
		||||
            BUILD_LOCAL=1
 | 
			
		||||
            BUILD_LOCAL=true
 | 
			
		||||
            ;;
 | 
			
		||||
        -c|--incremental) 
 | 
			
		||||
            BUILD_INCREMENTAL=1
 | 
			
		||||
        -i|--incremental) 
 | 
			
		||||
            BUILD_INCREMENTAL=true
 | 
			
		||||
            ;;
 | 
			
		||||
        -v|--verbose) 
 | 
			
		||||
            _VERBOSE=1
 | 
			
		||||
@@ -148,7 +155,61 @@ if [[ ! -z ${BUILD_PLATFORM} ]]; then
 | 
			
		||||
	PLATFORM="-DPLATFORM=${BUILD_PLATFORM}"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
echo "---> Initialize with IMAGE:TAG=${BUILD_IMAGE}:${BUILD_TAG}, BUILD_TYPE=${BUILD_TYPE}, BUILD_PACKAGES=${BUILD_PACKAGES}, PLATFORM=${BUILD_PLATFORM}, BUILD_LOCAL=${BUILD_LOCAL}, BUILD_INCREMENTAL=${BUILD_INCREMENTAL}"
 | 
			
		||||
PLATFORM_ARCHITECTURE="linux/"${ARCHITECTURE}
 | 
			
		||||
 | 
			
		||||
echo "---> Evaluate distribution for codename:${CODENAME} on platform architecture ${PLATFORM_ARCHITECTURE}"
 | 
			
		||||
DISTRIBUTION="debian"
 | 
			
		||||
if ! check_distribution ${DISTRIBUTION} ${PLATFORM_ARCHITECTURE} ; then 
 | 
			
		||||
	DISTRIBUTION="ubuntu"
 | 
			
		||||
	if ! check_distribution ${DISTRIBUTION} ${PLATFORM_ARCHITECTURE} ; then
 | 
			
		||||
		DISTRIBUTION="fedora"
 | 
			
		||||
		if ! check_distribution ${DISTRIBUTION} ${PLATFORM_ARCHITECTURE} ; then	
 | 
			
		||||
			echo "No docker image found for a distribution with codename: ${CODENAME} on platform architecture ${PLATFORM_ARCHITECTURE}"
 | 
			
		||||
			exit 1
 | 
			
		||||
		fi
 | 
			
		||||
	fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
echo "---> Build with -> Distribution: ${DISTRIBUTION}, Codename: ${CODENAME}, Architecture: ${ARCHITECTURE}, Type: ${BUILD_TYPE}, Platform: ${BUILD_PLATFORM}, Build Packages: ${BUILD_PACKAGES}, Build local: ${BUILD_LOCAL}, Build incremental: ${BUILD_INCREMENTAL}"
 | 
			
		||||
 | 
			
		||||
# Determine the current architecture
 | 
			
		||||
CURRENT_ARCHITECTURE=`uname -m`
 | 
			
		||||
 | 
			
		||||
#Test if multiarchitecture setup, i.e. user-space is 32bit
 | 
			
		||||
if [ ${CURRENT_ARCHITECTURE} == "aarch64" ]; then
 | 
			
		||||
	CURRENT_ARCHITECTURE="arm64"
 | 
			
		||||
	USER_ARCHITECTURE=$CURRENT_ARCHITECTURE
 | 
			
		||||
	IS_V7L=`cat /proc/$$/maps |grep -m1 -c v7l`
 | 
			
		||||
	if [ $IS_V7L -ne 0 ]; then
 | 
			
		||||
		USER_ARCHITECTURE="arm/v7"
 | 
			
		||||
	else 
 | 
			
		||||
	   IS_V6L=`cat /proc/$$/maps |grep -m1 -c v6l`
 | 
			
		||||
	   if [ $IS_V6L -ne 0 ]; then
 | 
			
		||||
		   USER_ARCHITECTURE="arm/v6"
 | 
			
		||||
	   fi
 | 
			
		||||
	fi
 | 
			
		||||
    if [ $ARCHITECTURE != $USER_ARCHITECTURE ]; then	
 | 
			
		||||
        log "Identified user space current architecture: $USER_ARCHITECTURE"
 | 
			
		||||
        CURRENT_ARCHITECTURE=$USER_ARCHITECTURE
 | 
			
		||||
    fi
 | 
			
		||||
else
 | 
			
		||||
	CURRENT_ARCHITECTURE=${CURRENT_ARCHITECTURE//x86_/amd}	
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
log "Identified kernel current architecture: $CURRENT_ARCHITECTURE"
 | 
			
		||||
if [ $ARCHITECTURE != $CURRENT_ARCHITECTURE ]; then
 | 
			
		||||
	echo "---> Build is not for the same architecturem, install emulation environment for ${PLATFORM_ARCHITECTURE}"
 | 
			
		||||
	$DOCKER run --privileged --rm tonistiigi/binfmt --install "${PLATFORM_ARCHITECTURE}"
 | 
			
		||||
	DOCKERRC=${?}
 | 
			
		||||
	
 | 
			
		||||
	if [ ${DOCKERRC} == 0 ]; then
 | 
			
		||||
		echo "---> Emulation environment installed sucessfully"
 | 
			
		||||
		echo "---> You can uninstall it via following command: "docker run --privileged --rm tonistiigi/binfmt --uninstall ${PLATFORM_ARCHITECTURE}""
 | 
			
		||||
	else
 | 
			
		||||
		echo "---> Failed to install emulation environment"
 | 
			
		||||
		exit 1
 | 
			
		||||
	fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
log "---> BASE_PATH  = ${BASE_PATH}"
 | 
			
		||||
CODE_PATH=${BASE_PATH};
 | 
			
		||||
@@ -163,9 +224,11 @@ git clone --recursive --depth 1 -q ${GIT_REPO_URL} ${CODE_PATH} || { echo "--->
 | 
			
		||||
fi
 | 
			
		||||
log "---> CODE_PATH  = ${CODE_PATH}"
 | 
			
		||||
 | 
			
		||||
BUILD_DIR="build-${BUILD_IMAGE}-${BUILD_TAG}"
 | 
			
		||||
ARCHITECTURE_PATH=${ARCHITECTURE//\//_}
 | 
			
		||||
 | 
			
		||||
BUILD_DIR="build-${CODENAME}-${ARCHITECTURE_PATH}"
 | 
			
		||||
BUILD_PATH="${CODE_PATH}/${BUILD_DIR}"
 | 
			
		||||
DEPLOY_DIR="deploy/${BUILD_IMAGE}/${BUILD_TAG}"
 | 
			
		||||
DEPLOY_DIR="deploy/${CODENAME}/${ARCHITECTURE}"
 | 
			
		||||
DEPLOY_PATH="${CODE_PATH}/${DEPLOY_DIR}"
 | 
			
		||||
 | 
			
		||||
log "---> BUILD_DIR  = ${BUILD_DIR}"
 | 
			
		||||
@@ -178,7 +241,7 @@ sudo rm -fr "${DEPLOY_PATH}" >/dev/null 2>&1
 | 
			
		||||
mkdir -p "${DEPLOY_PATH}" >/dev/null 2>&1
 | 
			
		||||
 | 
			
		||||
#Remove previous build area, if no incremental build
 | 
			
		||||
if [ ${BUILD_INCREMENTAL} != 1 ]; then
 | 
			
		||||
if [ ${BUILD_INCREMENTAL} != true ]; then
 | 
			
		||||
sudo rm -fr "${BUILD_PATH}" >/dev/null 2>&1
 | 
			
		||||
fi
 | 
			
		||||
mkdir -p "${BUILD_PATH}" >/dev/null 2>&1
 | 
			
		||||
@@ -194,10 +257,10 @@ echo "---> Compiling Hyperion from source code at ${CODE_PATH}"
 | 
			
		||||
# execute inside container all commands on bash
 | 
			
		||||
 | 
			
		||||
echo "---> Startup docker..."
 | 
			
		||||
$DOCKER run --rm \
 | 
			
		||||
$DOCKER run --rm --platform=${PLATFORM_ARCHITECTURE}\
 | 
			
		||||
	-v "${DEPLOY_PATH}:/deploy" \
 | 
			
		||||
	-v "${CODE_PATH}/:/source:rw" \
 | 
			
		||||
	${REGISTRY_URL}/${BUILD_IMAGE}:${BUILD_TAG} \
 | 
			
		||||
	${REGISTRY_URL}/${DISTRIBUTION}:${CODENAME} \
 | 
			
		||||
	/bin/bash -c "mkdir -p /source/${BUILD_DIR} && cd /source/${BUILD_DIR} &&
 | 
			
		||||
	cmake -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ${PLATFORM} ${BUILD_ARGS} .. || exit 2 &&
 | 
			
		||||
	make -j $(nproc) ${PACKAGES} || exit 3 || : &&
 | 
			
		||||
@@ -210,7 +273,7 @@ DOCKERRC=${?}
 | 
			
		||||
sudo chown -fR $(stat -c "%U:%G" ${BASE_PATH}) ${BUILD_PATH}
 | 
			
		||||
 | 
			
		||||
if [ ${DOCKERRC} == 0 ]; then
 | 
			
		||||
	if [ ${BUILD_LOCAL} == 1 ]; then
 | 
			
		||||
	if [ ${BUILD_LOCAL} == true ]; then
 | 
			
		||||
	 echo "---> Find compiled binaries in: ${BUILD_PATH}/bin"
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user