From 5586daf9e5658b0b6901be766e56afb2b9a7ad62 Mon Sep 17 00:00:00 2001 From: Kevin Yue Date: Sat, 24 Feb 2024 22:32:58 +0800 Subject: [PATCH] Add rpm target --- .github/workflows/build.yaml | 29 ++++++++ .gitignore | 1 + Makefile | 37 ++++++++++- .../rpm/globalprotect-openconnect.changes.in | 5 ++ .../rpm/globalprotect-openconnect.spec.in | 66 +++++++++++++++++++ 5 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 packaging/rpm/globalprotect-openconnect.changes.in create mode 100644 packaging/rpm/globalprotect-openconnect.spec.in diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index c2f2b41..f90dde0 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -68,6 +68,35 @@ jobs: path: | globalprotect-openconnect_*.deb + rpm: + runs-on: ubuntu-latest + needs: [tarball] + container: + image: yuezk/gpdev:rpm-builder + credentials: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_TOKEN }} + steps: + - name: Download tarball + uses: actions/download-artifact@v3 + with: + name: artifact-tarball + - name: Build RPM package + run: | + tar -xzf globalprotect-openconnect-*.tar.gz + cd globalprotect-openconnect-* + make rpm + - name: Install RPM package + run: | + cd globalprotect-openconnect-* + ls -l .rpm + - name: Upload RPM package + uses: actions/upload-artifact@v3 + with: + name: artifact-rpm + path: | + globalprotect-openconnect-*/.rpm/*.rpm + # Include arm64 if ref is a tag # setup-matrix: # runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index 24dcee8..ca4f662 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ *.tar.xz .cargo +.rpm diff --git a/Makefile b/Makefile index 2e85d38..0256b9f 100644 --- a/Makefile +++ b/Makefile @@ -120,4 +120,39 @@ ppa: init-debian publish-ppa: ppa dput ppa:yuezk/globalprotect-openconnect ../*.changes -rpm: +# Generate RPM sepc file +rpm-spec: + rm -rf .rpm + mkdir -p .rpm + + cp packaging/rpm/globalprotect-openconnect.spec.in .rpm/globalprotect-openconnect.spec + cp packaging/rpm/globalprotect-openconnect.changes.in .rpm/globalprotect-openconnect.changes + + sed -i "s/@VERSION@/$(VERSION)/g" .rpm/globalprotect-openconnect.spec + sed -i "s/@REVISION@/$(REVISION)/g" .rpm/globalprotect-openconnect.spec + sed -i "s/@DATE@/$(shell date "+%a %b %d %Y")/g" .rpm/globalprotect-openconnect.spec + + sed -i "s/@VERSION@/$(VERSION)/g" .rpm/globalprotect-openconnect.changes + sed -i "s/@DATE@/$(shell LC_ALL=en.US date -u "+%a %b %e %T %Z %Y")/g" .rpm/globalprotect-openconnect.changes + +# Ensure ../globalprotect-openconnect-*.tar.gz exists. +rpm: rpm-spec + if [ ! -f ../$(PKG).tar.gz ]; then \ + echo "Missing ../$(PKG).tar.gz"; \ + exit 1; \ + fi + + rm -rf $(HOME)/rpmbuild + rpmdev-setuptree + + cp ../$(PKG).tar.gz $(HOME)/rpmbuild/SOURCES/$(PKG_NAME).tar.gz + + rpmbuild -ba .rpm/globalprotect-openconnect.spec + + # Copy RPM package + cp $(HOME)/rpmbuild/RPMS/$(shell uname -m)/$(PKG_NAME)*.rpm .rpm + + # Copy the SRPM only for x86_64. + if [ "$(shell uname -m)" = "x86_64" ]; then \ + cp $(HOME)/rpmbuild/SRPMS/$(PKG_NAME)*.rpm .rpm \ + fi diff --git a/packaging/rpm/globalprotect-openconnect.changes.in b/packaging/rpm/globalprotect-openconnect.changes.in new file mode 100644 index 0000000..3d9280d --- /dev/null +++ b/packaging/rpm/globalprotect-openconnect.changes.in @@ -0,0 +1,5 @@ +------------------------------------------------------------------- +@DATE@ - k3vinyue@gmail.com - @VERSION@ + +- Update to @VERSION@ + * Bugfix and improvements. diff --git a/packaging/rpm/globalprotect-openconnect.spec.in b/packaging/rpm/globalprotect-openconnect.spec.in new file mode 100644 index 0000000..4d592e9 --- /dev/null +++ b/packaging/rpm/globalprotect-openconnect.spec.in @@ -0,0 +1,66 @@ +Name: globalprotect-openconnect +Version: @VERSION@ +Release: @REVISION@%{?dist} +Summary: A GlobalProtect VPN client powered by OpenConnect +Group: Productivity/Networking/PPP + +License: GPL-3.0 +URL: https://github.com/yuezk/GlobalProtect-openconnect +Source: %{name}.tar.gz + +BuildRequires: make +BuildRequires: openconnect-devel +BuildRequires: openssl-devel +BuildRequires: curl +BuildRequires: wget +BuildRequires: file + +BuildRequires: (webkit2gtk4.0-devel or webkit2gtk3-soup2-devel) +BuildRequires: (libappindicator-gtk3-devel or libappindicator3-1) +BuildRequires: (librsvg2-devel or librsvg-devel) + +Requires: openconnect >= 8.20, (libayatana-appindicator or libappindicator-gtk3) +Conflicts: globalprotect-openconnect-snapshot + +%global debug_package %{nil} + +%description +A GUI for GlobalProtect VPN, based on OpenConnect, supports the SSO authentication method. + +%prep +%setup + +%build +make build OFFLINE=1 + +%install +%make_install + +%files +%defattr(-,root,root) +%{_bindir}/gpclient +%{_bindir}/gpservice +%{_bindir}/gpauth +%{_bindir}/gpgui-helper +%{_datadir}/applications/gpgui.desktop +%{_datadir}/icons/hicolor/32x32/apps/gpgui.png +%{_datadir}/icons/hicolor/128x128/apps/gpgui.png +%{_datadir}/icons/hicolor/256x256@2/apps/gpgui.png +%{_datadir}/icons/hicolor/scalable/apps/gpgui.svg +%{_datadir}/polkit-1/actions/com.yuezk.gpgui.policy + +%dir %{_datadir}/icons/hicolor +%dir %{_datadir}/icons/hicolor/32x32 +%dir %{_datadir}/icons/hicolor/32x32/apps +%dir %{_datadir}/icons/hicolor/128x128 +%dir %{_datadir}/icons/hicolor/128x128/apps +%dir %{_datadir}/icons/hicolor/256x256@2 +%dir %{_datadir}/icons/hicolor/256x256@2/apps +%dir %{_datadir}/icons/hicolor/scalable +%dir %{_datadir}/icons/hicolor/scalable/apps +%dir %{_datadir}/polkit-1 +%dir %{_datadir}/polkit-1/actions + +%changelog +* @DATE@ Kevin Yue - @VERSION@ +- Bugfix and improvements