docs: add package compilation and symlinks configuration
Add Koji package compilation documentation outlining SCM, lookaside cache, and repository priority configuration. Fix Apache configuration to follow symlinks in /mnt/koji. Co-developed-by: Gemini AI <renich+gemini@woralelandia.com> Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
This commit is contained in:
parent
be9438afdf
commit
7ab7d80bd2
2 changed files with 87 additions and 0 deletions
80
docs/compilación_de_paquetes.rst
Normal file
80
docs/compilación_de_paquetes.rst
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
===============================
|
||||||
|
Compilación de Paquetes en Koji
|
||||||
|
===============================
|
||||||
|
|
||||||
|
Este documento detalla el procedimiento para el empaquetado, la gestión de repositorios externos y la compilación de paquetes dentro del clúster Koji de MxOS.
|
||||||
|
|
||||||
|
Estructura de Repositorios y Fuentes
|
||||||
|
====================================
|
||||||
|
|
||||||
|
Para mantener una compatibilidad estricta con CentOS Stream 10, los paquetes de MxOS siguen las siguientes pautas:
|
||||||
|
|
||||||
|
* **Repositorios Git**: Las recetas Spec y los parches se almacenan en repositorios hospedados en la organización ``RPMs`` de Git:
|
||||||
|
|
||||||
|
``git.mx-os.mx/RPMs/<paquete>.git``
|
||||||
|
|
||||||
|
* **Lookaside Cache**: Los archivos fuente de gran tamaño (tarballs, crates de Rust, etc.) no se suben al control de versiones de Git. En su lugar, se suben al Lookaside Cache (Dist-Git) hospedado en ``cs10-koji-04.mx-os`` mediante la API de carga. Cada repositorio Git contiene un archivo llamado ``sources`` en su raíz que define los nombres de los archivos fuente y sus hashes SHA512 correspondientes.
|
||||||
|
|
||||||
|
Prioridades de Repositorios Externos
|
||||||
|
====================================
|
||||||
|
|
||||||
|
Koji utiliza el comando ``mergerepo_c`` para fusionar los paquetes internos creados dentro de la etiqueta ``mxos0`` con los repositorios externos oficiales de CentOS y EPEL. Para asegurar que las dependencias se resuelvan adecuadamente y los paquetes de bootstrap compilados localmente (como ``bash`` o ``llvm-libs``) tengan precedencia sobre los de upstream, es crucial configurar prioridades correctas en la etiqueta de construcción (``mxos0-build``):
|
||||||
|
|
||||||
|
* **Prioridad 5**: ``centos-stream-10-baseos``
|
||||||
|
* **Prioridad 10**: ``centos-stream-10-appstream``
|
||||||
|
* **Prioridad 15**: ``centos-stream-10-epel``
|
||||||
|
* **Prioridad 20**: ``centos-stream-10-crb``
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Una prioridad con un número menor en Koji indica una mayor precedencia. Esto asegura que si el mismo paquete (NEVRA idéntico) existe tanto en el repositorio interno de Koji como en el de BaseOS o AppStream, Koji priorice e instale la versión compilada internamente.
|
||||||
|
|
||||||
|
Si necesitas restaurar o corregir las prioridades de los repositorios externos, ejecuta los siguientes comandos como el usuario ``kojiadmin``:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
koji remove-external-repo centos-stream-10-appstream mxos0-build
|
||||||
|
koji add-external-repo -t mxos0-build -p 10 centos-stream-10-appstream
|
||||||
|
|
||||||
|
Procedimiento para Iniciar Construcciones
|
||||||
|
=========================================
|
||||||
|
|
||||||
|
Para registrar un nuevo paquete e iniciar su compilación en el sistema Koji, sigue estos pasos:
|
||||||
|
|
||||||
|
1. Registrar el Paquete en Koji
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
Antes de iniciar la compilación de un paquete por primera vez, este debe registrarse bajo la etiqueta del tag destino (``mxos0``). Ejecuta:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
koji add-pkg --owner kojiadmin mxos0 <nombre-del-paquete>
|
||||||
|
|
||||||
|
Por ejemplo:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
koji add-pkg --owner kojiadmin mxos0 rust-siguldry
|
||||||
|
|
||||||
|
2. Solicitar la Construcción (Build)
|
||||||
|
------------------------------------
|
||||||
|
|
||||||
|
Una vez registrado, puedes solicitar la compilación directamente indicando el tag destino y la dirección del repositorio Git (SCM URL) junto con la rama o el commit correspondiente:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
koji build mxos0 'git+https://git.mx-os.mx/RPMs/<paquete>.git#<rama-o-commit>'
|
||||||
|
|
||||||
|
Por ejemplo, para compilar ``rust-siguldry`` desde la rama ``c10s``:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
koji build mxos0 'git+https://git.mx-os.mx/RPMs/rust-siguldry.git#c10s'
|
||||||
|
|
||||||
|
Resolución de Problemas y Regeneración del Repositorio
|
||||||
|
======================================================
|
||||||
|
|
||||||
|
Si has importado paquetes base nuevos o modificado las prioridades de los repositorios externos y la inicialización de la buildroot falla debido a dependencias desactualizadas o un error de ``payloadhash mismatch``, debes forzar la regeneración inmediata del repositorio de la buildroot mediante el siguiente comando:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
koji regen-repo --make-task mxos0-build
|
||||||
|
|
@ -158,6 +158,13 @@
|
||||||
- { path: "{{ koji_hub_httpd_ssl_config_file }}", regexp: "^#?SSLProtocol", line: "SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.3" }
|
- { path: "{{ koji_hub_httpd_ssl_config_file }}", regexp: "^#?SSLProtocol", line: "SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.3" }
|
||||||
notify: Restart httpd
|
notify: Restart httpd
|
||||||
|
|
||||||
|
- name: Configure Apache to follow symlinks in /mnt/koji
|
||||||
|
ansible.builtin.replace:
|
||||||
|
path: /etc/httpd/conf.d/kojihub.conf
|
||||||
|
regexp: 'Options Indexes SymLinksIfOwnerMatch'
|
||||||
|
replace: 'Options Indexes FollowSymLinks'
|
||||||
|
notify: Restart httpd
|
||||||
|
|
||||||
- name: Enable SSL for Koji Hub
|
- name: Enable SSL for Koji Hub
|
||||||
ansible.builtin.blockinfile:
|
ansible.builtin.blockinfile:
|
||||||
path: "{{ koji_hub_httpd_config_file }}"
|
path: "{{ koji_hub_httpd_config_file }}"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue