Shortcut, einzelnes gluon package bauen!? (aus dem buildtree)


#1

geht das “relativ” einfach … oder ist das eher gewagt? <inkl. 1Lösung>

edit2: wie von @tcatm weiter unten angemerkt … wäre der einfache weg bspw.

make package/gluon-respondd/compile
make package/gluon-respondd/install

edit1: nicht ganz befriedigende Antwort : in den make_log die ich generiere steht der package name ja ziemlich deutlich …
mit einem grep -r gluon-foo-name make_160606_logfile |grep make bekomme ich den Mammut befehl … bisserl overkill, but at least it gives me what i want…

in diesem Fall:

/media/freifunk/firmware/gluon/package/gluon-respondd$ grep -r gluon-respondd /media/freifunk/firmware/logs/make_160607_0531.log |grep make
make[4]: Entering directory '/media/freifunk/firmware/gluon/package/gluon-respondd'
make[4]: Leaving directory '/media/freifunk/firmware/gluon/package/gluon-respondd'
make[5]: Entering directory '/media/freifunk/firmware/gluon/package/gluon-respondd'
CFLAGS="-Os -pipe -mno-branch-likely -mips32r2 -mtune=34kc -fno-caller-saves -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float -mips16 -minterlink-mips16  -I/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2_gluon-ar71xx-generic/usr/include -I/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2_gluon-ar71xx-generic/include -I/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/usr/include -I/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/include " CXXFLAGS="-Os -pipe -mno-branch-likely -mips32r2 -mtune=34kc -fno-caller-saves -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float -mips16 -minterlink-mips16  -I/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2_gluon-ar71xx-generic/usr/include -I/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2_gluon-ar71xx-generic/include -I/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/usr/include -I/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/include " LDFLAGS="-L/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2_gluon-ar71xx-generic/usr/lib -L/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2_gluon-ar71xx-generic/lib -L/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/usr/lib -L/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/lib " make -j1 -C /media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/build_dir/target-mips_34kc_uClibc-0.9.33.2_gluon-ar71xx-generic/gluon-respondd/. AR="mips-openwrt-linux-uclibc-gcc-ar" AS="mips-openwrt-linux-uclibc-gcc -c -Os -pipe -mno-branch-likely -mips32r2 -mtune=34kc -fno-caller-saves -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float" LD=mips-openwrt-linux-uclibc-ld NM="mips-openwrt-linux-uclibc-gcc-nm" CC="mips-openwrt-linux-uclibc-gcc" GCC="mips-openwrt-linux-uclibc-gcc" CXX="mips-openwrt-linux-uclibc-g++" RANLIB="mips-openwrt-linux-uclibc-gcc-ranlib" STRIP=mips-openwrt-linux-uclibc-strip OBJCOPY=mips-openwrt-linux-uclibc-objcopy OBJDUMP=mips-openwrt-linux-uclibc-objdump SIZE=mips-openwrt-linux-uclibc-size CROSS="mips-openwrt-linux-uclibc-" ARCH="mips" ;
make[6]: Entering directory '/media/freifunk/firmware/gluon/openwrt/build_dir/target-mips_34kc_uClibc-0.9.33.2_gluon-ar71xx-generic/gluon-respondd'
make[6]: Leaving directory '/media/freifunk/firmware/gluon/openwrt/build_dir/target-mips_34kc_uClibc-0.9.33.2_gluon-ar71xx-generic/gluon-respondd'
make[5]: Leaving directory '/media/freifunk/firmware/gluon/package/gluon-respondd'

#2

Hallo,

das ist jetzt für Leute ohne Logdatei nicht reproduzierbar. Magst du den konkreten Befehl, den du da rausfilterst mal hier einstellen?

Grüße
Matthias


#3

steht doch da … aber ich drösel das mal auf … das ist genau der Buildbefehl wie er für das Paket benutzt wurde …

(bekommt man wenn man mit seinem make zusätzlich v=99 | tee make_logdatei anfügt.)

unter der vorraussetzung das gluon im Verzeichnis /media/freifunk/firmware/gluon liegt und die komplette buildumgebung darin liegt,
man gehe in das gewünschte Packet Verzeichnis und ändere seinen kram …

