diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 353d77c..d409079 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -4,32 +4,13 @@ on: - push - workflow_dispatch -jobs: - create_release: - # https://github.com/actions/create-release/issues/14#issuecomment-555379810 - runs-on: ubuntu-24.04 - steps: - - name: Create Release - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ github.ref }} - release_name: Draft Release - body: '' - draft: true - - name: Save Upload URL to File - run: printf "%s" "${{ steps.create_release.outputs.upload_url }}" > upload_url.txt - - name: Save Upload URL as Artifact - uses: actions/upload-artifact@v4 - with: - name: upload_url - path: upload_url.txt +env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +jobs: build: - needs: create_release strategy: + fail-fast: false matrix: include: - name: ubuntu20.04 @@ -40,28 +21,40 @@ jobs: image: ubuntu:24.04 - name: fedora39 image: fedora:39 - runs-on: ubuntu-24.04 + - name: archlinux + image: archlinux:base-devel + + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: true - - name: Fetch Upload URL - uses: actions/download-artifact@v4 - with: - name: upload_url - name: Build Release id: build_release run: | DARWIN_BUILD_BASE=${{ matrix.image }} docker compose run --build --rm builder -c ./prepare-toolchain - echo "::set-output name=tag::${GITHUB_REF#refs/tags/}" - echo "::set-output name=upload_url::$(cat upload_url.txt)" - rm upload_url.txt - - name: Upload Release - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Upload artifact + id: upload_artifact + uses: actions/upload-artifact@v4 with: - upload_url: ${{ steps.build_release.outputs.upload_url }} - asset_path: packages/darwin-tools.tar.gz - asset_name: darwin-tools-${{ matrix.name }}.tar.gz - asset_content_type: application/gzip + name: DT-${{ matrix.name }} + path: packages/darwin-tools.tar.gz + + release: + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Download artifact + id: download_artifact + uses: actions/download-artifact@v4 + with: + pattern: DT-* + path: packages + + - name: Create and publish release + id: publish_release + run: | + TAG="${GITHUB_REF##*/}-${GITHUB_SHA:0:7}" + gh release create "$TAG" --draft --title "Draft Release" + gh release upload "$TAG" packages/**/*.tar.gz diff --git a/install-deps b/install-deps index 3ae59ec..75c1114 100755 --- a/install-deps +++ b/install-deps @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -e @@ -22,8 +22,11 @@ if [[ "$distro" = "ubuntu:"* ]]; then elif [[ "$distro" = "fedora:"* ]]; then yum -y install binutils git-all clang libcxx-devel libcxxabi-devel libcxxabi-static cmake make automake which libtool openssl-devel entry_env="export CC=clang CXX=clang++" +elif [[ "$distro" = "archlinux:"* ]]; then + pacman -Sy --needed --noconfirm base-devel cmake clang libc++ git python openssl perl + entry_env="export CC=clang CXX=clang++" else - echo "install-deps: I don't know how to install dependencies for $distro" + echo "$0: I don't know how to install dependencies for $distro" exit 1 fi diff --git a/prepare-toolchain b/prepare-toolchain index 319f954..5e3432d 100755 --- a/prepare-toolchain +++ b/prepare-toolchain @@ -23,24 +23,22 @@ mkdir -p "${INSTALLPREFIX}" rm -rf "${INSTALLPREFIX}" info "Building LLVM tools" -mkdir -p "${STAGING}/build/apple-libtapi" -cd "${STAGING}/build/apple-libtapi" -cmake "${VENDOR}/apple-libtapi/src/llvm" \ - -DCMAKE_CXX_FLAGS="-I${PWD}/../src/llvm/projects/clang/include -I${PWD}/projects/clang/include" \ +mkdir -p "${STAGING}/build/" +cd "${STAGING}/build/" +cmake -B libtapi -S "${VENDOR}/apple-libtapi/src/llvm" \ + -DLLVM_ENABLE_PROJECTS="tapi;clang" \ + -DLLVM_TARGETS_TO_BUILD="X86;ARM;AArch64" \ -DLLVM_INCLUDE_TESTS=OFF \ + -DCMAKE_CXX_FLAGS="-I${PWD}/../src/llvm/projects/clang/include -I${PWD}/projects/clang/include" \ -DCMAKE_BUILD_TYPE=RELEASE \ - -DLLVM_ENABLE_PROJECTS="tapi;clang" \ -DCMAKE_INSTALL_PREFIX="${INSTALLPREFIX}" -make clangBasic -j "${JOBS}" -make libtapi dsymutil install-libtapi install-tapi-headers install-dsymutil -j "${JOBS}" +cmake --build libtapi --target install-libtapi install-tapi-headers install-tapi install-dsymutil -- -j "${JOBS}" info "Building libdispatch" -mkdir -p "${STAGING}/build/apple-libdispatch" -cd "${STAGING}/build/apple-libdispatch" -cmake "${VENDOR}/apple-libdispatch" \ +cmake -B libdispatch -S "${VENDOR}/apple-libdispatch" \ -DCMAKE_BUILD_TYPE=RELEASE \ -DCMAKE_INSTALL_PREFIX="$INSTALLPREFIX" -make -j "${JOBS}" install +cmake --build libdispatch --target install -- -j "${JOBS}" info "Building cctools" mkdir -p "${STAGING}/build/cctools" @@ -64,8 +62,9 @@ PLIST_PREFIX="${STAGING}/libplist-install" mkdir -p "${PLIST_PREFIX}" "${STAGING}/build/libplist" LC_ALL=C NOCONFIGURE=1 ./autogen.sh cd "${STAGING}/build/libplist" -LC_ALL=C "${VENDOR}/libplist/configure" --prefix="${PLIST_PREFIX}" --without-cython PACKAGE_VERSION=latest +LC_ALL=C "${VENDOR}/libplist/configure" --prefix="${PLIST_PREFIX}" --without-cython --enable-static --disable-shared PACKAGE_VERSION=latest make -j "${JOBS}" install +cp -av "${PLIST_PREFIX}/bin/plistutil" "${INSTALLPREFIX}/bin" info "Building ldid" cd "${VENDOR}/ldid" @@ -77,7 +76,6 @@ make -j "${JOBS}" \ info "Packaging toolchain" mkdir -p "${PACKAGES}" -cd "${STAGING}/prefix" -tar -czf "${PACKAGES}/darwin-tools.tar.gz" linux +tar -czf "${PACKAGES}/darwin-tools.tar.gz" -C "${STAGING}/prefix" linux info "Done!" diff --git a/vendor/apple-libdispatch b/vendor/apple-libdispatch index ee39300..fdf3fc8 160000 --- a/vendor/apple-libdispatch +++ b/vendor/apple-libdispatch @@ -1 +1 @@ -Subproject commit ee39300b12a77efd3f2f020e009e42d557adbb29 +Subproject commit fdf3fc85a9557635668c78801d79f10161d83f12 diff --git a/vendor/apple-libtapi b/vendor/apple-libtapi index b8c5ac4..54c9044 160000 --- a/vendor/apple-libtapi +++ b/vendor/apple-libtapi @@ -1 +1 @@ -Subproject commit b8c5ac40267aa5f6004dd38cc2b2cd84f2d9d555 +Subproject commit 54c9044082ba35bdb2b0edf282ba1a340096154c diff --git a/vendor/cctools-port b/vendor/cctools-port index 942b4fc..81f205e 160000 --- a/vendor/cctools-port +++ b/vendor/cctools-port @@ -1 +1 @@ -Subproject commit 942b4fcf3c5dc0770d89b64fb33903123a1c92aa +Subproject commit 81f205e8ca6bbf2fdbcb6948132454fd1f97839e diff --git a/vendor/ldid b/vendor/ldid index 798f55b..ef33042 160000 --- a/vendor/ldid +++ b/vendor/ldid @@ -1 +1 @@ -Subproject commit 798f55bab61c6a3cf45f81014527bbe2b473958b +Subproject commit ef330422ef001ef2aa5792f4c6970d69f3c1f478 diff --git a/vendor/libplist b/vendor/libplist index 1558615..44099d4 160000 --- a/vendor/libplist +++ b/vendor/libplist @@ -1 +1 @@ -Subproject commit 155861581817cdb02ec2470ab33fdeee128a5f23 +Subproject commit 44099d4b79c8d6a7d599d652ebef62db8dae6696