Compilando Fritzing en ArchLinux

Para instalar Fritzing en Archlinux no la tenemos en los repositorios oficiales así que nos quedan las siguientes opciones una es AppImage, de pago, bajada de la propia pagina pero no me suelen gustar las AppImage otra opción es usar AUR ya sea con «yay» o directamente pero después de las ultimas noticias de malware no me siento seguro.

Así que decidí volver a la compilación directa de programas que no están en los repositorios oficiales y si estan en github perfecto pues los actualizo cuando deseo. La verdad es que me base un poco en que hacia AUR pero eso me obligo a comprobar por completo el AUR y ademas solucione algunos problemas que vi.

Sin mas empezamos con sus diferentes fases:

1.- Instalar las dependencias

Lo primero que deberemos hacer es instalar los programas necesarios para compilar, así como librerías y dependencias.

sudo pacman -S base-devel cmake 
sudo pacman -S qt6-5compat 
sudo pacman -S --asdeps boost git patchelf qt6-tools
sudo pacman -S glibc libgcc libgit2 libstdc++ 
sudo pacman -S qt6-base qt6-serialport qt6-svg quazip-qt6 ngspice zlib

Seria interesante también instalar polyclipping pero no se encuentra en los repositorios oficiales, así que lo resolveremos descargando los ficheros de clipperV1, como veremos más adelante.

Con las dependencias instaladas crearemos un directorio de trabajo, que es donde descargaremos los ficheros fritzing y librerías necesarias que no están disponibles en los repositorios oficiales.

mkdir -p ~/Fritzing
cd ~/Fritzing

2.- Descarga de fuentes y librerías necesarias

Lo primero es clonar los repositorios de fritzing, tanto del programa como componentes.

git clone https://github.com/fritzing/fritzing-app.git
git clone https://github.com/fritzing/fritzing-parts.git

La primera librería que necesitaremos, en realidad solo las cabeceras sera las de SVG++ ademas de descargarlas la desempaquetaremos y las instalaremos en un directorio dentro del nuestro de trabajo con un nombre especial que se utilizara en los ficheros de compilación que tocaremos.

wget https://github.com/svgpp/svgpp/archive/refs/tags/v1.3.1.tar.gz
mv v1.3.1.tar.gz svgpp-1.3.1.tar.gz  
tar -xvf svgpp-1.3.1.tar.gz

Después las cabeceras de clipper, y su fuente y se instalara en un directorio especial, que crearemos, de la aplicación fritzing.

mkdir -p fritzing-app/src/lib/clipper

curl -sSL https://sourceforge.net/p/polyclipping/code/HEAD/tree/trunk/cpp/clipper.hpp?format=raw -o fritzing-app/src/lib/clipper/clipper.hpp

curl -sSL https://sourceforge.net/p/polyclipping/code/HEAD/tree/trunk/cpp/clipper.xpp?format=raw -o fritzing-app/src/lib/clipper/clipper.xpp

3.- Parcheo de código y ficheros configuración

Lo primero sera situarnos en el directorio de aplicación que se creo con git clone..

cd ~/Fritzing/fritzing-app

Primer fichero a modificar phoenix.pro, que es el fichero principal de proyecto de QMake (QMake Project File). para saber qué y cómo compilar. En el se definen las estructuras de archivos y gestiona los modulos Qt, que es lo que realmente nos importa pues añadiremos el modulo «core5compat» para poder usar «quazip-qt6«.

phoenix.pro
   Añadir a QT core5compat para tener quazip-qt6
			QT += concurrent core gui network printsupport serialport sql svg widgets xml svgwidgets openglwidgets core5compat
   Borrar las siguiente slineas para evitar el requerimiento de versión QT
      QT_LEAST=6.5.3
      QT_MOST=6.10.10
      !versionAtLeast(QT_VERSION, $${QT_LEAST}):error("Use at least Qt version $${QT_LEAST}")
      !versionAtMost(QT_VERSION, $${QT_MOST}):error("Use at most Qt version $${QT_MOST}")

