Copyright Copyright © José Luis Lara Carrascal 2023-2024 Sumario Introducción Rust Sccache Configuración Enlaces Introducción Sccache es un compilador caché, escrito con el lenguaje de programación, Rust, que puede llegar a acelerar hasta 10 veces la recompilación (esto implica también una instalación de versiones futuras del programa cacheado, pero con un mayor tiempo de compilación) de cualquier programa cuyo código fuente esté escrito en C , C++, Rust y CUDA. Su desarrollo está inspirado en Ccache, pero está más orientado a ser utilizado en compilaciones compartidas en red, lo que no impide que lo podamos utilizar de forma local. Tiene muchas menos opciones que Ccache, la compresión no es configurable, siendo el formato zip, el predefinido. La inclusión en la documentación de la web, viene determinada por su soporte de las compilaciones con Rust, cuya instalación como usuario a través de rustup, también se trata en este manual. Rust Descarga e Instalación de rustup
Configuración de Rustup para que no se instale la documentación de Rust
Instalar Rust en sus versiones de 64 y 32 bits (requerido este último para la compilación de la versión de 32 bits de Mesa)
Instalar Cargo-cache para reducir el tamaño de la instalación de Rust y ejecutarlo posteriormente
Cada vez que instalemos programas con Cargo, es conveniente ejecutar este programa, con su comando más agresivo 'cargo-cache -e', para reducir el tamaño que ocupa la instalación de Rust y sus componentes. Actualizar la instalación de Rust cuando salga una nueva versión
Mostrar los componentes instalados de Rust
Directorio de instalación de Rust en nuestro directorio personal
Sccache Descarga sccache-0.8.2.tar.gz Extracción e Instalación como usuario Instalaremos Sccache sin las opciones de red, ya que la finalidad de este manual, es que funcione como un compilador caché de forma local. Si queremos utilizar las opciones de caché compartida de forma remota, no añadir --no-default-features al comando de instalación.
Instalación como root
Explicación de los comandos mv /home/jose/.cargo/bin /usr/bin; chown root:root /usr/bin/sccache : Mueve el binario creado como usuario a un directorio bin del sistema y cambia la propiedad al usuario root. Sustituir jose por el nombre de usuario de cada uno. install -dm755 /usr/libexec/sccache: Crea el directorio de ubicación de los enlaces duros (sccache no admite enlaces simbólicos), cuya ubicación activaremos con el correspondiente alias global de bash. for i in gcc g++ cc c++ clang clang++; do \ ln -f /usr/bin/sccache /usr/libexec/sccache/$i ; \ done : Crea los enlaces duros correspondientes relativos a GCC y Clang, apuntando al binario ejecutable sccache. Para activar Sccache, cuando lo creamos conveniente, creamos el alias global de Bash correspondiente, que instalaremos en /etc/profile.d.
Ahora basta ejecutar scc, para activar el uso de Sccache:
Para comprobar que estamos utilizando estos enlaces duros, nada mejor que utilizar el programa which, que se encarga de buscar el binario que le indiquemos previamente.
En el caso de uso de Clang, basta establecer la correspondiente variable de entorno, al igual que hicieramos si no tuvieramos instalado Sccache.
Otra solución es utilizar directamente Sccache sin enlaces duros alguno, estableciendo las correspondientes variables de entorno de uso de compilador, antes de configurar un determinado paquete. GCC
Clang
Estadísticas de Instalación de Sccache
Desinstalación como root 1) MODO TRADICIONAL ********************* 2) MODO MANUALINUX sccache-0.8.2-scripts.tar.gz
Copia de Seguridad como root Con este otro script creamos una copia de seguridad de los binarios compilados, recreando la estructura de directorios de los mismos en un directorio de copias de seguridad (copibin) que se crea en el directorio /var. Cuando se haya creado el paquete comprimido de los binarios podemos copiarlo como usuario a nuestro home y borrar el que ha creado el script de respaldo, teniendo en cuenta que si queremos volver a restaurar la copia, tendremos que volver a copiarlo al lugar donde se ha creado.
Restaurar la Copia de Seguridad como root Y con este otro script (que se copia de forma automática cuando creamos la copia de respaldo del programa) restauramos la copia de seguridad como root cuando resulte necesario.
Configuración de Sccache 1) El directorio por defecto de ubicación de la caché 2) Establecer un directorio único de caché para todos los usuarios 3) Limpiar la caché 4) Establecer el tamaño máximo de la caché 5) Estadísticas de uso 6) Utilizar Sccache con Rust 7) Volver a almacenar una compilación determinada (sobrescribir la caché) 8) Saber en todo momento, qué hace Sccache 1) El directorio por defecto de ubicación de la caché El directorio predefinido de ubicación de la caché de Sccache es el siguiente:
Y la ubicación del archivo de configuración es la siguiente:
Tanto en nuestro directorio personal, como en el directorio del root, el tamaño máximo definido por defecto de la caché es de 10 GB. A diferencia de Ccache, Sccache no permite modificar las opciones de configuración desde línea de comandos y, por lo tanto, no crea en ningún momento el archivo de configuración del mismo, hay que crearlo a mano, con lo que, en este manual recurriremos a las variables de entorno para modificar las opciones del programa. 2) Establecer un directorio único de caché para todos los usuarios La única condición que debe de tener este directorio es que sea accesible para lectura y escritura por todos los usuarios. La ventaja mayor es que nos ahorramos una duplicación de directorios, el del root y el nuestro propio. Lo primero que debemos de hacer es crear el directorio con los permisos correspondiente de acceso y escritura.
Luego, movemos como usuario, el contenido de la caché ubicada en nuestro directorio personal, al nuevo directorio.
La que tengamos en el directorio del root, que siempre será de menor tamaño, simplemente la borramos.
Editamos con cat el archivo que hemos creado antes e instalado en /etc/profile.d, sccache.sh y añadimos lo siguiente:
3) Limpiar la caché Sccache no tiene ninguna opción de limpieza de la caché, lo que deduzco que esta se limpia de forma automática cuando se llega al límite de la misma. En todo caso, como esto limita mucho su uso, incluyo la correspondiente función de Bash, que nos permitirá borrar la caché en función del rango de días que elijamos:
Si queremos borrar la caché del día 9 de febrero del año en curso, por ejemplo, ejecutamos lo siguiente:
Donde 09-02 es la fecha de inicio de los archivos de la caché que se borrarán, 10-02 es el día siguiente que se establece como tope de borrado y, por último, 24 es el año en curso. Esto último nos permite borrar cachés del año anterior, cuando cambiamos a un año nuevo. Editamos con cat el archivo que hemos creado antes e instalado en /etc/profile.d, sccache.sh y añadimos lo siguiente:
Si queremos ver antes, si hay archivos en la caché de una determinada fecha, pero no queremos borrarlos, añadimos lo siguiente:
Con el comando sccache-find, nos mostrará todos los archivos incluidos en la caché en un determinado rango de días.
4) Establecer el tamaño máximo de la caché Con la variable de entorno SCCACHE_CACHE_SIZE, estableceremos el tamaño máximo de la caché. El predefinido es de 10 GB, si por ejemplo, queremos ponerlo en 40 GB, lo añadimos al archivo, sscache.sh:
5) Estadísticas de uso Como cualquier aplicación caché que se precie, Sccache también nos muestra estadísticas de uso, pero a diferencia de Ccache, no las almacena de forma local. Sólo nos mostrará las estadísticas de la compilación en curso y hasta que, el demonio del programa, cese su actividad a los 10 minutos de ejecutarlo. Esto último se puede desactivar pero no es necesario, porque no supone ninguna carga para el sistema.
Para poner a cero las estadísticas, ejecutamos el siguiente comando:
6) Utilizar Sccache con Rust Para que Sccache, almacene las compilaciones de Rust, añadimos lo siguiente al archivo, sccache.sh:
7) Volver a almacenar una compilación determinada (sobrescribir la caché) Para que Sccache, vuelva a almacenar desde cero una determinada compilación, añadimos lo siguiente al archivo, sccache.sh:
Con scr activamos que se vuelva a almacenar desde cero una determinada compilación, y con noscr lo desactivamos. 8) Saber en todo momento, qué hace Sccache Esto es útil para comprobar cómo se comporta Sccache en el proceso de compilación. Nos permite también averiguar errores del mismo. Con la correspondiente variable de entorno, establecemos un archivo de registro de las tareas que realiza el programa. Como no es nada recomendable que lo haga por defecto, porque como es lógico, añade una sobrecarga al mismo, nos creamos un alias de bash, para utilizarlo cuando lo creamos oportuno y lo añadimos al final del archivo que estamos utilizando para configurar el programa:
Con sccl activamos el archivo de registro en la raíz de nuestro directorio personal, con el nombre sccache.log y con noccl lo desactivamos y borramos el archivo creado. Enlaces https://github.com/mozilla/sccache >> Enlace al proyecto del programa en GitHub. |