# Setzen von Variablen ...
# man beachte das dort schon die buildumgebung (make download) von ar71xx-generic liegt
CFLAGS="-Os -pipe -mno-branch-likely -mips32r2 -mtune=34kc -fno-caller-saves -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float -mips16 -minterlink-mips16  -I/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2_gluon-ar71xx-generic/usr/include -I/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2_gluon-ar71xx-generic/include -I/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/usr/include -I/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/include "

# noch mehr variablen ...
CXXFLAGS="-Os -pipe -mno-branch-likely -mips32r2 -mtune=34kc -fno-caller-saves -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float -mips16 -minterlink-mips16  -I/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2_gluon-ar71xx-generic/usr/include -I/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2_gluon-ar71xx-generic/include -I/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/usr/include -I/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/include " 

# noch mehr Variablen .... 
LDFLAGS="-L/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2_gluon-ar71xx-generic/usr/lib -L/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2_gluon-ar71xx-generic/lib -L/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/usr/lib -L/media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/lib "

# der eigentliche buildbefehl ... eigentlich in 1 Zeile .. für Klarheit aber hier mal aufgedröselt
# und soweit bekannt kommentiert.
# empfehle dazu auch die MAN pages http://linux.die.net/man/1/make
make       # ja, starte den c mompiler entsprechend der Makefile
-j1           # benutze genau einen Prozessor 
-C /media/freifunk/firmware/gluon/build/ar71xx-generic/openwrt/build_dir/target-mips_34kc_uClibc-0.9.33.2_gluon-ar71xx-generic/gluon-respondd/. 
               # -C Zielverzeichnis 
AR="mips-openwrt-linux-uclibc-gcc-ar"
               # AR ? gerne jemand erklären, es ist der verwendete gcc compiler, zum. ein Teil
AS="mips-openwrt-linux-uclibc-gcc -c -Os -pipe -mno-branch-likely -mips32r2 -mtune=34kc -fno-caller-saves -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float"
               # das ist der konkrete compile mit ein batzen Variablen gesetzt
LD=mips-openwrt-linux-uclibc-ld
               # das müsste der Linker sein
NM="mips-openwrt-linux-uclibc-gcc-nm"
               # "list symbols of object files" = Zwischenstufe zum programm .o
CC="mips-openwrt-linux-uclibc-gcc"
               # nochmal der compiler in c
GCC="mips-openwrt-linux-uclibc-gcc"
               # nochmal der compiler
CXX="mips-openwrt-linux-uclibc-g++"
               # gnu c++ compiler 
RANLIB="mips-openwrt-linux-uclibc-gcc-ranlib"
               # ranblib?
STRIP=mips-openwrt-linux-uclibc-strip
              # irgendwas um programme KLEIN zu bekommen ?
OBJCOPY=mips-openwrt-linux-uclibc-objcopy
              # irgendwas um die object files
OBJDUMP=mips-openwrt-linux-uclibc-objdump
              # irgendwas um die object files
SIZE=mips-openwrt-linux-uclibc-size
CROSS="mips-openwrt-linux-uclibc-"
ARCH="mips"

Letztendlich schein mir das hier viel doppelt und dreifach deklariert wird, (weil das ja ineinander verschachteltes Bauen ist) … vermutlich braucht man vieles nur im “spezialfall” - oder wenn man debugflags gesetzt hat.
ich vermute das ein Teil der gesetzten Umgebungsvariablen ausreicht. (achtung ungeprüft)

Ich denke so ists ein wenig übersichtlicher … wenn man schonmal was davon gehört hat wie C (und derivate) funktioniert

randbemerkung: das baut euch NICHT die Firmware … nur (falls änderungen akut sind) das Paket und hinterlegt es in der Buildumgebung! Ich brauchte das weil ich das kompilierte respondd brauchte - und das nicht immer neu in der Firmware kompilieren wollte.

und damit ists auch ein unvollständiger Erklärbär geworden, und die Ausgangsfrage dahingehend beantwortet …
“ja es ist möglich , aber du musst nen sackvoll umgebungsvariablen setzen, dann kannst du ‘einfach’ make in irgendeinem Paketfolder ausführen”


#4

make package/gluon-respondd/compile
make package/gluon-respondd/install

Geht bei Gluon genauso wie bei OpenWrt: How to Build a Single Package [OpenWrt Wiki]


Airtime script überarbeitet (respondd + meshviewer/hopglass)