Question

Je dois porter un RPM (conçu pour Fedora) sur Ubuntu en tant que paquet deb.

Dans le fichier .spec RPM, j'utilise plusieurs variables ( $ RPM_BUILD_ROOT,% {_ libdir},% {name},% {version} ) pour créer un lien symbolique:

%install
...
(cd $RPM_BUILD_ROOT/%{_bindir}; ln -sf %{_libdir}/%{name}-%{version}/%{name} . )

(Les liens symboliques relatifs sont interdits (merci de ne pas demander pourquoi) - c'est pourquoi la commande ln a l'air étrange.)

Alors, quels sont les équivalents de ces variables dans le fichier makefile debian / rules ?

Merci d'avance.

Était-ce utile?

La solution

(De plus: cela semble être quelque chose que le Makefile en amont devrait faire, au lieu de l’emballage en aval.)

Dépend du framework que vous utilisez pour votre fichier rules .

Dans CDBS , quelque chose comme cela devrait fonctionner ...

#!/usr/bin/make -f

include /usr/share/cdbs/1/rules/debhelper.mk
# probably what you want (automagic happens),
# but I don't know details of your package
#include /usr/share/cdbs/1/class/automake.mk

DEBVERS := $(shell dpkg-parsechangelog | sed -n -e 's/^Version: //p')
VERSION := $(shell echo '$(DEBVERS)' | sed -e 's/^[[:digit:]]*://' -e 's/[~-].*//')

install/$(DEB_ALL_PACKAGES)::
        dh_link -p$(cdbs_curpkg) \
                /usr/lib/$(cdbs_curpkg)-$(VERSION)/$(cdbs_curpkg) \
                /usr/bin/$(cdbs_curpkg)

Si vous avez un meilleur moyen d'obtenir la version (par exemple, $ (shell cat version.txt)) ), utilisez-le. La version de Debian n’est pas toujours la version du paquet source; Ici, je décape la version d’époque et d’emballage, le cas échéant, mais ce n’est pas toujours correct.

D'autres classes CDBS pourraient définir $$ {libdir} et $$ {bindir} , mais je n'ai rien vu de commun.

Notez que dh_link créera des liens relatifs si possible, même avec des chemins absolus. Si cela pose un problème, vous devrez peut-être recourir à quelque chose de vraiment méchant, comme

        cd debian/$(cdbs_curpkg) && ln -s ...

Autres conseils

Dans les versions plus récentes de dpkg (1.17.0+), vous pouvez obtenir la version complète avec:

DEBVER := $(shell dpkg-parsechangelog -SVersion)

Et il n'est pas nécessaire d'utiliser sed pour extraire les pièces, en supposant que vous ayez SHELL: = / bin / bash . Il suffit d’utiliser une interpolation de chaîne bash comme ceci:

DEBVERSION := $(shell debver="$(DEBVER)"; echo "${debver%-*}")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top