From 58223f0e8a7292b16c890f82b9dc9fbc57fe9839 Mon Sep 17 00:00:00 2001 From: Doncho Gunchev Date: Sun, 14 Jul 2024 16:19:38 +0300 Subject: [PATCH 1/3] Initial python virtual environment support. --- changelog.sh | 12 ++++++------ etc/profile.d/z-ps-twtty-7.sh | 15 +++++++++++++-- gwebu-profile.spec.in | 9 +++++---- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/changelog.sh b/changelog.sh index 5dc8f29..ce2780a 100755 --- a/changelog.sh +++ b/changelog.sh @@ -8,15 +8,15 @@ rpm_ver="${ver%%-*}" rpm_rev="${ver#*-}" rpm_numeric_rev="${rpm_rev%%-*}" -change="* $(date +'%a %b %d %Y') $(git log -1 --format='%aN <%aE>') - ${rpm_ver}-${rpm_numeric_rev} -- $(git log -1 --format=%s) -" +change1="* $(date +'%a %b %d %Y') $(git log -1 --format='%aN <%aE>') - ${rpm_ver}-${rpm_numeric_rev}" +change2="- $(git log -1 --format=%s)" -awk -v change="${change}" '/^%changelog/ {print; print change; next} 1' gwebu-profile.spec.in \ +awk -v change1="${change1}" -v change2="${change2}" '/^%changelog/ {print; print change1; print change2; print ""; next} 1' gwebu-profile.spec.in \ > gwebu-profile.spec.tmp && mv gwebu-profile.spec.tmp gwebu-profile.spec.in -sed -i "s/Version: .*/Version: ${rpm_ver}/" gwebu-profile.spec.in -sed -i "s/Release: .*/Release: ${rpm_numeric_rev}/" gwebu-profile.spec.in +sed -i.bak "s/Version: .*/Version: ${rpm_ver}/" gwebu-profile.spec.in +sed -i.bak "s/Release: .*/Release: ${rpm_numeric_rev}/" gwebu-profile.spec.in +rm -f gwebu-profile.spec.in.bak git add gwebu-profile.spec.in diff --git a/etc/profile.d/z-ps-twtty-7.sh b/etc/profile.d/z-ps-twtty-7.sh index 5d1044a..348ce08 100755 --- a/etc/profile.d/z-ps-twtty-7.sh +++ b/etc/profile.d/z-ps-twtty-7.sh @@ -77,8 +77,19 @@ function prompt_command() { my_PWD="${PWD}" # Add all the accessories below ... my_D="$(date '+%Y-%m-%d %H:%M:%S')" - # This is for string size calculations only. + # This is for string size calculations only. The variable my_P is set, see PROMPT_COMMAND below. local prompt="--($my_D, Err ${my_P[*]}, $my_TTY)---($PWD)--" + + if [ -n "${VIRTUAL_ENV:-}" ] && [ -n "$_OLD_VIRTUAL_PS1" ]; then + my_VENV="${VIRTUAL_ENV_PROMPT}" + prompt="--($my_D, Err ${my_P[*]}, $my_TTY, $my_VENV)---($PWD)--" + if [ "${PS1:1:${#VIRTUAL_ENV_PROMPT}}" == "$VIRTUAL_ENV_PROMPT" ]; then + # PS1 will be restored by virtual environment's deactivate script. + # Yeah, that has to be done better, 172 is correct but magic number. + export PS1="${_OLD_VIRTUAL_PS1:0:172}, ${my_VENV}${_OLD_VIRTUAL_PS1:172}" + fi + fi + local fill_size=0 [ -z "${COLUMNS}" ] && COLUMNS=$(tput cols) ((fill_size=COLUMNS-${#prompt})) @@ -157,7 +168,7 @@ ${C1}\${USER}${C2}@${C1}\${HOSTNAME%%.*}\ ${C2})${C3}\$${NO_COLOUR} " export PS2="${C2}─${C1}─${C1}─${NO_COLOUR} \[\033[K\]" - + # Set my_P to the exit codes of the last command pipe. local P='my_P=("${PIPESTATUS[@]}");prompt_command' if declare -p PROMPT_COMMAND &>/dev/null; then local re='^declare -a ' diff --git a/gwebu-profile.spec.in b/gwebu-profile.spec.in index a03ddce..5d0acac 100644 --- a/gwebu-profile.spec.in +++ b/gwebu-profile.spec.in @@ -1,7 +1,7 @@ Summary: Gwebu profile.d - cool date, prompt with history, aliases Name: gwebu-profile -Version: 1.0.2 -Release: 6 +Version: 1.0.3 +Release: 0 BuildArch: noarch License: GPLv2 Source0: profile.d-%{version}-%{release}.tar.xz @@ -41,10 +41,11 @@ install -m 0644 etc/profile.d/*.sh %{buildroot}%{_sysconfdir}/profile.d/ %changelog -* Thu May 30 2024 Doncho N. Gunchev - 1.0.2-6 -- New shebang for changelog.sh, post-commit hook in README.md. +* Sun Jul 14 2024 Doncho Gunchev - 1.0.3-0 +- Initial python virtual environment support. * Thu May 30 2024 Doncho N. Gunchev - 1.0.2-6 +- New shebang for changelog.sh, post-commit hook in README.md. * Thu May 30 2024 Doncho N. Gunchev - 1.0.2-5 - Add ssh control masters management aliases. Silence a which. From b3f0f6635695dc91d42a2c49b92d38ae788a5097 Mon Sep 17 00:00:00 2001 From: Doncho Gunchev Date: Sun, 14 Jul 2024 17:17:48 +0300 Subject: [PATCH 2/3] Quick and dirty build with podman on MacOS. --- Dockerfile-build | 14 ++++++++++++++ Makefile | 11 +++++++++++ build.sh | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 Dockerfile-build create mode 100755 build.sh diff --git a/Dockerfile-build b/Dockerfile-build new file mode 100644 index 0000000..c69d769 --- /dev/null +++ b/Dockerfile-build @@ -0,0 +1,14 @@ +FROM rockylinux:9 as build + +WORKDIR /root/profile.d + +COPY ./ . + +RUN \ + dnf -y update && \ + dnf -y install rpmdevtools make + +# dnf -y install dnf-plugins-core epel-release && \ +# /usr/bin/crb enable && \ + +RUN ./build.sh diff --git a/Makefile b/Makefile index f4a9348..5efc318 100644 --- a/Makefile +++ b/Makefile @@ -47,3 +47,14 @@ changelog: .PHONY: clean clean: rm -rf dist + + +.PHONY: podman_rpm +podman_rpm: + podman buildx build -t podman_rpm_build -f Dockerfile-build . # --platform linux/amd64 + # Extract the RPMs from the container to ./dist/ locally. + if ! test -d dist; then mkdir dist; fi + podman run --rm -d --name=build localhost/podman_rpm_build /usr/bin/bash -c "trap : TERM INT; sleep infinity & wait" + podman cp build:/tmp/RPMS/. ./dist/ + podman stop build + podman image rm localhost/podman_rpm_build diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..95379b3 --- /dev/null +++ b/build.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -euo pipefail +shopt -s nullglob dotglob + +if [ "$(uname -s)" != "Linux" ]; then echo "This script only works on Linux!" >&2; exit 254; fi +set -x # debug + +. /etc/os-release +ARCH="${ARCH:-$(uname -m)}" # +VER="${VER:-${VERSION_ID%%\.*}}" # 8 +DIST_PRE="${PLATFORM_ID##*:}" # el8 +DIST="${DIST:-${DIST_PRE%%[0-9]*}}" # el +OUT_DIR="/tmp/RPMS" + +export LANG='en_US.UTF-8' +export LANGUAGE="${LANG}" +export LC_ALL="${LANG}" +export LC_MEASUREMENT="${LANG}" +export LC_MONETARY="${LANG}" +export LC_NUMERIC="${LANG}" +export LC_TIME="${LANG}" + +rm -rf "$OUT_DIR" +mkdir "$OUT_DIR" + +#spectool -g ./*.spec +# +#if [ "$UID" == "0" ]; then +# dnf builddep -y --refresh ./*.spec +#fi + +# make rpmsrc +rpmbuild -ta ./dist/*.tar.xz \ + --define "_sourcedir $PWD/dist" \ + --define "_srcrpmdir $OUT_DIR" \ + --define "_rpmdir $OUT_DIR" \ + +mv "$OUT_DIR"/*/*.rpm "$OUT_DIR/" +rmdir "$OUT_DIR"/* 2>/dev/null || true From 2ad5d376affd8d01145ec8ea9f25c9c7cb5c022d Mon Sep 17 00:00:00 2001 From: Doncho Gunchev Date: Mon, 15 Jul 2024 10:54:24 +0300 Subject: [PATCH 3/3] Fix python virtual environment support. This works with python 3.9, 3.10, 3.11 and 3.12 on MacOS. --- Makefile | 9 +++++---- etc/profile.d/z-ps-twtty-7.sh | 4 ++-- gwebu-profile.spec.in | 6 +++++- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 5efc318..64f2df9 100644 --- a/Makefile +++ b/Makefile @@ -11,11 +11,12 @@ help: @echo "▀▀▀▀▀▀" @echo @echo "Available targets:" - @echo " dist: create source distribution package in dist/" - @echo " rpm: create an RPM package" - @echo " changelog: Add a changelog entry to gwebu-profile.spec.in" + @echo " dist: Create source distribution package in dist/." + @echo " rpm: Create an RPM package." + @echo " podman_rpm Create an RPM package using podman on MacOS." + @echo " changelog: Add a changelog entry to gwebu-profile.spec.in." @echo - @echo " clean: clean all generated files" + @echo " clean: Clean all generated files." @echo @echo "Version $(ver), rpm_ver=$(rpm_ver), rpm_rev=$(rpm_rev)." .PHONY: help diff --git a/etc/profile.d/z-ps-twtty-7.sh b/etc/profile.d/z-ps-twtty-7.sh index 348ce08..6a06f0f 100755 --- a/etc/profile.d/z-ps-twtty-7.sh +++ b/etc/profile.d/z-ps-twtty-7.sh @@ -81,9 +81,9 @@ function prompt_command() { local prompt="--($my_D, Err ${my_P[*]}, $my_TTY)---($PWD)--" if [ -n "${VIRTUAL_ENV:-}" ] && [ -n "$_OLD_VIRTUAL_PS1" ]; then - my_VENV="${VIRTUAL_ENV_PROMPT}" + export my_VENV="${VIRTUAL_ENV##*/}" prompt="--($my_D, Err ${my_P[*]}, $my_TTY, $my_VENV)---($PWD)--" - if [ "${PS1:1:${#VIRTUAL_ENV_PROMPT}}" == "$VIRTUAL_ENV_PROMPT" ]; then + if [ "${PS1:0:${#my_VENV}+3}" == "($my_VENV) " ]; then # PS1 will be restored by virtual environment's deactivate script. # Yeah, that has to be done better, 172 is correct but magic number. export PS1="${_OLD_VIRTUAL_PS1:0:172}, ${my_VENV}${_OLD_VIRTUAL_PS1:172}" diff --git a/gwebu-profile.spec.in b/gwebu-profile.spec.in index 5d0acac..cd658be 100644 --- a/gwebu-profile.spec.in +++ b/gwebu-profile.spec.in @@ -1,7 +1,7 @@ Summary: Gwebu profile.d - cool date, prompt with history, aliases Name: gwebu-profile Version: 1.0.3 -Release: 0 +Release: 2 BuildArch: noarch License: GPLv2 Source0: profile.d-%{version}-%{release}.tar.xz @@ -41,6 +41,10 @@ install -m 0644 etc/profile.d/*.sh %{buildroot}%{_sysconfdir}/profile.d/ %changelog +* Mon Jul 15 2024 Doncho Gunchev - 1.0.3-2 +- Fix python virtual environment support. + This works on MacOS with python 3.9, 3.10, 3.11 and 3.12. + * Sun Jul 14 2024 Doncho Gunchev - 1.0.3-0 - Initial python virtual environment support.