diff --git a/patterns-wsl.changes b/patterns-wsl.changes index 33c66a1..45b693f 100644 --- a/patterns-wsl.changes +++ b/patterns-wsl.changes @@ -1,3 +1,69 @@ +------------------------------------------------------------------- +Wed Dec 21 03:04:19 UTC 2022 - Scott Bradnick + +- Adjusting how $PREEXISTING_COMMANDS is fed into the while loop for + wsl_systemd + +------------------------------------------------------------------- +Wed Dec 21 01:33:32 UTC 2022 - Scott Bradnick + +- Update to version 20221221 + * Improved tests for [boot] section when 'command=.*$' is present so + as to not clobber existing commands for wsl_base & wsl_gui + * wsl_systemd should clear ping_group_range if present and retain any + existing commands + +------------------------------------------------------------------- +Tue Dec 20 03:27:52 UTC 2022 - Scott Bradnick + +- Update to version 20221220 + * Reworked to avoid build race condition where it seemed like there was + an issue during 50-check-installtest and what happens with + "testing for pre/postinstall scripts that are not idempotent" + * Adding true %post section + +------------------------------------------------------------------- +Mon Dec 19 21:16:06 UTC 2022 - Scott Bradnick + +- Adding [wsl_base,gui,systemd] tags for echo output +- Changing %post to %pre as there seems to be a problem when + 50-check-installtest runs as %post + +------------------------------------------------------------------- +Mon Dec 19 17:11:42 UTC 2022 - Scott Bradnick + +- Update to version 20221219 + * Adjusting wsl_systemd %post to remove ping_group_range from wsl.conf + when systemd is being enabled. + +------------------------------------------------------------------- +Fri Dec 16 22:33:58 UTC 2022 - Scott Bradnick + +- Update to version 20221216 + * Undoing LoadCredential changes since it's NOT what was breaking WSLg + integration + * Adjusing %post code for edits to %{_sysconfdir}/wsl.conf for: + * wsl_base + * wsl_gui + * wsl_systemd + +------------------------------------------------------------------- +Tue Dec 6 21:27:06 UTC 2022 - Scott Bradnick + +- Update to version 20221206 + * Updating wsl_systemd to comment out 'LoadCredential=*' for 5 systemd + units: + * systemd-tmpfiles-setup.service + * systemd-tmpfiles-setup-dev.service + * systemd-sysctl.service + * systemd-tmpfiles-clean.service + * systemd-sysusers.service + +------------------------------------------------------------------- +Thu Oct 20 23:56:49 UTC 2022 - Scott Bradnick + +- Moving 'xeyes' from a "Requires" to "Recommends" for wsl_gui pattern + ------------------------------------------------------------------- Thu Sep 29 15:39:56 UTC 2022 - Scott Bradnick @@ -7,7 +73,7 @@ Thu Sep 29 15:39:56 UTC 2022 - Scott Bradnick boot.systemd=true entry. ------------------------------------------------------------------- -Tue Feb 22 19:18:54 UTC 2022 - Scott Bradnick - 20220222 +Tue Feb 22 19:18:54 UTC 2022 - Scott Bradnick - Adding lato-fonts as 'Requires' package for wsl_gui. diff --git a/patterns-wsl.spec b/patterns-wsl.spec index 96a3608..41e8586 100644 --- a/patterns-wsl.spec +++ b/patterns-wsl.spec @@ -17,14 +17,16 @@ Name: patterns-wsl -Version: 20220929 +Version: 20221221 Release: 0 Summary: Recommended packages for Windows Subsystem for Linux, WSL, WSLg License: MIT Group: Metapackages URL: https://github.com/sbradnick/patterns BuildRequires: patterns-rpm-macros -#BuildArch: noarch +BuildRequires: systemd +BuildRequires: udev +BuildArch: noarch %description This is an internal package that is used to create the patterns as part @@ -38,15 +40,49 @@ not make sense. Summary: Base WSL packages Group: Metapackages Provides: pattern() = wsl_base -Provides: pattern-icon() = wsl -Provides: pattern-order() = 3420 +Provides: pattern-icon() = pattern-generic +#Provides: pattern-order() = ? Provides: pattern-visible() Requires: bash Recommends: fish Recommends: zsh %description base -This package contains the wsl_base pattern: recommended tools,libraries for using WSL. +This package contains the wsl_base pattern: recommended configs,tools,libraries for using WSL. + +%pre base +if [[ -f %{_sysconfdir}/wsl.conf && ! -L %{_sysconfdir}/wsl.conf ]]; +then + %{_bindir}/echo "* [wsl_base] Creating backup for %{_sysconfdir}/wsl.conf.wsl_base ..." + cp -v %{_sysconfdir}/wsl.conf %{_sysconfdir}/wsl.conf.wsl_base + BOOT_COUNT=$(%{_bindir}/grep -c "\[boot\]" %{_sysconfdir}/wsl.conf.wsl_base) + if [[ $BOOT_COUNT -gt 0 ]]; + then + COMMAND_COUNT=$(%{_bindir}/grep -c "^command" %{_sysconfdir}/wsl.conf.wsl_base) + if [[ $COMMAND_COUNT -gt 0 ]]; + then + %{_bindir}/echo "* [wsl_base] Entry exists for 'command'; chaining in new item ..." + EXISTING_COMMAND=$(%{_bindir}/grep "^command" %{_sysconfdir}/wsl.conf.wsl_base | %{_bindir}/cut -d= -f2-) + %{_bindir}/sed -i /^command/d %{_sysconfdir}/wsl.conf.wsl_base + %{_bindir}/sed -i 's,\[boot\],\[boot\]\n# adjusted by wsl_base pattern\ncommand=/usr/sbin/sysctl -w net.ipv4.ping_group_range=\\\"0 2147483647\\\" ; '"$EXISTING_COMMAND"'\n# END: wsl_base pattern edit,g' %{_sysconfdir}/wsl.conf.wsl_base + fi + else + %{_bindir}/echo "* [wsl_base] File existed, but no [boot]; adjusting %{_sysconfdir}/wsl.conf.wsl_base ..." + %{_bindir}/echo -e "# added by wsl_base pattern\n[boot]\ncommand=/usr/sbin/sysctl -w net.ipv4.ping_group_range=\\\"0 2147483647\\\"\n# END: wsl_base pattern edit" >> %{_sysconfdir}/wsl.conf.wsl_base + fi +elif [[ -f %{_sysconfdir}/wsl.conf && -L %{_sysconfdir}/wsl.conf ]]; +then + %{_bindir}/echo "* [wsl_base] Current %{_sysconfdir}/wsl.conf is a symlink ; ensure contents you want are copied to a non-symlink %{_sysconfdir}/wsl.conf and reinstall the pattern ..." +else + %{_bindir}/echo "* [wsl_base] No file existed; adding %{_sysconfdir}/wsl.conf.wsl_base ..." + %{_bindir}/echo -e "# added by wsl_base pattern\n[boot]\ncommand=/usr/sbin/sysctl -w net.ipv4.ping_group_range=\\\"0 2147483647\\\"\n# END: wsl_base pattern edit" > %{_sysconfdir}/wsl.conf.wsl_base +fi + +%post base +if [[ -e %{_sysconfdir}/wsl.conf.wsl_base ]]; +then + ln -sf %{_sysconfdir}/wsl.conf.wsl_base %{_sysconfdir}/wsl.conf +fi %files base %dir /usr/share/doc/packages/patterns @@ -59,18 +95,52 @@ This package contains the wsl_base pattern: recommended tools,libraries for usin Summary: WSL GUI packages Group: Metapackages Provides: pattern() = wsl_gui -Provides: pattern-icon() = wsl -Provides: pattern-order() = 3420 +Provides: pattern-icon() = pattern-generic +#Provides: pattern-order() = ? Provides: pattern-visible() Requires: lato-fonts -Requires: xeyes Recommends: adwaita-icon-theme Recommends: gnome-icon-theme Recommends: noto-sans-fonts Recommends: powerline-fonts +Recommends: xeyes %description gui -This package contains the wsl_gui pattern: recommended tools,libraries for using WSLg. +This package contains the wsl_gui pattern: recommended configs,tools,libraries for using WSLg. + +%pre gui +if [[ -f %{_sysconfdir}/wsl.conf && ! -L %{_sysconfdir}/wsl.conf ]]; +then + %{_bindir}/echo "* [wsl_gui] Creating backup for %{_sysconfdir}/wsl.conf.wsl_gui ..." + cp -v %{_sysconfdir}/wsl.conf %{_sysconfdir}/wsl.conf.wsl_gui + BOOT_COUNT=$(%{_bindir}/grep -c "\[boot\]" %{_sysconfdir}/wsl.conf.wsl_gui) + if [[ $BOOT_COUNT -gt 0 ]]; + then + COMMAND_COUNT=$(%{_bindir}/grep -c "^command" %{_sysconfdir}/wsl.conf.wsl_gui) + if [[ $COMMAND_COUNT -gt 0 ]]; + then + %{_bindir}/echo "* [wsl_gui] Entry exists for 'command'; chaining in new item ..." + EXISTING_COMMAND=$(%{_bindir}/grep "^command" %{_sysconfdir}/wsl.conf.wsl_gui | %{_bindir}/cut -d= -f2-) + %{_bindir}/sed -i /^command/d %{_sysconfdir}/wsl.conf.wsl_gui + %{_bindir}/sed -i 's,\[boot\],\[boot\]\n# adjusted by wsl_gui pattern\ncommand=/usr/sbin/sysctl -w net.ipv4.ping_group_range=\\\"0 2147483647\\\" ; '"$EXISTING_COMMAND"'\n# END: wsl_gui pattern edit,g' %{_sysconfdir}/wsl.conf.wsl_gui + fi + else + %{_bindir}/echo "* [wsl_gui] File existed, but no [boot]; adjusting %{_sysconfdir}/wsl.conf.wsl_gui ..." + %{_bindir}/echo -e "# added by wsl_gui pattern\n[boot]\ncommand=/usr/sbin/sysctl -w net.ipv4.ping_group_range=\\\"0 2147483647\\\"\n# END: wsl_gui pattern edit" >> %{_sysconfdir}/wsl.conf.wsl_gui + fi +elif [[ -f %{_sysconfdir}/wsl.conf && -L %{_sysconfdir}/wsl.conf ]]; +then + %{_bindir}/echo "* [wsl_gui] Current %{_sysconfdir}/wsl.conf is a symlink ; ensure contents you want are copied to a non-symlink %{_sysconfdir}/wsl.conf and reinstall the pattern ..." +else + %{_bindir}/echo "* [wsl_gui] No file existed; adding %{_sysconfdir}/wsl.conf.wsl_gui ..." + %{_bindir}/echo -e "# added by wsl_gui pattern\n[boot]\ncommand=/usr/sbin/sysctl -w net.ipv4.ping_group_range=\\\"0 2147483647\\\"\n# END: wsl_gui pattern edit" > %{_sysconfdir}/wsl.conf.wsl_gui +fi + +%post gui +if [[ -e %{_sysconfdir}/wsl.conf.wsl_gui ]]; +then + ln -sf %{_sysconfdir}/wsl.conf.wsl_gui %{_sysconfdir}/wsl.conf +fi %files gui %dir /usr/share/doc/packages/patterns @@ -83,26 +153,66 @@ This package contains the wsl_gui pattern: recommended tools,libraries for using Summary: WSL systemd setup Group: Metapackages Provides: pattern() = wsl_systemd -Provides: pattern-icon() = wsl -Provides: pattern-order() = 3420 +Provides: pattern-icon() = pattern-generic +#Provides: pattern-order() = ? Provides: pattern-visible() +Requires: systemd %description systemd -This package contains the wsl_systemd pattern: provides /etc/wsl.conf and /sbin/init symlink where required. +This package contains the wsl_systemd pattern: adjusts or provides %{_sysconfdir}/wsl.conf and /sbin/init symlink where required. -#%%if 0%%{?suse_version} == 1500 -#%%endif -%post systemd +%pre systemd -p /bin/bash if [[ ! -L /sbin/init ]]; then - %{_bindir}/echo "ADDING /sbin/init -> /usr/lib/systemd/systemd SYMLINK." + %{_bindir}/echo "* [wsl_systemd] Adding /sbin/init -> /usr/lib/systemd/systemd symlink." %{_bindir}/ln -s %{_systemd_util_dir}/systemd /sbin/init - if [[ -e /etc/wsl.conf ]]; +fi +if [[ -f %{_sysconfdir}/wsl.conf && ! -L %{_sysconfdir}/wsl.conf ]]; +then + %{_bindir}/echo "* [wsl_systemd] Creating backup for %{_sysconfdir}/wsl.conf.wsl_systemd ..." + cp -v %{_sysconfdir}/wsl.conf %{_sysconfdir}/wsl.conf.wsl_systemd + BOOT_COUNT=$(%{_bindir}/grep -c "\[boot\]" %{_sysconfdir}/wsl.conf.wsl_systemd) + if [[ $BOOT_COUNT -gt 0 ]]; then - cp /etc/wsl.conf /etc/wsl.conf.$(date +%s) + COMMAND_COUNT=$(%{_bindir}/grep -c "^command" %{_sysconfdir}/wsl.conf.wsl_systemd) + if [[ $COMMAND_COUNT -gt 0 ]]; + then + %{_bindir}/echo "* [wsl_systemd] Entry exists for 'command'; looking for and removing ping_group_range (if found) ..." + CMDS_TO_KEEP="" + PREEXISTING_COMMANDS=$(%{_bindir}/grep ^command %{_sysconfdir}/wsl.conf.wsl_systemd | %{_bindir}/cut -d= -f2- | %{_bindir}/awk -F';' '{for (i=1; i<=NF; ++i) {print $i}}') + while read -r line + do + LINE_CHECK=$(%{_bindir}/echo $line | grep -v ping_group_range) + if [[ ! -z $LINE_CHECK ]]; + then + if [[ -z $CMDS_TO_KEEP ]]; + then + CMDS_TO_KEEP=$(%{_bindir}/echo "$LINE_CHECK") + else + CMDS_TO_KEEP=$(%{_bindir}/echo "$CMDS_TO_KEEP ; $LINE_CHECK") + fi + fi + done <<< "$PREEXISTING_COMMANDS" + %{_bindir}/sed -i 's,^command.*$,command='"$CMDS_TO_KEEP"',g' %{_sysconfdir}/wsl.conf.wsl_systemd + fi + %{_bindir}/echo "* [wsl_systemd] Adjusting %{_sysconfdir}/wsl.conf.wsl_systemd ..." + %{_bindir}/sed -i 's,\[boot\],\[boot\]\n# adjusted by wsl_systemd pattern\nsystemd=true\n# END: wsl_systemd pattern edit,g' %{_sysconfdir}/wsl.conf.wsl_systemd + else + %{_bindir}/echo "* [wsl_systemd] File existed, but no [boot]; adjusting %{_sysconfdir}/wsl.conf.wsl_systemd ..." + %{_bindir}/echo -e "# added by wsl_systemd pattern\n[boot]\nsystemd=true\n# END: wsl_systemd pattern edit" >> %{_sysconfdir}/wsl.conf.wsl_systemd fi - %{_bindir}/echo "ADDING /etc/wsl.conf ..." - %{_bindir}/echo -e "# added by wsl_systemd pattern\n[boot]\nsystemd=true\n# END: wsl_systemd pattern edit" > %{_sysconfdir}/wsl.conf +elif [[ -f %{_sysconfdir}/wsl.conf && -L %{_sysconfdir}/wsl.conf ]]; +then + %{_bindir}/echo "* [wsl_systemd] Current %{_sysconfdir}/wsl.conf is a symlink ; ensure contents you want are copied to a non-symlink %{_sysconfdir}/wsl.conf and reinstall the pattern ..." +else + %{_bindir}/echo "* [wsl_systemd] No file existed; adding %{_sysconfdir}/wsl.conf.wsl_systemd ..." + %{_bindir}/echo -e "# added by wsl_systemd pattern\n[boot]\nsystemd=true\n# END: wsl_systemd pattern edit" > %{_sysconfdir}/wsl.conf.wsl_systemd +fi + +%post systemd +if [[ -e %{_sysconfdir}/wsl.conf.wsl_systemd ]]; +then + ln -sf %{_sysconfdir}/wsl.conf.wsl_systemd %{_sysconfdir}/wsl.conf fi %files systemd @@ -124,3 +234,4 @@ mkdir -p %{buildroot}/usr/share/doc/packages/patterns/ echo 'This file marks the pattern wsl_systemd to be installed.' > %{buildroot}/usr/share/doc/packages/patterns/wsl_systemd.txt %changelog +