From fde0cc8c3f0b0bc8603a6440068b0fb84842197c Mon Sep 17 00:00:00 2001 From: Alistair Young Date: Sat, 5 Mar 2022 15:45:06 -0600 Subject: [PATCH] Fedora build, plus old build cleanup. --- Makefile | 18 +++- binsrc/Makefile | 6 +- debian/systemd-genie.links | 1 + .../package/fedora/genie.spec => genie.spec | 82 +++++++++++-------- pending/package/arch/Makefile | 18 ---- pending/package/arch/PKGBUILD | 64 --------------- pending/package/fedora/Makefile | 24 ------ pending/package/fedora/binsrc | 1 - pending/package/fedora/othersrc | 1 - 9 files changed, 68 insertions(+), 147 deletions(-) rename pending/package/fedora/genie.spec => genie.spec (70%) delete mode 100644 pending/package/arch/Makefile delete mode 100644 pending/package/arch/PKGBUILD delete mode 100644 pending/package/fedora/Makefile delete mode 120000 pending/package/fedora/binsrc delete mode 120000 pending/package/fedora/othersrc diff --git a/Makefile b/Makefile index 1df946b..96d8536 100644 --- a/Makefile +++ b/Makefile @@ -95,6 +95,19 @@ clean-arch: rm -rf $(PWD)/genie rm -rf out/arch +package-fedora: genie_version := $(shell rpmspec -q --qf %{Version} --srpm genie.spec) + +package-fedora: + rpmdev-setuptree + tar zcvf $(shell rpm --eval '%{_sourcedir}')/genie-${genie_version}.tar.gz * --dereference --transform='s/^/genie-${genie_version}\//' + fakeroot rpmbuild -ba -v genie.spec + mkdir -p out/fedora + mv $(shell rpm --eval '%{_rpmdir}')/x86_64/genie* out/fedora + +clean-fedora: + rpmdev-wipetree + rm -rf out/fedora + # Internal packaging functions internal-debian-package: @@ -138,8 +151,9 @@ internal-supplement: # Fixup symbolic links mkdir -p $(ENVGENDIR) mkdir -p $(USRENVGENDIR) - ln -s $(INSTALLDIR)/80-genie-envar.sh $(ENVGENDIR)/80-genie-envar.sh - ln -s $(INSTALLDIR)/80-genie-envar.sh $(USRENVGENDIR)/80-genie-envar.sh + ln -sr $(INSTALLDIR)/80-genie-envar.sh $(ENVGENDIR)/80-genie-envar.sh + ln -sr $(INSTALLDIR)/80-genie-envar.sh $(USRENVGENDIR)/80-genie-envar.sh + ln -sr $(SVCDIR)/wslg-xwayland.socket $(SVCDIR)/sockets.target.wants/wslg-xwayland.socket # Man page. # Make sure directory exists. diff --git a/binsrc/Makefile b/binsrc/Makefile index 4f60983..3498b14 100644 --- a/binsrc/Makefile +++ b/binsrc/Makefile @@ -13,12 +13,12 @@ build-wrapper: build-runinwsl: mkdir -p out - python -m zipapp -o out/runinwsl -p "/usr/bin/env python3" -c runinwsl + python3 -m zipapp -o out/runinwsl -p "/usr/bin/env python3" -c runinwsl build-genie: mkdir -p out - python -m pip install -r genie/requirements.txt --target genie --upgrade - python -m zipapp -o out/genie -p "/usr/bin/env python3" -c genie + python3 -m pip install -r genie/requirements.txt --target genie --upgrade + python3 -m zipapp -o out/genie -p "/usr/bin/env python3" -c genie # # clean: clean up after a build/package diff --git a/debian/systemd-genie.links b/debian/systemd-genie.links index 79694c5..7c71f32 100644 --- a/debian/systemd-genie.links +++ b/debian/systemd-genie.links @@ -1,2 +1,3 @@ /usr/lib/genie/80-genie-envar.sh /usr/lib/systemd/system-environment-generators/80-genie-envar.sh /usr/lib/genie/80-genie-envar.sh /usr/lib/systemd/user-environment-generators/80-genie-envar.sh +/usr/lib/systemd/system/wslg-xwayland.socket /usr/lib/systemd/system/sockets.target.wants/wslg-xwayland.socket diff --git a/pending/package/fedora/genie.spec b/genie.spec similarity index 70% rename from pending/package/fedora/genie.spec rename to genie.spec index d379945..6be0f74 100644 --- a/pending/package/fedora/genie.spec +++ b/genie.spec @@ -1,7 +1,6 @@ %global project https://github.com/arkane-systems/genie/ -%global version 1.45 +%global version 2.2 -# debuginfo is 'not supported' for .NET binaries %global debug_package %{nil} %global _enable_debug_package 0 %global __os_install_post /usr/lib/rpm/brp-compress %{nil} @@ -14,10 +13,17 @@ Summary: A quick way into systemd "bottle" for WSL License: Unlicense URL: %{project} Source0: %{project}archive/genie-%{version}.tar.gz -Requires: systemd-container + Requires: daemonize -Requires: dotnet-runtime-5.0 -BuildRequires: dotnet-sdk-5.0 +Requires: dbus +Requires: gawk +Requires: polkit +Requires: python3 +Requires: python3-pip +Requires: python3-psutil +Requires: systemd +Requires: systemd-container +# BuildRequires: git BuildRequires: make ExclusiveArch: x86_64 @@ -29,12 +35,13 @@ A quick way into systemd "bottle" for WSL %setup -q -n %{name}-%{version} %build -make -C binsrc +make build-binaries %install -pwd -install -d -p %{buildroot}%{_exec_prefix}/lib/%{name} +echo %{buildroot}%{_mandir} + install -d -p %{buildroot}%{_sysconfdir} +install -d -p %{buildroot}%{_exec_prefix}/lib/%{name} install -d -p %{buildroot}%{_exec_prefix}/lib/systemd/system-environment-generators install -d -p %{buildroot}%{_exec_prefix}/lib/systemd/user-environment-generators install -d -p %{buildroot}%{_exec_prefix}/lib/tmpfiles.d @@ -43,56 +50,63 @@ install -d -p %{buildroot}%{_bindir} install -d -p %{buildroot}%{_unitdir} install -d -p %{buildroot}%{_unitdir}/user-runtime-dir@.service.d install -d -p %{buildroot}%{_unitdir}/sockets.target.wants -install -m 4755 -vp binsrc/genie/bin/Release/net5.0/linux-x64/publish/genie %{buildroot}%{_libexecdir}/%{name} -install -m 0755 -vp binsrc/runinwsl/bin/Release/net5.0/linux-x64/publish/runinwsl %{buildroot}%{_libexecdir}/%{name} -install -m 0755 -vp othersrc/scripts/80-genie-envar.sh %{buildroot}%{_libexecdir}/%{name} -install -m 0755 "othersrc/scripts/map-user-runtime-dir.sh" %{buildroot}%{_libexecdir}/%{name} -install -m 0755 "othersrc/scripts/unmap-user-runtime-dir.sh" %{buildroot}%{_libexecdir}/%{name} -install -m 0644 -vp othersrc/etc/genie.ini %{buildroot}%{_sysconfdir}/ -install -m 0644 -vp othersrc/lib-systemd-system/wslg-xwayland.service %{buildroot}%{_unitdir} -install -m 0644 -vp othersrc/lib-systemd-system/wslg-xwayland.socket %{buildroot}%{_unitdir} -install -m 0644 -vp othersrc/lib-systemd-system/user-runtime-dir@.service.d/override.conf %{buildroot}%{_unitdir}/user-runtime-dir@.service.d -install -m 0644 -vp othersrc/usr-lib/binfmt.d/WSLInterop.conf %{buildroot}%{_exec_prefix}/lib/binfmt.d/ -ln -sf %{_exec_prefix}/lib/%{name}/%{name} %{buildroot}%{_bindir}/%{name} -ln -sf %{_exec_prefix}/lib/%{name}/80-genie-envar.sh %{buildroot}%{_exec_prefix}/lib/systemd/system-environment-generators/ -ln -sf %{_exec_prefix}/lib/%{name}/80-genie-envar.sh %{buildroot}%{_exec_prefix}/lib/systemd/user-environment-generators/ -ln -sf %{_unitdir}/wslg-xwayland.socket %{buildroot}%{_unitdir}/sockets.target.wants/wslg-xwayland.socket +install -d -p %{buildroot}%{_mandir}/man8 + +make DESTDIR=%{buildroot} internal-package +make DESTDIR=%{buildroot} internal-supplement %postun if [ $1 -eq 0 ]; then -rm -rf %{_libexecdir}/%{name} rm -f %{_bindir}/%{name} -rm -f %{_exec_prefix}/lib/systemd/system-environment-generators/80-genie-envar.sh -rm -f %{_exec_prefix}/lib/systemd/user-environment-generators/80-genie-envar.sh -rm -f %{_unitdir}/sockets.target.wants/wslg-xwayland.socket +rm -rf %{_exec_prefix}/lib/%{name}/* rm -f %{_unitdir}/wslg-xwayland.service rm -f %{_unitdir}/wslg-xwayland.socket rm -f %{_unitdir}/user-runtime-dir@.service.d/override.conf rm -f %{_exec_prefix}/lib/binfmt.d/WSLInterop.conf +rm -f %{_exec_prefix}/lib/systemd/system-environment-generators/80-genie-envar.sh +rm -f %{_exec_prefix}/lib/systemd/user-environment-generators/80-genie-envar.sh +rm -f %{_unitdir}/sockets.target.wants/wslg-xwayland.socket +rm -f ${_mandir}/man8/genie.8.gz fi %clean rm -rf %{buildroot} %files + +%{_bindir}/%{name} %{_exec_prefix}/lib/%{name}/* %config %{_sysconfdir}/genie.ini -%{_bindir}/%{name} -%{_exec_prefix}/lib/systemd/system-environment-generators/80-genie-envar.sh -%{_exec_prefix}/lib/systemd/user-environment-generators/80-genie-envar.sh %{_unitdir}/wslg-xwayland.service %{_unitdir}/wslg-xwayland.socket -%{_unitdir}/sockets.target.wants/wslg-xwayland.socket %{_unitdir}/user-runtime-dir@.service.d/override.conf %{_exec_prefix}/lib/binfmt.d/WSLInterop.conf +%{_exec_prefix}/lib/systemd/system-environment-generators/80-genie-envar.sh +%{_exec_prefix}/lib/systemd/user-environment-generators/80-genie-envar.sh +%{_unitdir}/sockets.target.wants/wslg-xwayland.socket +%doc %{_mandir}/man8/genie.8.gz %changelog -* Sat Aug 07 2021 Alistair Young 1.45-1 +* Mon Feb 28 2022 Alistair Young 2.2-1 +- Single-file package python scripts. +- Man page fixes. +- Fixed building on Python 3.10. +- Dropped the "local" install option (little used; use tarball instead). + +* Mon Feb 28 2022 Alistair Young 2.1-1 +- Documentation updates. +- Update /etc/hosts after hostname update. +- Minor fixes. + +* Tue Feb 22 2022 Alistair Young 2.0b-1 + +- Major rewrite in Python, eliminating .NET dependency. - Moved executables from /usr/libexec/genie to /usr/lib/genie. - Allow configuration of hostname suffix. -- Improved Arch PKGBUILD file. - Support for AppArmor namespaces. -- Add flag files to prevent race conditions. +- Work to better handle simultaneity. +- Extra warnings for problematic states. +- Miscellaneous fixes. * Sat Aug 07 2021 Alistair Young 1.44-1 - Standardized use of /usr/lib rather than /lib. @@ -123,7 +137,7 @@ rm -rf %{buildroot} - Mount user runtime directory only where WSLg is present and user matches. * Thu Apr 22 2021 Alistair Young 1.39-1 -- Better WSLg support, based on the code of Daniel Llewellyn (@diddledan), here: https://github.com/diddledan/one-script-wsl2-systemd. +- Better WSLg support, based on the code of Dani Llewellyn (@diddledani), here: https://github.com/diddledani/one-script-wsl2-systemd. * Thu Apr 22 2021 Alistair Young 1.38-1 - Restored original default systemd startup timeout. diff --git a/pending/package/arch/Makefile b/pending/package/arch/Makefile deleted file mode 100644 index 9bdd8ff..0000000 --- a/pending/package/arch/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -# -# Debian Makefile. -# - -# -# Default target: package. -# - -package: - # Packaging for Arch. - updpkgsums - makepkg - mkdir -p ../../out/arch - mv genie* ../../out/arch - -clean: - rm -rf src - rm -rf pkg diff --git a/pending/package/arch/PKGBUILD b/pending/package/arch/PKGBUILD deleted file mode 100644 index 123b409..0000000 --- a/pending/package/arch/PKGBUILD +++ /dev/null @@ -1,64 +0,0 @@ -# Maintainer: Ong Yong Xin -# Maintainer: Xuanrui Qi -# Contributor: Rayfalling -# Contributor: facekapow, rayfalling, Ducksoft - - - -source=(${_pkgname}-${pkgver}.tar.gz::https://github.com/arkane-systems/${_pkgname}/archive/refs/tags/v${pkgver}.tar.gz) -sha256sums=('SKIP') -backup=('etc/genie.ini') -options=(!strip) - -pkgver() { - git describe --long --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g;s/^v//g' -} - -build() { - cd "$srcdir/$_pkgname-$pkgver" - make -C binsrc -} - -package() { - cd "$srcdir/$_pkgname-$pkgver" - - # Binaries - install -Dm4755 binsrc/genie/bin/Release/net5.0/linux-x64/publish/genie -t ${pkgdir}/usr/lib/genie - install -Dm0755 binsrc/runinwsl/bin/Release/net5.0/linux-x64/publish/runinwsl -t ${pkgdir}/usr/lib/genie - - # Environment generator. - install -Dm0755 othersrc/scripts/80-genie-envar.sh -t ${pkgdir}/usr/lib/genie - - # Runtime dir mapping - install -Dm0755 othersrc/scripts/map-user-runtime-dir.sh -t ${pkgdir}/usr/lib/genie - install -Dm0755 othersrc/scripts/unmap-user-runtime-dir.sh -t ${pkgdir}/usr/lib/genie - - # Configuration file. - install -Dm0644 othersrc/etc/genie.ini -t ${pkgdir}/etc - - # genie symlink - mkdir -p ${pkgdir}/usr/bin - ln -s /usr/lib/genie/genie ${pkgdir}/usr/bin/genie - - # 10-genie-envar.sh symlinks - mkdir -p ${pkgdir}/usr/lib/systemd/user-environment-generators - mkdir -p ${pkgdir}/usr/lib/systemd/system-environment-generators - ln -s /usr/lib/genie/80-genie-envar.sh ${pkgdir}/usr/lib/systemd/user-environment-generators/80-genie-envar.sh - ln -s /usr/lib/genie/80-genie-envar.sh ${pkgdir}/usr/lib/systemd/system-environment-generators/80-genie-envar.sh - - # Unit files. - install -Dm0644 othersrc/lib-systemd-system/wslg-xwayland.service -t ${pkgdir}/usr/lib/systemd/system - install -Dm0644 othersrc/lib-systemd-system/wslg-xwayland.socket -t ${pkgdir}/usr/lib/systemd/system - mkdir -p ${pkgdir}/usr/lib/systemd/system/sockets.target.wants - ln -s /usr/lib/systemd/system/wslg-xwayland.socket ${pkgdir}/usr/lib/systemd/system/sockets.target.wants/wslg-xwayland.socket - - install -Dm0644 othersrc/lib-systemd-system/user-runtime-dir@.service.d/override.conf -t ${pkgdir}/usr/lib/systemd/system/user-runtime-dir@.service.d - - # binfmt.d - install -Dm0644 othersrc/usr-lib/binfmt.d/WSLInterop.conf -t ${pkgdir}/usr/lib/binfmt.d - - # man page - install -Dm0644 othersrc/docs/genie.8 -t ${pkgdir}/usr/share/man/man8 -} - -# vim:set ts=2 sw=2 et: diff --git a/pending/package/fedora/Makefile b/pending/package/fedora/Makefile deleted file mode 100644 index 08a3b2c..0000000 --- a/pending/package/fedora/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -# -# Fedora Makefile. -# - -# -# Default target: package. -# - -genie_version:=$(shell rpmspec -q --qf %{Version} --srpm genie.spec) - -sourcedir=$(shell rpm --eval '%{_sourcedir}') -rpmdir=$(shell rpm --eval '%{_rpmdir}') - -package: - # Packaging for Fedora. - rpmdev-setuptree - tar zcvf $(sourcedir)/genie-${genie_version}.tar.gz * --dereference --transform='s/^/genie-${genie_version}\//' - rpmbuild -ba -v genie.spec - mkdir -p ../../out/fedora - mv $(rpmdir)/x86_64/genie* ../../out/fedora - -clean: - # Clean up temporary tree. - rpmdev-wipetree diff --git a/pending/package/fedora/binsrc b/pending/package/fedora/binsrc deleted file mode 120000 index c5f27eb..0000000 --- a/pending/package/fedora/binsrc +++ /dev/null @@ -1 +0,0 @@ -../../binsrc \ No newline at end of file diff --git a/pending/package/fedora/othersrc b/pending/package/fedora/othersrc deleted file mode 120000 index 142632b..0000000 --- a/pending/package/fedora/othersrc +++ /dev/null @@ -1 +0,0 @@ -../../othersrc \ No newline at end of file