Variabili nel debian / rules makefile
Domanda
Devo portare un RPM (creato per Fedora) su Ubuntu come pacchetto deb.
Nel file RSP .spec sto usando diverse variabili ( $ RPM_BUILD_ROOT,% {_ libdir},% {name},% {version}
) per creare un link simbolico:
%install
...
(cd $RPM_BUILD_ROOT/%{_bindir}; ln -sf %{_libdir}/%{name}-%{version}/%{name} . )
(I link simbolici relativi sono vietati (per favore non chiedere perché) - ecco perché il comando ln
sembra strano.)
Quindi, quali sono gli equivalenti di quelle variabili nel makefile debian / rules
?
Grazie in anticipo.
Soluzione
(A parte: questo sembra qualcosa che dovrebbe fare il Makefile a monte, invece del packaging a valle.)
Dipende dal framework che stai usando per il tuo file rules
.
In CDBS , qualcosa del genere dovrebbe funzionare ...
#!/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)
Se hai un modo migliore per ottenere la versione (per esempio, $ (shell cat version.txt))
), usala. La versione Debian non è sempre la versione del pacchetto sorgente; qui, rimuovo l'epoca e l'eventuale versione del packaging, ma questo non è sempre corretto.
Altre classi CDBS potrebbero definire $$ {libdir}
e $$ {bindir}
, ma non ho visto nulla di comune.
Nota che dh_link
creerà collegamenti relativi, se possibile, anche quando vengono dati percorsi assoluti. Se questo è un problema, potresti dover ricorrere a qualcosa di veramente brutto come
cd debian/$(cdbs_curpkg) && ln -s ...
Altri suggerimenti
Nelle versioni più recenti di dpkg (1.17.0+), puoi ottenere la versione completa con:
DEBVER := $(shell dpkg-parsechangelog -SVersion)
E non è necessario usare sed per estrarre le parti, supponendo che tu abbia SHELL: = / bin / bash
. Usa l'interpolazione della stringa bash in questo modo:
DEBVERSION := $(shell debver="$(DEBVER)"; echo "${debver%-*}")