onsdag 23 december 2009

Försmak

Imorrn kör vi mot Uppsala.

Ute är mörkt och kallt, i alla husen lyser de överallt, de tända ljusen...


Ekologisk julskinka!

För övrigt var det svårt att slita sig från jobbet idag igen...

(Ni som inte vad gmake är kan nog sluta läsa här...)

Jag skulle bara få ett bygge att kompilera som det skulle så kunde jag checka in och gå hem nöjd. Men för att bygga var jag tvungen att anropa solaris-make från gmake. Ok, borde inte vara nåt problem:

cd dir && make

Men jag kör gmake i jobserver-mode (-j, parallellexekvering, är snabbt) och gmake fattar när man anropar make och låter flaggor gå med. Make klagade på dumma flaggan -j. Google förtäljde att gmake för över flaggor via environmentvariabeln MAKEFLAGS (och MFLAGS). Dessa kan inaktiveras genom att köra:

cd dir && make MAKEFLAGS= MFLAGS=

Men make klagade fortfarande på dumma -j. Varför funkade det inte så som gmakemanualen sa att det skulle funka?

cd dir && env
cd dir && env MAKEFLAGS= MFLAGS=

Jodå, där syns klart att -j först finns och sen försvinner från environmentvariablerna. Que? Är det nåt med att make heter just "make" och att gmake är för smart för sitt eget bästa?

cd dir && runmk.sh MAKEFLAGS= MFLAGS=

Jag skrev ett shellscript, runmk.sh, som bara körde make. Funkade inte. Nu började jag tycka att gmake var både aningen creepy och väldigt elakt. Hur kan det gå in i mitt skript och skicka med flaggor? Men när jag la med ett env i skriptet också (environmentvariablerna var satta till -j) och pratade med lite smarta jobbarkompisar började det klarna.

Det är upp till det kommando man köra att begripa att VARIABLE= betyder att man ska ta bort den. Det funkar för env och gmake (därför instruktionen i gmakemanualen). Men inte för varken solaris-make eller /bin/sh.

Lösningen?

cd dir && env MAKEFLAGS= MFLAGS= make

2 Comments:

Skicka en kommentar

<< Home


 
www.flickr.com
Torkel Danielsson's items Go to Torkel Danielsson's photostream