Pautas de empaquetado de D
ldc
Todas las dependencias de paquetes D sobre ldc a compilar, tal que cada paquete debe tener ldc como BuildRequires. En adición, el paquete ldc incluye algunas macros útiles para paquetes D.
Opciones del compilador
%{_d_optflags}
debe ser utilizado con ldc (normal %{optflags}
no aplica a ldc, solo a gcc).
%{_d_optflags}
está definido como:
-release -w -g -O2
-release disables asserts, invariants, contracts and boundscheck + -w enables warnings + -g generates debug information + -O2 is the optimisation level
Algunos paquetes D utilizan los Makefile, los cuales utilizan normalmente la variable $DFLAGS de la misma manera que paquetes C con Makefile utilian $CFLAGS. En este caso, export DFLAGS="%{_d_optflags}"
es usualmente apropiado. En otros casos, el guion de compilación en el paquete D tiene una opción para pasar en %{_d_optflags}
. Es lo responsabilidadmente del empaquetador para asegurar que %{_d_optflags}
sean utilizados con ldc cuando el paquete es compilado.
Bibliotecas
En este momento, Linux no admite bibliotecas compartidas para código de D (solo lo hace OSX). Como un resultado, los paquetes F están excluidos explícitamente desde las restricciones frente al empaquetado estático de bibliotecas.
Para compilar bibliotecas estáticas en D, utilice las mismas herramientas que lo haría para C, específicamente, ar, ranlib y strip.
Si su paquete D contiene bibliotecas estáticas, debe inhibir la generación de debuginfo, añadiendo esta línea al comienzo de su archivo spec:
%global debug_package %{nil}
Por otra parte, generaría un paquete de debuginfo vacío.
Todas las bibliotecas estáticas deben ser ubicadas en el subpaquete *-debel. Cuando haga esto, debe además tener Provides: %{name}-static = %{version}-%{release}
dentro de la definición del paquete de desarrollo.
Es posible que esto dejará el paquete raíz vacío, si esto es el caso, no liste una sección %file para el paquete raíz, solo para el paquete -devel. Esto es ilustrado en la plantilla de ejemplo a continuación.
Plantilla
%global debug_package %{nil} Nombre: algo Versión: 1.2.3 Lanzamiento: 1%{?dist} Sumario: Hace algo en D Grupo: Development/Libraries Licencia: LGPL-2.1-or-later URL: https://anywhere.com/ Fuente: https://anywhere.com/%{name}-%{version}.tar.bz2 BuildRequires: ldc Requiere: tango %description Tal y cual. %package devel Proporciona: %{name}-static = %{version}-%{release} Sumario: Admite para desarrollar aplicación en D. Grupo: Development/Libraries %prep %setup -q %build export DFLAGS="%{_d_optflags}" %configure make %{?_smp_mflags} %install mkdir -p %{buildroot}%{_libdir} mkdir -p %{buildroot}%{_d_includedir}/%{name}/ make install DESTDIR=%{buildroot} install -m 0644 lib/* %{buildroot}%{_libdir} install -m 0644 include/* %{buildroot}%{_d_includedir}/%{name}/ %clean rm -rf %{buildroot} %files devel %doc README.txt %license LICENSE.txt %{_d_includedir}/%{name}/ %{_libdir}/*.a %changelog * Wed Aug 25 2010 John Doe <jdoe@anywhere.com> 1.2.3-1 - initial package
Want to help? Learn how to contribute to Fedora Docs ›