Compare commits

...

3 commits

Author SHA1 Message Date
Doncho Gunchev
2ad5d376af
Fix python virtual environment support.
Some checks failed
Makefile CI / build (push) Has been cancelled
This works with python 3.9, 3.10, 3.11 and 3.12 on MacOS.
2024-07-15 10:59:06 +03:00
Doncho Gunchev
b3f0f66356
Quick and dirty build with podman on MacOS. 2024-07-14 17:17:48 +03:00
Doncho Gunchev
58223f0e8a
Initial python virtual environment support. 2024-07-14 16:49:03 +03:00
6 changed files with 98 additions and 16 deletions

14
Dockerfile-build Normal file
View file

@ -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

View file

@ -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
@ -47,3 +48,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

40
build.sh Executable file
View file

@ -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

View file

@ -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

View file

@ -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
export my_VENV="${VIRTUAL_ENV##*/}"
prompt="--($my_D, Err ${my_P[*]}, $my_TTY, $my_VENV)---($PWD)--"
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}"
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 '

View file

@ -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: 2
BuildArch: noarch
License: GPLv2
Source0: profile.d-%{version}-%{release}.tar.xz
@ -41,10 +41,15 @@ install -m 0644 etc/profile.d/*.sh %{buildroot}%{_sysconfdir}/profile.d/
%changelog
* Thu May 30 2024 Doncho N. Gunchev <dgunchev@gmail.com> - 1.0.2-6
- New shebang for changelog.sh, post-commit hook in README.md.
* Mon Jul 15 2024 Doncho Gunchev <doncho.gunchev@flyrlabs.com> - 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 <doncho.gunchev@flyrlabs.com> - 1.0.3-0
- Initial python virtual environment support.
* Thu May 30 2024 Doncho N. Gunchev <dgunchev@gmail.com> - 1.0.2-6
- New shebang for changelog.sh, post-commit hook in README.md.
* Thu May 30 2024 Doncho N. Gunchev <dgunchev@gmail.com> - 1.0.2-5
- Add ssh control masters management aliases. Silence a which.