build(iso): upgrade FreeBSD Python 3.11 -> 3.12 #66
9 changed files with 26 additions and 26 deletions
10
BUILD.md
10
BUILD.md
|
|
@ -456,7 +456,7 @@ installed onto the live rootfs.
|
|||
**Two distinct categories live in the same file** with the same code
|
||||
path (fetched, not installed on live), but different long-term homes:
|
||||
|
||||
1. **Desktop-spin leftovers** (telegram-desktop, mpv, abiword, gnumeric,
|
||||
1. **Desktop-spin leftovers** (telegram-desktop, mpv, abiword,
|
||||
simplescreenrecorder, …). Inherited from the earlier all-in-one
|
||||
desktop image. Don't match the operator-USB role. **Long-term home:
|
||||
disk-install only.** Not returning to the live USB.
|
||||
|
|
@ -483,7 +483,6 @@ disk-install consumer still needs to install
|
|||
| ---------------------- | ------------------------------------------------------ | -----------------------------: | -------------: | ----------------- |
|
||||
| `blender` | Parametric 3D modelling + Python `bpy` skill substrate | (large; measure on next image) | (large) | roadmap-essential |
|
||||
| `telegram-desktop` | Messaging | 52.08 MiB | 236.90 MiB | leftover |
|
||||
| `gnumeric` | Spreadsheet | 13.14 MiB | 45.91 MiB | leftover |
|
||||
| `abiword` | Word processor | 4.75 MiB | 21.60 MiB | leftover |
|
||||
| `mpv` | Media player | 1.60 MiB | 6.96 MiB | leftover |
|
||||
| `simplescreenrecorder` | Screen/audio capture | 1.31 MiB | 3.83 MiB | leftover |
|
||||
|
|
@ -515,7 +514,6 @@ dependencies from desktop applications, not an installer direction:
|
|||
| `telegram-desktop` | `qt6-declarative`, `qt6-wayland`, `qt6-svg`, `qt6-lottie`, `kf6-*`, **`pipewire`** |
|
||||
| `simplescreenrecorder` | **`pulseaudio`**, **`pipewire`**, `qt6-base`, `ffmpeg` |
|
||||
| `mpv` | `ffmpeg`, `libplacebo`, `mesa-libs`, `wayland`, `vulkan-loader` |
|
||||
| `gnumeric` | `python311`, `py311-pygobject`, `goffice` |
|
||||
| `abiword` | `goffice`, `libgsf`, `wv` |
|
||||
|
||||
`simplescreenrecorder` is the worst offender — a single niche tool drags
|
||||
|
|
@ -560,8 +558,10 @@ Listed for completeness so the lean/full split stays honest:
|
|||
- **Networking:** `tailscale`, `networkmgr`, `wifi-firmware-kmod`,
|
||||
`FreeBSD-fwget`.
|
||||
- **Jails:** `bastille`.
|
||||
- **Operator diagnostics (tmux screenshot skill):** `tmux`, `screen`,
|
||||
`mc`, `zip`, `unzip`, `7-zip`, `python311`, `py311-pillow`, `dejavu`.
|
||||
- **Operator diagnostics:** `tmux`, `screen`, `mc`, `zip`, `unzip`,
|
||||
`7-zip`, `python312`, `dejavu`. Python package-flavored extras such as
|
||||
Pillow stay out of pkg lists until FreeBSD quarterly publishes Python 3.12
|
||||
flavors.
|
||||
- **Xorg base:** `xorg-minimal`, `xkeyboard-config`, `xkbcomp`,
|
||||
`xf86-input-libinput`, `xf86-video-scfb`, `xf86-video-intel`,
|
||||
`xf86-video-amdgpu`, `xf86-video-ati`, `drm-kmod`,
|
||||
|
|
|
|||
|
|
@ -286,7 +286,7 @@ and allocated size; write the logical image to a USB key large enough for it.
|
|||
tailscale version
|
||||
firefox
|
||||
tmux -V
|
||||
python3 -c "import PIL; print(PIL.__version__)"
|
||||
python3 --version
|
||||
bastille --help
|
||||
mdo -u root bastille --help
|
||||
test -f /usr/local/share/fonts/dejavu/DejaVuSansMono.ttf
|
||||
|
|
|
|||
|
|
@ -523,7 +523,7 @@ command -v pi
|
|||
pi --help
|
||||
tailscale version
|
||||
tmux -V
|
||||
python3 -c "import PIL; print(PIL.__version__)"
|
||||
python3 --version
|
||||
bastille --help
|
||||
mdo -u root bastille --help
|
||||
```
|
||||
|
|
@ -1087,7 +1087,7 @@ Mark the image good only when all of these are true:
|
|||
- [ ] `pi --help` works
|
||||
- [ ] `tailscale version` works
|
||||
- [ ] `tmux -V` works
|
||||
- [ ] `python3 -c "import PIL; print(PIL.__version__)"` works
|
||||
- [ ] `python3 --version` reports Python 3.12
|
||||
- [ ] `bastille --help` works
|
||||
- [ ] `sudo` is absent from the live image
|
||||
- [ ] no stale-label confusion remains on the flashed USB stick
|
||||
|
|
|
|||
17
build.sh
17
build.sh
|
|
@ -1246,12 +1246,17 @@ configure_live_operator_session() {
|
|||
chmod 0644 "${MOUNT_POINT}/etc/resolv.conf"
|
||||
fi
|
||||
|
||||
# FreeBSD packages ship python3.11 but not a bare python3 symlink.
|
||||
# Scripts that use /usr/bin/env python3 break without this.
|
||||
if [ -x "${MOUNT_POINT}/usr/local/bin/python3.11" ] && \
|
||||
[ ! -e "${MOUNT_POINT}/usr/local/bin/python3" ]; then
|
||||
ln -sf python3.11 "${MOUNT_POINT}/usr/local/bin/python3"
|
||||
ln -sf python3.11 "${MOUNT_POINT}/usr/local/bin/python"
|
||||
# FreeBSD packages ship pythonX.Y (e.g. python3.12) but not a bare python3
|
||||
# symlink. Scripts that use /usr/bin/env python3 break without this.
|
||||
# Derive the installed minor version so a future bump (3.12 -> 3.13) needs
|
||||
# only a package-list change, never an edit here.
|
||||
if [ ! -e "${MOUNT_POINT}/usr/local/bin/python3" ]; then
|
||||
py_bin=$(ls "${MOUNT_POINT}/usr/local/bin"/python3.* 2>/dev/null \
|
||||
| sed 's@.*/@@' | grep -E '^python3\.[0-9]+$' | sort -V | tail -1)
|
||||
if [ -n "${py_bin}" ]; then
|
||||
ln -sf "${py_bin}" "${MOUNT_POINT}/usr/local/bin/python3"
|
||||
ln -sf "${py_bin}" "${MOUNT_POINT}/usr/local/bin/python"
|
||||
fi
|
||||
fi
|
||||
|
||||
mkdir -p "${MOUNT_POINT}/usr/local/etc/sddm.conf.d"
|
||||
|
|
|
|||
|
|
@ -486,9 +486,9 @@ clawdie_shell_deploy_setup_aider_venv() {
|
|||
if [ ! -x "$python_bin" ]; then
|
||||
log_msg "[deploy] Creating Aider venv at $venv_dir"
|
||||
if [ "$(id -u)" -eq 0 ]; then
|
||||
su - clawdie -c "python3.11 -m venv --system-site-packages '$venv_dir'" || return 1
|
||||
su - clawdie -c "python3 -m venv --system-site-packages '$venv_dir'" || return 1
|
||||
else
|
||||
python3.11 -m venv --system-site-packages "$venv_dir" || return 1
|
||||
python3 -m venv --system-site-packages "$venv_dir" || return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
@ -578,7 +578,7 @@ clawdie_shell_deploy_verify() {
|
|||
log_msg "[deploy] ✓ Aider available"
|
||||
fi
|
||||
else
|
||||
log_msg "[deploy] ⚠ Aider CLI not found (py311-aider_chat missing)"
|
||||
log_msg "[deploy] ⚠ Aider CLI not found (Aider venv setup missing)"
|
||||
fi
|
||||
|
||||
return $failed
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
# Two categories live here. They share the same code path (fetched to the
|
||||
# offline repo, not installed on live) but have different long-term homes:
|
||||
#
|
||||
# 1. Desktop-spin leftovers (telegram-desktop, mpv, abiword, gnumeric, ...).
|
||||
# 1. Desktop-spin leftovers (telegram-desktop, mpv, abiword, ...).
|
||||
# Long-term home: disk-install only. Not coming back to the live USB.
|
||||
#
|
||||
# 2. Roadmap-essential, deferred for stabilization (blender). First-class
|
||||
|
|
@ -31,7 +31,6 @@ zed-editor
|
|||
telegram-desktop
|
||||
epdfview
|
||||
abiword
|
||||
gnumeric
|
||||
antiword
|
||||
catdoc
|
||||
xls2txt
|
||||
|
|
|
|||
|
|
@ -14,9 +14,7 @@ bsddialog
|
|||
codex
|
||||
|
||||
# Python / tooling
|
||||
python311
|
||||
py311-pip
|
||||
py311-aider_chat
|
||||
python312
|
||||
just
|
||||
uv
|
||||
ripgrep
|
||||
|
|
@ -35,7 +33,6 @@ postgresql18-client
|
|||
dnsmasq
|
||||
|
||||
# Media / fonts
|
||||
py311-pillow
|
||||
dejavu
|
||||
|
||||
# Wayland display stack (desktop installs)
|
||||
|
|
|
|||
|
|
@ -65,8 +65,7 @@ zip
|
|||
unzip
|
||||
7-zip
|
||||
bitchx
|
||||
python311
|
||||
py311-pillow
|
||||
python312
|
||||
dejavu
|
||||
# Hardware introspection. FreeBSD base already provides pciconf(8),
|
||||
# usbconfig(8), devinfo(8), and kldstat(8); add a few extra probes that
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ for skill_md in "$CLAWDIE_AI"/.agent/skills/*/SKILL.md; do
|
|||
category="freebsd"
|
||||
fi
|
||||
|
||||
id=$(uuidgen 2>/dev/null || python3.11 -c "import uuid; print(uuid.uuid4())" 2>/dev/null || echo "skill-$(echo "$name" | md5)")
|
||||
id=$(uuidgen 2>/dev/null || python3 -c "import uuid; print(uuid.uuid4())" 2>/dev/null || echo "skill-$(echo "$name" | md5)")
|
||||
|
||||
sqlite3 "$DB" "INSERT OR IGNORE INTO skills (id, name, description, category, created_at)
|
||||
VALUES ('$id', '$(echo "$name" | sed "s/'/''/g")', '$(echo "$description" | sed "s/'/''/g")', '$category', '$NOW');" 2>/dev/null && IMPORTED=$((IMPORTED + 1)) || SKIPPED=$((SKIPPED + 1))
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue