name: Build on: push: branches: 'ci*' tags: '*' jobs: create_release: name: Create release runs-on: ubuntu-latest outputs: upload_url: ${{ steps.create_release.outputs.upload_url }} steps: - uses: actions/checkout@v2 with: fetch-depth: 0 submodules: false - name: Generate release name id: release_name # https://github.community/t/how-to-get-just-the-tag-name/16241/4 run: echo ::set-output name=name::${GITHUB_REF/refs\/*s\//} - name: Create release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ steps.release_name.outputs.name }} release_name: ${{ steps.release_name.outputs.name }} body: '' draft: false prerelease: true build: name: Build runs-on: ubuntu-20.04 needs: [create_release] steps: - uses: actions/checkout@v2 with: submodules: true - name: Make /opt writable and create dir run: sudo chown "$(whoami):$(whoami)" /opt && mkdir /opt/cegcc - name: Workaround for apt update failure run: sudo rm /etc/apt/sources.list.d/github_git-lfs.* - name: Install deps run: | sudo sed -i 's+^deb http://azure+deb [arch=amd64] http://azure+g' /etc/apt/sources.list cat <> aarch64.list deb [arch=arm64] http://ports.ubuntu.com/ focal main restricted deb [arch=arm64] http://ports.ubuntu.com/ focal-updates main restricted deb [arch=arm64] http://ports.ubuntu.com/ focal universe deb [arch=arm64] http://ports.ubuntu.com/ focal-updates universe deb [arch=arm64] http://ports.ubuntu.com/ focal multiverse deb [arch=arm64] http://ports.ubuntu.com/ focal-updates multiverse deb [arch=arm64] http://ports.ubuntu.com/ focal-backports main restricted universe multiverse EOF sudo mv aarch64.list /etc/apt/sources.list.d/ sudo dpkg --add-architecture arm64 sudo apt update sudo apt install build-essential bison flex m4 libgmp-dev libmpc-dev libmpfr-dev \ gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libgmp-dev:arm64 libmpc-dev:arm64 libmpfr-dev:arm64 qemu-user-static - name: Build cegcc for x86_64 run: | export DIR=$(pwd) mkdir build cd build ../build.sh -j4 cd /opt/cegcc find . | xargs file | grep "not stripped" | grep -oE '^[^:]+' | xargs strip cd /opt zip -r $DIR/cegcc-x86_64.zip cegcc rm -rf cegcc - name: Build cegcc for aarch64 run: | export DIR=$(pwd) mkdir cross cd cross find /usr/bin/aarch64-linux-gnu-* | sed 's+/usr/bin/aarch64-linux-gnu-++g' | xargs -n1 -I{} ln -s /usr/bin/aarch64-linux-gnu-{} {} ln -s ../build/gcc-bootstrap/gcc/xgcc arm-mingw32ce-gcc # dirty workaround to fix "command not found" export PATH=$(pwd):$PATH cd .. rm -rf build mkdir build cd build ../build.sh -j4 --host=aarch64-linux-gnu cd /opt/cegcc find . | xargs file | grep "not stripped" | grep -oE '^[^:]+' | xargs /usr/bin/aarch64-linux-gnu-strip cd /opt zip -r $DIR/cegcc-aarch64.zip cegcc - name: Generate archive name id: archive_name run: | echo ::set-output name=name_x86_64::cegcc-x86_64-${GITHUB_REF/refs\/*s\//} echo ::set-output name=name_aarch64::cegcc-aarch64-${GITHUB_REF/refs\/*s\//} - name: Upload cegcc-x86_64.zip uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.create_release.outputs.upload_url }} asset_path: cegcc-x86_64.zip asset_name: ${{ steps.archive_name.outputs.name_x86_64 }}.zip asset_content_type: application/zip - name: Upload cegcc-aarch64.zip uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.create_release.outputs.upload_url }} asset_path: cegcc-aarch64.zip asset_name: ${{ steps.archive_name.outputs.name_aarch64 }}.zip asset_content_type: application/zip