Ahora continuaremos con otros archivos que son auxiliares de phoenix.pro. El primer fichero es «pri/quazipdetect.pri» antes de eso veremos el PATH de QuaZip-Qy6 con el comando «pacman -Ql quazip-qt6 | grep include«

pri/quazipdetect.pri   (Dejamos solo este código)
   SOURCES += \
       src/zlibdummy.c \
	 
   message("including Arch's quazip library")
   INCLUDEPATH += /usr/include/QuaZip-Qt6-1.7.2/
   LIBS += -lquazip1-qt6

Continuamos con «pri/spicedetect.pri» que nos permitirá encontrar ngspice y debe quedar de la siguiente forma.

pri/spicedetect.pri     
   message("Using customized ngspice detect script.")
   NGSPICEPATH = "/usr/include/ngspice/"
	 
   exists($$NGSPICEPATH) {
      message("using $${NGSPICEPATH}")
      INCLUDEPATH += $$NGSPICEPATH
   } else {
       error("ngspice not found in $${NGSPICEPATH}")
   }

El siguiente archivo .pri a modificar es clipper1detect.pri que nos permitirá encontrar los encabezados y fuentes de clipper.

pri/clipper1detect.pri    
   # 1. Definir el módulo como presente para el proyecto
   DEFINES += MINGW_CLIPPER
   # 2. Agregar la carpeta local al include path para que encuentre clipper.hpp
   INCLUDEPATH += $$PWD/../src/lib/clipper
   # 3. Incluir las fuentes de Clipper en el proceso de compilación
   HEADERS += $$PWD/../src/lib/clipper/clipper.hpp
   SOURCES += $$PWD/../src/lib/clipper/clipper.cpp

Ahora antes de compilar nos queda modificar un ultimo fichero que es «org.fritzing.Fritzing.desktop» que nos permitirá lanzar Frtizing.

sed -i 's/Exec=Fritzing/Exec=env QT_AUTO_SCREEN_SCALE_FACTOR=0 Fritzing/' org.fritzing.Fritzing.desktop

4.- Compilación

Ya empezamos con lo fuerte, pues tardara un ratito, que es la compilación decir que en caso de que se aborte y queramos limpiar lo compilado porque modifiquemos algo en un fichero ejecutaremos «rm -rf build .qmake.stash«.

Las fases, siempre que estemos en «fritzing-app», seran:

  • Generar las traducciones
  • Crear y situarnos en la carpeta de compilación
  • Generar Makefile QT6
  • Compilar
/usr/bin/lrelease-pro6 phoenix.pro
mkdir build && cd build
qmake6  ..
make

5.- Instalación

Una vez llegado a este punto solo nos queda instalarlo y podremos borrar el directorio de trabajo, yo no lo borro pero todo depende del espacio que dispongamos en el disco así si ejecuto «git pull» en «fritzing-app» y veo que lo han actualizado lo recompilo.

En este caso nos situaremos en el directorio build que es donde se compilo el programa, seguramente todavía estemos en el. Las fases serán:

  • Instala los ficheros compilados.
  • Copia la ruta de componentes a las rutas del sistema.
  • Generamos la Base de Datos «parts.db»
  • Borramos temporales de las partes innecesarios.
sudo make install 

sudo cp -dr ../../fritzing-parts /usr/share/fritzing/

sudo Fritzing -db /usr/share/fritzing/fritzing-parts/parts.db -pp /usr/share/fritzing/fritzing-parts -f  /usr/share/fritzing -platform offscreen

sudo rm -rf /usr/share/fritzing/fritzing-parts/.git{,ignore}

Esperemos que os sea útil, es cierto que es un poco más costoso en tiempo que un AUR directamente y que si se actualiza debemos de comprobarlo nosotros a mano con «git pull» pero la verdad es que se aprende mucho y me quita el miedo de AUR.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Javier.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a Hostinger.es que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Ver
Privacidad