From 23ec555e36cdf97607a1646693ecbe1b99961cdc Mon Sep 17 00:00:00 2001 From: Sean Molenaar Date: Tue, 22 Aug 2023 10:20:21 +0200 Subject: [PATCH] feat: pkg for RHEL --- .github/workflows/build-pkg.yml | 60 +++++++++++++++++++++++++++++++++ package/homebrew.spec | 59 ++++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 package/homebrew.spec diff --git a/.github/workflows/build-pkg.yml b/.github/workflows/build-pkg.yml index 7a05f94e6e6f71..e52dffed3c85a6 100644 --- a/.github/workflows/build-pkg.yml +++ b/.github/workflows/build-pkg.yml @@ -172,3 +172,63 @@ jobs: run: gh release upload --repo Homebrew/brew "${GITHUB_REF//refs\/tags\//}" Homebrew-${{ steps.print-version.outputs.version }}.pkg + build-rpm: + # if: github.repository_owner == 'Homebrew' + runs-on: ubuntu-latest + container: + image: almalinux:8 + permissions: + # To write assets to GitHub release + contents: write + env: + HOMEBREW_NO_ANALYTICS_THIS_RUN: 1 + HOMEBREW_NO_ANALYTICS_MESSAGE_OUTPUT: 1 + steps: + - name: Checkout Homebrew + uses: actions/checkout@v3 + + - name: Get Homebrew version from Git + id: print-version + run: echo "version=$(git -C brew describe --tags --always)" >> "${GITHUB_OUTPUT}" + + - name: Setup build environment + run: | + echo "%_topdir $GITHUB_WORKSPACE/rpmbuild" + mkdir -p "$GITHUB_WORKSPACE/rpmbuild/"{SOURCES,SPECS,BUILD,BUILDROOT,RPMS,SRPMS} + cp package/homebrew.spec "$GITHUB_WORKSPACE/rpmbuild/SPECS/" + + - name: Build Homebrew debug package + if: startsWith(github.ref, 'refs/tags/') == false + run: rpmbuild -ba SPECS/homebrew.spec + + - name: Build Homebrew release package + if: startsWith(github.ref, 'refs/tags/') == true + working-directory: $GITHUB_WORKSPACE/rpmbuild + run: rpmbuild -ba SPECS/homebrew.spec --define='version ${{ steps.print-version.outputs.version }}' + + - name: Install package + working-directory: $GITHUB_WORKSPACE/rpmbuild + run: rpm -i RPMS/*/homebrew-*.rpm + + - run: /home/linuxbrew/.linuxbrew/bin/brew shellenv + + - run: brew config + + - run: brew doctor + + - name: Upload installer to GitHub Actions + uses: actions/upload-artifact@v3 + with: + name: Homebrew ${{ steps.print-version.outputs.version }} rpms + path: "$GITHUB_WORKSPACE/rpmbuild/*RPMS/*/homebrew-${{ steps.print-version.outputs.version }}*.rpm" + + # - name: Install gh + # run: brew install gh + + # - name: Upload installer to GitHub release + # if: startsWith(github.ref, 'refs/tags/') + # env: + # GH_TOKEN: ${{ github.token }} + # run: gh release upload --repo Homebrew/brew + # "${GITHUB_REF//refs\/tags\//}" + # Homebrew-${{ steps.print-version.outputs.version }}.pkg diff --git a/package/homebrew.spec b/package/homebrew.spec new file mode 100644 index 00000000000000..8a443fb718d087 --- /dev/null +++ b/package/homebrew.spec @@ -0,0 +1,59 @@ +Summary: Homebrew package manager +Name: homebrew +Version: 4.1.5 +Release: 1 +License: BSD-2-clause +Group: Development/Tools +Source: https://github.com/Homebrew/brew/archive/refs/tags/%{version}.tar.gz +%define homebrew_user linuxbrew +%define homebrew_directory /home/%{homebrew_user}/.%{homebrew_user} + +# BuildRequires: git +Requires: git +Requires: glibc +Requires: ruby + +%description +The Missing Package Manager for macOS (or Linux) + +%prep +%autosetup -n brew-%{version} + +%build +git init +git remote add origin https://github.com/Homebrew/brew +git fetch --tags --set-upstream origin +git checkout --force %{version} +git branch | grep -v '\*' | xargs -n 1 git branch --delete --force + +%install +install -d "$RPM_BUILD_ROOT%{homebrew_directory}" +cp -r bin "$RPM_BUILD_ROOT%{homebrew_directory}" +cp -r completions "$RPM_BUILD_ROOT%{homebrew_directory}" +cp -r manpages "$RPM_BUILD_ROOT%{homebrew_directory}" +cp -r .git "$RPM_BUILD_ROOT%{homebrew_directory}" +cp -r *.md "$RPM_BUILD_ROOT%{homebrew_directory}" +cp -r *.txt "$RPM_BUILD_ROOT%{homebrew_directory}" +cp -rd Library "$RPM_BUILD_ROOT%{homebrew_directory}" + +pushd "$RPM_BUILD_ROOT%{homebrew_directory}" +mkdir -vp Cellar Frameworks etc include lib opt sbin share var/homebrew/linked + +%check +export HOMEBREW_NO_ANALYTICS_THIS_RUN=1 +export HOMEBREW_NO_ANALYTICS_MESSAGE_OUTPUT=1 +%{homebrew_directory}/bin/brew config +%{homebrew_directory}/bin/brew doctor + +%pre +getent passwd %{homebrew_user} >/dev/null || \ + useradd -r -d %{homebrew_directory} -s /sbin/nologin \ + -c "The Homebrew default user" %{homebrew_user} +chown -R "%{homebrew_user}" %{homebrew_directory} + +%files +%{homebrew_directory} +%license %{homebrew_directory}/LICENSE.txt +%doc %{homebrew_directory}/CHANGELOG.md %{homebrew_directory}/CONTRIBUTING.md %{homebrew_directory}/README.md + +%changelog