diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d596b9c..e4f1083 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -11,42 +11,49 @@ jobs: runs-on: ${{ matrix.platform }} env: BUILDROOT: "buildroot_${{ matrix.platform }}" - GIT_DEPENDENCIES: tihmstar/libgeneral + GIT_DEPENDENCIES: libgeneral steps: - - uses: actions/checkout@v1 - - name: prepre buildroot - run: mkdir $BUILDROOT + - uses: actions/checkout@v4 + with: + fetch-depth: 0 - name: Install pre-dependencies - run: | + run: | if [ "$RUNNER_OS" == "Linux" ]; then - sudo apt-get install -y clang #i hate gcc soo much D: + sudo apt-get update + sudo apt-get install -y jq + elif [ "$RUNNER_OS" == "macOS" ]; then - brew install autoconf automake libtool pkg-config + brew install autoconf automake libtool jq pkg-config + else - echo "$RUNNER_OS not supported" - exit 1 + echo "$RUNNER_OS not supported" + exit 1 fi shell: bash - name: download dependencies - env: + env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | get_latest_release() { - curl --silent --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' "https://api.github.com/repos/$1/releases/latest" | # Get latest release from GitHub api - grep '"tag_name":' | # Get tag line - rev | cut -d '"' -f2 | rev # Pluck JSON value + url="https://api.github.com/repos/$1/releases/latest" + echo "url: ${url}" >&2 + curl --silent --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' "${url}" | # Get latest release from GitHub api + jq .tag_name | # Get tag + tr -d '"' # Strip quotes } mkdir depdir cd depdir mkdir $BUILDROOT IFS=',' read -r -a deparray <<< "$GIT_DEPENDENCIES"; for d in ${deparray[@]}; do - echo "Got dependency: $d" - r=$(echo $d | cut -d '/' -f 2) - echo "Got reponame: $r" - tag=$(get_latest_release $d); + dep=$d + if ! echo ${dep} | grep -q '/'; then + dep=${{ github.repository_owner }}/${dep} + fi + echo "Got dependency: ${dep}" + tag=$(get_latest_release ${dep}); echo "Found tag: $tag" - wget "https://github.com/$d/releases/download/$tag/$BUILDROOT.zip" + wget "https://github.com/${dep}/releases/download/$tag/$BUILDROOT.zip" unzip -u "$BUILDROOT.zip" rm "$BUILDROOT.zip" done @@ -54,16 +61,34 @@ jobs: sudo cp -r $BUILDROOT/* / cd .. rm -rf depdir + - name: prepre buildroot + run: mkdir -p $BUILDROOT - name: autogen - env: - CC: clang - CXX: clang++ run: ./autogen.sh --enable-static --disable-shared - name: make - run: make + run: | + if [ "$RUNNER_OS" == "macOS" ]; then + IFS=',' read -r -a deparray <<< "$MAC_DYNAMIC_LIBS"; for d in ${deparray[@]}; do + echo "moving library $d" + cd $(brew --prefix $d) + find . -name "*.dylib" -exec mv {} {}.bak \; + done + cd $GITHUB_WORKSPACE + + make -j || make + + IFS=',' read -r -a deparray <<< "$MAC_DYNAMIC_LIBS"; for d in ${deparray[@]}; do + echo "restoring library $d" + cd $(brew --prefix $d) + find . -name "*.dylib.bak" | while read f; do o=$(echo $f | rev | cut -d '.' -f2- | rev); mv $f $o; done + done + cd $GITHUB_WORKSPACE + else + make -j || make + fi - name: make install run: make DESTDIR=$GITHUB_WORKSPACE/$BUILDROOT install - - uses: actions/upload-artifact@v1 + - uses: actions/upload-artifact@v4 with: name: ${{ env.BUILDROOT }} path: ${{ env.BUILDROOT }} @@ -71,16 +96,17 @@ jobs: release: needs: build runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v4 + with: + fetch-depth: 0 - name: Download ubuntu artifact - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4 with: - name: buildroot_ubuntu-latest - path: buildroot_ubuntu-latest + name: buildroot_ubuntu-latest + path: buildroot_ubuntu-latest - name: Download macos artifact - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4 with: name: buildroot_macos-latest path: buildroot_macos-latest @@ -94,32 +120,16 @@ jobs: zip -r buildroot_ubuntu-latest.zip buildroot_ubuntu-latest - name: Create Release id: create_release - uses: actions/create-release@v1.0.0 + uses: softprops/action-gh-release@v2 + if: github.ref == 'refs/heads/master' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: + prerelease: false + draft: false tag_name: ${{ env.BUILD_VERSION_NUM }} - release_name: Build ${{ env.BUILD_VERSION_STR }} + name: Build ${{ env.BUILD_VERSION_STR }} body: ${{ env.COMMIT_MSG }} - draft: false - prerelease: false - - name: Upload Release Asset ubuntu - id: upload-release-asset-ubuntu - uses: actions/upload-release-asset@v1.0.1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: buildroot_ubuntu-latest.zip - asset_name: buildroot_ubuntu-latest.zip - asset_content_type: application/zip - - name: Upload Release Asset macos - id: upload-release-asset-macos - uses: actions/upload-release-asset@v1.0.1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: buildroot_macos-latest.zip - asset_name: buildroot_macos-latest.zip - asset_content_type: application/zip + files: | + buildroot_ubuntu-latest.zip + buildroot_macos-latest.zip \ No newline at end of file