Resumen/x-repo — repositorio de paquetes
Publicar un paquete
Publicar en el repositorio [x] de pacman es un flujo de build local y luego
commit. GitHub Actions nunca construye paquetes; solo despliega lo que está
commiteado bajo public/ (ver web-portal.md).
El ciclo completo: build local -> repo-add -> SHA256SUMS -> PR -> deploy en Pages.
1. Build local
Requisitos: un entorno tipo Arch con makepkg y repo-add disponibles.
Paquete construido desde un PKGBUILD de este repo
Trabaja sobre la fuente del paquete y luego constrúyelo dentro de su directorio
exactamente como hace build-packages.sh:
cd packages/x-release # o packages/x-dev
makepkg -cf --noconfirm
Esto produce un .pkg.tar.zst (p. ej. x-release-1.0-9-any.pkg.tar.zst) dentro del
directorio del paquete.
Paquete externo (x-scripts)
x-scripts se construye en el repo hermano scripts (su PKGBUILD vive en
scripts/packaging/), no aquí, y lleva el snapshot offline del escritorio equisdots
que usa el instalador. Constrúyelo allí:
cd scripts/packaging && makepkg -f
build-packages.sh importa automáticamente el
../scripts/packaging/x-scripts-*.pkg.tar.zst resultante y lo elimina del directorio
de build. También puedes colocar el tarball directamente en
public/repo/x86_64/ antes de ejecutar el script. No existe un directorio de fuente
packages/x-scripts/ en este repo.
Paquetes nativos .xp (vía xpm/xpkg)
El endpoint .xp bajo public/x/x86_64/ se genera aparte con
scripts/build-xp.sh (builds de xpkg + firma gpg + xpkg repo-add) y está vivo;
se despliega con el mismo workflow de Pages; ver docs/build-x-native-workflow.md.
2. Regenerar el repositorio (repo-add)
Desde la raíz del repositorio ejecuta:
./build-packages.sh # construye los PKGBUILDs + importa x-scripts + indexa
./build-packages.sh --index-only # omite los builds locales (solo importa/indexa)
El script:
-
Reconstruye los paquetes PKGBUILD configurados (
x-release,x-wallpapers,x-dev,x-kde-settings,opencode-bin,xfetch,xtop) conmakepkgsalvo con--index-only. -
Importa
../scripts/packaging/x-scripts-*.pkg.tar.zstcuando existe y copia los paquetes recién construidos apublic/repo/x86_64/, borrando solo esos artefactos de build. Los binarios commiteados bajopackages/xpm,packages/xpkg,packages/xfetchypackages/xtopno se tocan. -
Reconstruye la base de datos de pacman desde cero a partir de todos los tarballs del directorio (esto también elimina entradas de paquetes que ya no existen):
repo-add -R x.db.tar.gz *.pkg.tar.zst cp x.db.tar.gz x.db cp x.files.tar.gz x.files rm -f SHA256SUMS SHA256SUMS.sig sha256sum $(find . -maxdepth 1 -type f ! -name 'SHA256SUMS*' -printf '%P\n' | sort) > SHA256SUMS
No edites x.db ni SHA256SUMS a mano; regenéralos siempre con este script (las
reglas de contribución en CONTRIBUTING.md también prohíben ediciones manuales de la
base de datos).
3. Revisar y commitear
Comprueba qué cambió bajo public/repo/x86_64/:
git status
git diff --stat
Cambios esperados para una actualización de paquete:
- el nuevo
.pkg.tar.zst(y la eliminación de la versión reemplazada), x.db,x.db.tar.gz,x.files,x.files.tar.gzregenerados,SHA256SUMSregenerado,- el propio cambio del
PKGBUILDbajopackages/.
Commitea los cambios del repositorio, por ejemplo:
git add packages/x-release public/repo/x86_64
git commit -m "publish x-release 1.0-9"
4. Pull request
Según CONTRIBUTING.md, el flujo de contribución es fork, rama y pull request contra
la rama main. Los mantenedores también pueden commitear a una rama de trabajo y abrir
el PR directamente. Fusiona a main cuando pase la validación.
5. Desplegar en GitHub Pages
Cuando los cambios estén en main, despliega el sitio para que los archivos nuevos del
repo salgan en producción:
- Ve a la pestaña Actions de
equislinux/x-repo. - Ejecuta manualmente el workflow "Deploy Website to GitHub Pages" (
build.yml) medianteworkflow_dispatch. - El workflow ejecuta
npm ci && npm run build(export estático del sitio Next.js incluido todo lo depublic/), comprueba que existanx.dby un tarball dex-release, y sube./outa GitHub Pages.
Los paquetes actualizados quedan servidos en:
https://equislinux.github.io/x-repo/repo/x86_64/(repo[x]de pacman)
Advertencias
- No ejecutes dos workflows de deploy de Pages a la vez; se sobrescribirían el
despliegue mutuamente (en
build.ymlhay un grupo de concurrenciapages; el endpoint nativo se regenera conscripts/build-xp.shy va en el mismo deploy). - Mantén el repositorio sincronizado con sus consumidores:
x-releaseyx-devse instalan desde este repo durante la instalación de la distro X, yx-scriptsdebe coincidir con la revisión del payload que espera el instalador.
Firma
El repositorio se publica firmado con la clave del proyecto
(X_REPO_SIGN_KEY en build-packages.sh). El ISO live y el destino instalado
usan SigLevel = Required y embarcan la clave en /etc/pacman.d/x-repo.pub.
Ver Firma para crear la clave, la exportación del keyring
(trustedkeys.gpg + signing.pub) y la rotación.