Compile y empaquete su aplicación

Compile y empaqute su aplicación MauiKit para Nova Flow OS / openSUSE Tumbleweed.

Tomando como ejemplo la aplicación MauiKit base (mauimusic) creada como se indica en:

MauiKit

1. Registre una cuenta en Open Build Service:

2. Crear un subproyecto y añadir el repositorio MauiKit:

  • En la página de subproyecto verá: Overview, Repositories, Monitor, Requests, etc.

  • Seleccione Repositories > Add from a project:

    • Project: home:hopeandtruth6517:mauikit-apps

    • Repositories: openSUSE_Tumbleweed

    • Name: mauikit-apps_Tumbleweed

    • Architectures: i586, x86_64

    El repositorio mauikit-apps depende a su vez del repositorio de openSUSE Tumbleweed, por lo que el repositorio añadido a su subproyecto tiene acceso a los 2 repositorios.

3. Seleccionar el subproyecto y crear un paquete:

  • Name: mauimusic

  • Title: Maui Music

  • Description: Discover and listen music

3. De un modo sencillo (sin integración git):

  • Elimine la carpeta mauimusic/build si ha compilado y ejecutado localmente.

  • Haga una copia de la carpeta mauimusic y renómbrela mauimusic-0.1.0.

  • Con el gestor de archivos Dolphin, haga click sobre la carpeta mauimusic-0.1.0 y seleccione Compress > Here as "mauimusic-0.1.0.tar.gz"

  • Suba el archivo en Open Build Service: Add local files.

4. En la página de paquete mauimusic seleccione:

  • Add an empty file or service > Filename: mauimusic.spec

5. Añade a mauimusic.spec:

La aplicación debería compilar exitosamente: succeeded

El fichero spec.

De un modo práctico con cada aplicación sólo tendrá que rellenar:

  • Name, Versión, License, Summary, URL.

  • BuildRequires y Requires.

  • Description.

  • Files.

BuildRequires:

Son los requerimientos durante la compilación. Son paquetes "devel".

  • mauimusic/CMakeLists.txt (busque todas las líneas find_package):

  • mauimusic/src/CMakeLists.txt (busque todo en target_link_libraries)

Cada uno de ellos es un requerimiento de compilación y debe ser incluido como BuildRequires.

Abra Gestión de Software de YaST:

  • Qt5Core / paquete libQt5Core-devel / dependencias > proporciona: cmake(Qt5Core)

  • KF5I18n / paquete ki18n-devel / dependencias > proporciona: cmake(KF5I18n)

Para buscar el paquete que corresponde a cmake(Qt5Core), indíquelo en:

Si ha encontrado la librería binaria compilada y desea conocer el paquete devel tambien puede buscarlo en:

  • libKF5I18n5

Seleccione en los resultados: libKF5I18n5 > official release > ki18n.spec:

  • Name: ki18n

  • %package devel: nombre resultante ki18n-devel

  • %package addon: nombre resultante ki18n-addon (ejemplo, no existe)

o bien:

  • %define lname libKF5I18n5

  • %package -n %{lname}: nombre resultante libKF5I18n5

  • %package -n libMusic: nombre resultante libMusic

Requires:

Paquetes requeridos durante la instalación.

  1. Paquetes binarios de cada librería.

  2. Paquetes correspondientes a cada "import".

Dado que vienen instalados por defecto es costumbre no indicarlos, pero es necesario incluirlo si no se encuentra instalado.

Para comprobar los import:

  • Instale Bluefish.

  • Navegar hasta mauimusic > click derecho o secundario ratón sobre mauimusic > Buscar archivos:

  • Escriba: import y click "buscar todos".

Comprobando en:

  • qt5qmlimport(QtQuick.Controls.2) es: libqt5-qtquickcontrols2-5.15.11+kde5-1.1.x86_64.rpm

  • qt5qmlimport(QtQuick.Layouts.1) es: qtdeclarative-imports-provides-qt5-1.0-1.22.x86_64.rpm

Files

Indicados en mauimusic/CMakeLists.txt

Si alguna vez compila una aplicación y no sabe que archivos se instalan, no incluya nada en la sección Files y compile. Si la compilación es correcta, producirá "failed" antes de empaquetar, pero le indicará los archivos y rutas de instalación.

El nombre del ejecutable o binario es el nombre del proyecto:

Macros de rutas.

%{_sysconfdir}

/etc

%{_prefix}

/usr

can be defined to /app for flatpak builds

%{_exec_prefix}

%{_prefix}

default: /usr

%{_includedir}

%{_prefix}/include

default: /usr/include

%{_bindir}

%{_exec_prefix}/bin

default: /usr/bin

%{_libdir}

%{_exec_prefix}/%{_lib}

default: /usr/%{_lib}

%{_libexecdir}

%{_exec_pre-fix}/libexec

default: /usr/libexec

%{_sbindir}

%{_exec_prefix}/sbin

default: /usr/sbin

%{_datadir}

%{_datarootdir}

default: /usr/share

%{_infodir}

%{_datarootdir}/info

default: /usr/share/info

%{_mandir}

%{_datarootdir}/man

default: /usr/share/man

%{_docdir}

%{_datadir}/doc

default: /usr/share/doc

%{_rundir}

/run

%{_localstatedir}

/var

%{_sharedstatedir}

/var/lib

%{_lib}

Lib64 / lib on 32bit platforms

%{_dataroot-dir}

%{_prefix}/share

default: /usr/share

%{_var}

/var

%{_tmppath}

%{_var}/tmp

default: /var/tmp

%{_usr}

/usr

%{_usrsrc}

%{_usr}/src

default: /usr/src

%{_initddir}

%{_sysconfdir}/rc.d/init.d

default: /etc/rc.d/init.d

%{_initrddir}

%{_initddir}

antiguo error ortográfico, retro-compatibilidad

%{buildroot}

%{_buildrootdir}/%{name}-%{version}-%{release}.%{_arch}

same as $BUILDROOT

%{_topdir}

%{getenv:HOME}/rpmbuild

%{_builddir}

%{_topdir}/BUILD

%{_rpmdir}

%{_topdir}/RPMS

%{_sourcedir}

%{_topdir}/SOURCES

%{_specdir}

%{_topdir}/SPECS

%{_srcrpmdir}

%{_topdir}/SRPMS

%{_buildrootdir}

%{_topdir}/BUILDROOT

%{_kf5_libdir}

/usr/%{_lib}

%{_kf5_configkcfgdir}

/usr/share/config.kcfg

%{_docdir}

/usr/share/doc/packages

Otras secciones

Last updated