Welcome, Guest. Please login or register.
Did you miss your activation email?

Author Topic: [DE] make deb  (Read 2847 times)

Offline brummer

  • User
  • Posts: 276
    • http://guitarix.sourceforge.net/
[DE] make deb
« on: 2011/12/16, 11:54:17 »
Moin

Für mein letztes Projekt wollte ich den Usern die Möglichkeit geben selbst einfach ein debian Paket aus den Quelle zu bauen, dafür habe ich einen MACRO im Makefile entwickelt.

Zunächst mal die Deklarationen (üblicherweise am Anfang des Makefiles) :

Die Installationspfade sind meistens schon so (oder ähnlich) deklariert
Code: [Select]
  PREFIX = /usr
BIN_DIR = $(PREFIX)/bin
SHARE_DIR = $(PREFIX)/share
DESKAPPS_DIR = $(SHARE_DIR)/applications
PIXMAPS_DIR = $(SHARE_DIR)/pixmaps


Wir definieren noch folgende MACROS dazu:
Code: [Select]
  CREATEDEB = yes '' | dh_make -s -n -e $(USER)@org -c gpl -i >/dev/null
DIRS = $(BIN_DIR)  $(DESKAPPS_DIR)  $(PIXMAPS_DIR)
BUILDDEB = dpkg-buildpackage -rfakeroot -b 2>/dev/null | grep dpkg-deb


CREATEDEB erzeugt mit hilfe von dh_make den debian ordner
DIRS enthält die Installationspfade
BUILDDEB baut das debian Paket.

nun müssen wir schauen ob im Abschnitt install :
die variable $(DESTDIR) verwendet wird, falls nicht, müssen wir sie dazu fügen. install sollte dann so (oder ähnlich) aussehen:

Code: [Select]
install :
install name $(DESTDIR)$(BIN_DIR)
install name.desktop $(DESTDIR)$(DESKAPPS_DIR)
install name.png $(DESTDIR)$(PIXMAPS_DIR)


nun können wir user build MACRO einfügen, irgendwo, aber nicht als erstes MACRO.

Code: [Select]
deb :
@rm -rf ./debian
@echo "create ./debian"
-@ $(CREATEDEB)
@echo "touch ./debian/dirs
-@echo $(DIRS) > ./debian/dirs
@echo "try to build debian package, that may take some time"
-@ if $(BUILDDEB); then echo ". ., done"; else \
     echo "sorry, build fail"; fi
@rm -rf ./debian


wenn man nun im source Verzeichnis "make deb" eingibt, wird das debian Paket gebaut, wenn alles gut geht.
Das CREATEDEB MACRO ist für single binarys ausgelegt, für Bibliotheken oder multi binarys müsste es entsprechend angepasst werden. siehe man dh_make

viel Spaß