Compilamos un "Bind" personalizado en SmartOS a partir de PkgSrc

Este artículo fusiona los anteriores:

Adicionalmente queremos tener en cuenta:

Advertencia

No voy a repetir detalles de fondo y repasos de la configuración. Para ello debería leer los artículos anteriores.

Con todo lo anterior, queda algo así:

  1. Tengo una zona nativa SmartOS con el software PkgSrc. En ella utilizamos la versión apropiada para las zonas donde vamos a desplegar nuestro Bind personalizado:

    [root@PkgSrc ~]# run-sandbox 2023Q4-x86_64
    Creating /data/chroot/dev-2023Q4-x86_64...done.
    Unpacking bootstrap-2023Q4-x86_64 into /data/chroot/dev-2023Q4-x86_64...done.
    Setting up environment...done.
    Installing additional tools packages...done.
    
    [...]
    Logging in.  WARNING: On logout the sandbox will be destroyed.
    
      ,---.                   |     ,---. ,---.
      `---. ,-.-. ,---. ,---. |---  |   | `---.  pkgbuild-lts
          | | | | ,---| |     |     |   |     |  23.4.0
      `---' ` ' ' `---' `     `---' `---' `---'
    
    --<root@PkgSrc>-(/data/chroot/dev-2023Q4-x86_64)-<~>--
    ->
    
  2. Vamos al directorio donde está Bind y hacemos una copia para por los motivos detallados en How to pin a "pkgin" package, what is the right way to deploy my own packages?:

    --<root@PkgSrc>-(/data/chroot/dev-2023Q4-x86_64)-<~>--
    -> cd /data/pkgsrc/net/
    --<root@PkgSrc>-(/data/chroot/dev-2023Q4-x86_64)-</data/pkgsrc/net>--
    -> cp -a bind918 bind918-jcea
    --<root@PkgSrc>-(/data/chroot/dev-2023Q4-x86_64)-</data/pkgsrc/net>--
    -> cd bind918-jcea
    --<root@PkgSrc>-(/data/chroot/dev-2023Q4-x86_64)-</data/pkgsrc/net/bind918-jcea>--
    ->
    
  3. Para compilar la versión de Bind que queremos debemos editar el fichero Makefile (en concreto la línea BIND_VERSION) y luego recalculamos los hashes:

    --<root@PkgSrc>-(/data/chroot/dev-2023Q4-x86_64)-</data/pkgsrc/net/bind918-jcea>--
    -> vi Makefile
    --<root@PkgSrc>-(/data/chroot/dev-2023Q4-x86_64)-</data/pkgsrc/net/bind918-jcea>--
    -> bmake makesum
    
  4. Copiamos mis parches personales desde el portátil:

    jcea@jcea:~/XXXX/patches/bind$ scp * XXXX:/data/chroot/dev-2023Q4-x86_64/data/pkgsrc/net/bind918-jcea/patches/
    
  5. Actualizamos las sumas de control de los parches:

    --<root@PkgSrc>-(/data/chroot/dev-2023Q4-x86_64)-</data/pkgsrc/net/bind918-jcea>--
    -> bmake makedistinfo
    
  1. Compilamos con soporte dnstap:

    --<root@PkgSrc>-(/data/chroot/dev-2023Q4-x86_64)-</data/pkgsrc/net/bind918-jcea>--
    -> bmake PKG_OPTIONS.bind=dnstap package
    

Si hemos cambiado la versión de Bind es posible que los parches no se apliquen correctamente. Explico cómo solucionarlo en Compilar una versión más moderna de "Bind" que la disponible en PkgSrc para SmartOS.

También puede ser que falle la verificación final de la PLIST, si hay cambios en la lista de ficheros instalados, y tendríamos que modificarla a mano.