Add gp-suspend.service

This commit is contained in:
Kevin Yue 2024-03-27 09:19:08 -04:00
parent 187ca778f2
commit cdd4079036
10 changed files with 148 additions and 9 deletions

View File

@ -62,20 +62,38 @@ jobs:
strategy: strategy:
matrix: matrix:
os: ${{fromJson(needs.setup-matrix.outputs.matrix)}} os: ${{fromJson(needs.setup-matrix.outputs.matrix)}}
package: [deb, rpm, pkg, binary]
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
steps: steps:
- name: Prepare workspace - name: Prepare workspace
run: rm -rf build-gp && mkdir build-gp run: |
rm -rf build-gp-${{ matrix.package }}
mkdir -p build-gp-${{ matrix.package }}
- name: Download tarball - name: Download tarball
uses: actions/download-artifact@v3 uses: actions/download-artifact@v3
with: with:
name: artifact-source name: artifact-source
path: build-gp path: build-gp-${{ matrix.package }}
- name: Docker Login - name: Docker Login
run: echo ${{ secrets.DOCKER_HUB_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin run: echo ${{ secrets.DOCKER_HUB_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin
- name: Build gp in Docker - name: Build ${{ matrix.package }} package in Docker
run: | run: |
docker run --rm -v $(pwd)/build-gp:/gp yuezk/gpdev:gp-builder docker run --rm \
-v $(pwd)/build-gp-${{ matrix.package }}:/${{ matrix.package }} \
yuezk/gpdev:${{ matrix.package }}-builder
- name: Install ${{ matrix.package }} package in Docker
run: |
docker run --rm \
-v $(pwd)/build-gp-${{ matrix.package }}:/${{ matrix.package }} \
yuezk/gpdev:${{ matrix.package }}-builder \
bash install.sh
- name: Upload ${{ matrix.package }} package
uses: actions/upload-artifact@v3
with:
name: artifact-gp-${{ matrix.os }}-${{ matrix.package }}
if-no-files-found: error
path: |
build-gp-${{ matrix.package }}/artifacts/*
build-gpgui: build-gpgui:
needs: needs:

View File

@ -109,11 +109,16 @@ jobs:
run: echo ${{ secrets.DOCKER_HUB_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin run: echo ${{ secrets.DOCKER_HUB_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin
- name: Build ${{ matrix.package }} package in Docker - name: Build ${{ matrix.package }} package in Docker
run: | run: |
docker run --rm -v $(pwd)/build-${{ matrix.package }}:/${{ matrix.package }} -e INCLUDE_GUI=1 yuezk/gpdev:${{ matrix.package }}-builder docker run --rm \
-v $(pwd)/build-${{ matrix.package }}:/${{ matrix.package }} \
-e INCLUDE_GUI=1 \
yuezk/gpdev:${{ matrix.package }}-builder
- name: Install ${{ matrix.package }} package in Docker - name: Install ${{ matrix.package }} package in Docker
run: | run: |
docker run --rm -v $(pwd)/build-${{ matrix.package }}:/${{ matrix.package }} yuezk/gpdev:${{ matrix.package }}-builder \ docker run --rm \
-v $(pwd)/build-${{ matrix.package }}:/${{ matrix.package }} \
yuezk/gpdev:${{ matrix.package }}-builder \
bash install.sh bash install.sh
- name: Upload ${{ matrix.package }} package - name: Upload ${{ matrix.package }} package

View File

@ -13,6 +13,12 @@ PKG = $(PKG_NAME)-$(VERSION)
SERIES ?= $(shell lsb_release -cs) SERIES ?= $(shell lsb_release -cs)
PUBLISH ?= 0 PUBLISH ?= 0
# Indicate if it is a Debian packaging
DEB_PACKAGING ?= 0
INCLUDE_SYSTEMD ?= $(shell [ -d /run/systemd/system ] && echo 1 || echo 0)
# Enable the systemd service after installation
ENABLE_SERVICE ?= 1
export DEBEMAIL = k3vinyue@gmail.com export DEBEMAIL = k3vinyue@gmail.com
export DEBFULLNAME = Kevin Yue export DEBFULLNAME = Kevin Yue
@ -116,9 +122,34 @@ install:
install -Dm644 packaging/files/usr/share/icons/hicolor/256x256@2/apps/gpgui.png $(DESTDIR)/usr/share/icons/hicolor/256x256@2/apps/gpgui.png install -Dm644 packaging/files/usr/share/icons/hicolor/256x256@2/apps/gpgui.png $(DESTDIR)/usr/share/icons/hicolor/256x256@2/apps/gpgui.png
install -Dm644 packaging/files/usr/share/polkit-1/actions/com.yuezk.gpgui.policy $(DESTDIR)/usr/share/polkit-1/actions/com.yuezk.gpgui.policy install -Dm644 packaging/files/usr/share/polkit-1/actions/com.yuezk.gpgui.policy $(DESTDIR)/usr/share/polkit-1/actions/com.yuezk.gpgui.policy
# Install the systemd service
if [ $(INCLUDE_SYSTEMD) -eq 1 ]; then \
if [ $(DEB_PACKAGING) -eq 1 ]; then \
install -Dm644 packaging/files/usr/lib/systemd/system/gp-suspend.service $(DESTDIR)/lib/systemd/system/gp-suspend.service; \
else \
install -Dm644 packaging/files/usr/lib/systemd/system/gp-suspend.service $(DESTDIR)/usr/lib/systemd/system/gp-suspend.service; \
fi; \
if [ $(ENABLE_SERVICE) -eq 1 ]; then \
systemctl --system daemon-reload \
systemctl enable gp-suspend.service || true; \
fi \
else \
echo "Skipping systemd service installation"; \
fi
@echo "Installation complete."
uninstall: uninstall:
@echo "Uninstalling $(PKG_NAME)..." @echo "Uninstalling $(PKG_NAME)..."
# Disable the systemd service
if [ -d /run/systemd/system ]; then \
systemctl disable gp-suspend.service >/dev/null || true; \
fi
rm -f $(DESTDIR)/lib/systemd/system/gp-suspend.service
rm -f $(DESTDIR)/usr/lib/systemd/system/gp-suspend.service
rm -f $(DESTDIR)/usr/bin/gpclient rm -f $(DESTDIR)/usr/bin/gpclient
rm -f $(DESTDIR)/usr/bin/gpauth rm -f $(DESTDIR)/usr/bin/gpauth
rm -f $(DESTDIR)/usr/bin/gpservice rm -f $(DESTDIR)/usr/bin/gpservice
@ -223,6 +254,7 @@ init-pkgbuild: clean-pkgbuild tarball
cp .build/tarball/${PKG}.tar.gz .build/pkgbuild cp .build/tarball/${PKG}.tar.gz .build/pkgbuild
cp packaging/pkgbuild/PKGBUILD.in .build/pkgbuild/PKGBUILD cp packaging/pkgbuild/PKGBUILD.in .build/pkgbuild/PKGBUILD
cp packaging/pkgbuild/gp.install .build/pkgbuild
sed -i "s/@PKG_NAME@/$(PKG_NAME)/g" .build/pkgbuild/PKGBUILD sed -i "s/@PKG_NAME@/$(PKG_NAME)/g" .build/pkgbuild/PKGBUILD
sed -i "s/@VERSION@/$(VERSION)/g" .build/pkgbuild/PKGBUILD sed -i "s/@VERSION@/$(VERSION)/g" .build/pkgbuild/PKGBUILD
@ -244,7 +276,10 @@ binary: clean-binary tarball
mkdir -p .build/binary/$(PKG_NAME)_$(VERSION)/artifacts mkdir -p .build/binary/$(PKG_NAME)_$(VERSION)/artifacts
make -C .build/binary/${PKG} build OFFLINE=$(OFFLINE) BUILD_FE=0 INCLUDE_GUI=$(INCLUDE_GUI) make -C .build/binary/${PKG} build OFFLINE=$(OFFLINE) BUILD_FE=0 INCLUDE_GUI=$(INCLUDE_GUI)
make -C .build/binary/${PKG} install DESTDIR=$(PWD)/.build/binary/$(PKG_NAME)_$(VERSION)/artifacts make -C .build/binary/${PKG} install \
DESTDIR=$(PWD)/.build/binary/$(PKG_NAME)_$(VERSION)/artifacts \
INCLUDE_SYSTEMD=1 \
ENABLE_SERVICE=0
cp packaging/binary/Makefile.in .build/binary/$(PKG_NAME)_$(VERSION)/Makefile cp packaging/binary/Makefile.in .build/binary/$(PKG_NAME)_$(VERSION)/Makefile

View File

@ -1,3 +1,7 @@
INCLUDE_SYSTEMD ?= $(shell [ -d /run/systemd/system ] && echo 1 || echo 0)
# Enable the systemd service after installation
ENABLE_SERVICE ?= 1
install: install:
@echo "===> Installing..." @echo "===> Installing..."
@ -14,9 +18,26 @@ install:
install -Dm644 artifacts/usr/share/icons/hicolor/256x256@2/apps/gpgui.png $(DESTDIR)/usr/share/icons/hicolor/256x256@2/apps/gpgui.png install -Dm644 artifacts/usr/share/icons/hicolor/256x256@2/apps/gpgui.png $(DESTDIR)/usr/share/icons/hicolor/256x256@2/apps/gpgui.png
install -Dm644 artifacts/usr/share/polkit-1/actions/com.yuezk.gpgui.policy $(DESTDIR)/usr/share/polkit-1/actions/com.yuezk.gpgui.policy install -Dm644 artifacts/usr/share/polkit-1/actions/com.yuezk.gpgui.policy $(DESTDIR)/usr/share/polkit-1/actions/com.yuezk.gpgui.policy
# Install the service
if [ $(INCLUDE_SYSTEMD) -eq 1 ]; then \
install -Dm644 artifacts/etc/systemd/system/gpgui.service $(DESTDIR)/usr/lib/systemd/system/gpgui.service; \
if [ $(ENABLE_SERVICE) -eq 1 ]; then \
systemctl --system daemon-reload; \
systemctl enable gpgui.service; \
fi; \
fi
uninstall: uninstall:
@echo "===> Uninstalling from $(DESTDIR)..." @echo "===> Uninstalling from $(DESTDIR)..."
# Disable the systemd service
if [ -d /run/systemd/system ]; then \
systemctl disable gp-suspend.service >/dev/null || true; \
fi
rm -f $(DESTDIR)/lib/systemd/system/gp-suspend.service
rm -f $(DESTDIR)/usr/lib/systemd/system/gp-suspend.service
rm -f $(DESTDIR)/usr/bin/gpclient rm -f $(DESTDIR)/usr/bin/gpclient
rm -f $(DESTDIR)/usr/bin/gpservice rm -f $(DESTDIR)/usr/bin/gpservice
rm -f $(DESTDIR)/usr/bin/gpauth rm -f $(DESTDIR)/usr/bin/gpauth

View File

@ -11,4 +11,6 @@ case "$1" in
;; ;;
esac esac
#DEBHELPER#
exit 0 exit 0

View File

@ -2,6 +2,12 @@
export OFFLINE = @OFFLINE@ export OFFLINE = @OFFLINE@
export BUILD_FE = 0 export BUILD_FE = 0
export DEB_PACKAGING = 1
export INCLUDE_SYSTEMD = 1
export ENABLE_SERVICE = 0
%: %:
dh $@ --no-parallel dh $@ --no-parallel
override_dh_installsystemd:
dh_installsystemd gp-suspend.service --no-start

View File

@ -0,0 +1,10 @@
[Unit]
Description=Disconnect from the VPN when suspending
Before=sleep.target
[Service]
Type=oneshot
ExecStart=/usr/bin/gpclient disconnect
[Install]
WantedBy=sleep.target

View File

@ -14,6 +14,8 @@ optdepends=('wmctrl: for window management')
provides=('globalprotect-openconnect' 'gpclient' 'gpservice' 'gpauth' 'gpgui') provides=('globalprotect-openconnect' 'gpclient' 'gpservice' 'gpauth' 'gpgui')
install=gp.install
source=("${_pkgname}-${pkgver}.tar.gz") source=("${_pkgname}-${pkgver}.tar.gz")
sha256sums=('SKIP') sha256sums=('SKIP')
@ -31,5 +33,5 @@ build() {
package() { package() {
cd "$pkgname-$pkgver" cd "$pkgname-$pkgver"
make install DESTDIR="$pkgdir" make install DESTDIR="$pkgdir" INCLUDE_SYSTEMD=1 ENABLE_SERVICE=0
} }

View File

@ -0,0 +1,12 @@
post_install() {
systemctl --system daemon-reload
systemctl enable gpservice.service
}
post_upgrade() {
post_install
}
post_remove() {
systemctl disable gpservice.service
}

View File

@ -22,6 +22,7 @@ BuildRequires: perl
BuildRequires: (webkit2gtk4.0-devel or webkit2gtk3-soup2-devel) BuildRequires: (webkit2gtk4.0-devel or webkit2gtk3-soup2-devel)
BuildRequires: (libappindicator-gtk3-devel or libappindicator3-1) BuildRequires: (libappindicator-gtk3-devel or libappindicator3-1)
BuildRequires: (librsvg2-devel or librsvg-devel) BuildRequires: (librsvg2-devel or librsvg-devel)
BuildRequires: systemd-rpm-macros
Requires: openconnect >= 8.20, (libayatana-appindicator or libappindicator-gtk3) Requires: openconnect >= 8.20, (libayatana-appindicator or libappindicator-gtk3)
Conflicts: globalprotect-openconnect-snapshot Conflicts: globalprotect-openconnect-snapshot
@ -34,16 +35,42 @@ A GUI for GlobalProtect VPN, based on OpenConnect, supports the SSO authenticati
%prep %prep
%setup %setup
%pre
%if 0%{?suse_version}
%service_add_pre gp-suspend.service
%endif
%post
%if 0%{?suse_version}
%service_add_post gp-suspend.service
%else
%systemd_post gp-suspend.service
%endif
%preun
%if 0%{?suse_version}
%service_del_preun gp-suspend.service
%else
%systemd_preun gp-suspend.service
%endif
%postun %postun
# Clean up the gpgui downloaded at runtime
rm -f %{_bindir}/gpgui rm -f %{_bindir}/gpgui
%if 0%{?suse_version}
%service_del_postun_without_restart gp-suspend.service
%else
%systemd_postun gp-suspend.service
%endif
%build %build
# The injected RUSTFLAGS could fail the build # The injected RUSTFLAGS could fail the build
unset RUSTFLAGS unset RUSTFLAGS
make build OFFLINE=@OFFLINE@ BUILD_FE=0 make build OFFLINE=@OFFLINE@ BUILD_FE=0
%install %install
%make_install %make_install INCLUDE_SYSTEMD=1 ENABLE_SERVICE=0
%files %files
%defattr(-,root,root) %defattr(-,root,root)
@ -54,6 +81,7 @@ make build OFFLINE=@OFFLINE@ BUILD_FE=0
%{_datadir}/icons/hicolor/256x256@2/apps/gpgui.png %{_datadir}/icons/hicolor/256x256@2/apps/gpgui.png
%{_datadir}/icons/hicolor/scalable/apps/gpgui.svg %{_datadir}/icons/hicolor/scalable/apps/gpgui.svg
%{_datadir}/polkit-1/actions/com.yuezk.gpgui.policy %{_datadir}/polkit-1/actions/com.yuezk.gpgui.policy
%{_unitdir}/gp-suspend.service
%dir %{_datadir}/icons/hicolor %dir %{_datadir}/icons/hicolor
%dir %{_datadir}/icons/hicolor/32x32 %dir %{_datadir}/icons/hicolor/32x32