2004-02-11 19:24:35 +00:00
# generic utility modules
# (c) 2004 jannet it services
# contact@jannet.de
# $Id$
# config
#KERNEL_VERSION = 2.4.24
#HOST = zwischenhuber
#CUSTOMER = jannet
#KERNEL_PKG = /home/samba/dat/share/exe/linux/os/$(basename $(KERNEL_VERSION))/linux-$(KERNEL_VERSION).tar.gz
#KERNEL_BASE = linux-$(CUSTOMER)-$(HOST)
#UPLOAD_HOST = ftp.jannet.de
#UPLOAD_PATH = /home/ftp/dat/pub/packages/$(CUSTOMER)/linux/$(HOST)
#UPLOAD_OWNER = $(shell whoami)
# abbreviations
2005-04-05 14:30:38 +00:00
d e f i n e E X T R A V E R S I O N
2005-04-25 15:44:15 +00:00
$( shell sed '/^ *EXTRAVERSION *=/ !d ; s /^ *EXTRAVERSION *= *-*//; s / *$ $ //' linux -$ ( KERNEL_VERSION ) /Makefile 2>/dev /null )
2005-04-05 14:30:38 +00:00
e n d e f
2005-04-30 22:09:08 +00:00
KERNEL_MAJOR = $( shell echo $( KERNEL_VERSION) | cut -d\. -f1)
KERNEL_MINOR = $( shell echo $( KERNEL_VERSION) | cut -d\. -f2)
KERNEL_PKG_BASE = /home/samba/dat/share/exe/linux/os/$( KERNEL_MAJOR) .$( KERNEL_MINOR) /linux-$( KERNEL_VERSION) .tar
i f n e q ( $( wildcard $ ( KERNEL_PKG_BASE ) .gz ) , )
KERNEL_PKG = $( KERNEL_PKG_BASE) .gz
KERNEL_SRC_DIR = $( shell tar -tzf $( KERNEL_DIR) /$( KERNEL_PKG) | head -1)
e n d i f
i f n e q ( $( wildcard $ ( KERNEL_PKG_BASE ) .bz 2) , )
KERNEL_PKG = $( KERNEL_PKG_BASE) .bz2
KERNEL_SRC_DIR = $( shell tar -tjf $( KERNEL_DIR) /$( KERNEL_PKG) | head -1)
e n d i f
2004-02-11 19:24:35 +00:00
#HOST = $(shell cd ../..; pwd | xargs basename)
WD := $( shell pwd )
2005-04-05 14:30:38 +00:00
TMP_INSTALL = $( KERNEL_BASE) -$( KERNEL_VERSION) -$( EXTRAVERSION)
2005-04-30 22:09:08 +00:00
TAG = $( shell echo V_$( KERNEL_VERSION) _$( RPM_RELEASE) | sed 's/\./_/g' )
2005-03-30 15:42:59 +00:00
ARCH = $( shell $( RPMBUILD) --showrc | sed '/build arch / !d; s/.*build arch *://; s/ //g' )
2004-02-11 19:24:35 +00:00
2005-04-05 14:30:38 +00:00
RPMBUILD = $( shell which rpmbuild 2>/dev/null)
i f e q ( $( RPMBUILD ) , )
RPMBUILD = $( shell which rpm 2>/dev/null)
e n d i f
2005-04-30 22:09:08 +00:00
#ifeq ($(wildcard RELEASE-$(KERNEL_VERSION)),)
#RPM_RELEASE := $(shell make newrelease; exit 1)
#else
#RPM_RELEASE_NUM := $(strip $(shell grep Id: RELEASE-$(KERNEL_VERSION) | sed "s/.*RELEASE-$(KERNEL_VERSION),v[ ]*[0-9]*\.\([0-9]*\)[^0-9]*.*/\1/"))
#ifeq ($(UNAME_SUFFIX),)
#RPM_RELEASE = $(RPM_RELEASE_NUM)
#else
#RPM_RELEASE = $(UNAME_SUFFIX)$(RPM_RELEASE_NUM)
#endif
#endif
2004-02-11 19:24:35 +00:00
2005-04-05 14:30:38 +00:00
2004-08-19 10:27:31 +00:00
i f e q ( $( BOOT_LABEL ) , )
2005-04-05 14:30:38 +00:00
BOOT_LABEL = lx-$( KERNEL_VERSION) -$( EXTRAVERSION)
2004-08-19 10:27:31 +00:00
e n d i f
2005-04-05 14:30:38 +00:00
BASE = $( KERNEL_BASE) -$( KERNEL_VERSION) -$( EXTRAVERSION)
BASE_RUN = $( KERNEL_BASE) -run-$( KERNEL_VERSION) -$( EXTRAVERSION)
BASE_DEVEL = $( KERNEL_BASE) -devel-$( KERNEL_VERSION) -$( EXTRAVERSION)
2004-02-11 19:24:35 +00:00
2004-02-23 12:13:56 +00:00
KERNEL_TGZ = $( notdir $( KERNEL_PKG) )
2004-02-11 19:24:35 +00:00
F_SPEC = $( BASE) .spec
F_TGZ = $( BASE) .tar.gz
F_SPM = $( BASE) .src.rpm
2005-01-31 14:03:17 +00:00
F_RPM_RUN = $( BASE_RUN) .$( ARCH) .rpm
F_RPM_DEVEL = $( BASE_DEVEL) .$( ARCH) .rpm
2004-02-11 19:24:35 +00:00
F_RPMS = $( F_RPM_RUN) $( F_RPM_DEVEL)
2005-04-05 14:30:38 +00:00
F_BOOTFILES = $( addsuffix -$( KERNEL_VERSION) -$( EXTRAVERSION) ,$( addprefix $( TMP_INSTALL) /boot/,vmlinuz config System.map) )
2004-02-11 19:24:35 +00:00
F_CURRENT = $( addprefix CURRENT_, SRC RPM_SRC RPM_RUN_I386 RPM_DEVEL_I386)
F_ULDONE = $( addsuffix .uldone,$( F_RPMS) $( F_TGZ) $( F_SPM) current)
# note that order matters for F_ULDONE and F_RPMS (remote directory attributes)
KERNEL_INSTALL_PREFIX = $( shell pwd ) /$( TMP_INSTALL)
2004-08-18 12:42:05 +00:00
BUILD = build_linux.sh \
2004-02-11 19:24:35 +00:00
-c config-$( KERNEL_VERSION) \
-t $( HOST) \
-b $( WD) \
2005-01-31 13:54:46 +00:00
-a i386 \
2004-02-11 19:24:35 +00:00
-s $( KERNEL_SRC_DIR) \
-i $( TMP_INSTALL)
MKSPEC := $( shell which mkspec-linux.sh)
2005-03-30 15:42:59 +00:00
PATCHES += $( wildcard $( LINUX_KERNEL_PATCH_DIR) /*-$( KERNEL_VERSION) .patch) \
$( wildcard $( LINUX_KERNEL_PATCH_DIR) /*-$( KERNEL_VERSION) .diff)
LOCAL_PATCHES = $( notdir $( PATCHES) )
2005-04-04 13:49:39 +00:00
LOCAL_PRE_BUILD += patches.done
2005-03-30 15:42:59 +00:00
2004-02-11 19:24:35 +00:00
# exports
export KERNEL_VERSION
export KERNEL_INSTALL_PREFIX
# first target
all : rpm
# file rules
2004-05-12 05:14:26 +00:00
$(KERNEL_PKG) :
2004-07-29 11:38:49 +00:00
mkdir -p $( dir $( KERNEL_PKG) )
2004-02-23 12:13:56 +00:00
ftp -a ftp.kernel.org:/pub/linux/kernel/v$( basename $( KERNEL_VERSION) ) /$( KERNEL_TGZ)
2004-05-12 05:14:26 +00:00
install -m 664 $( KERNEL_TGZ) $@
2004-02-11 19:24:35 +00:00
config-$(KERNEL_VERSION) :
2005-04-30 22:09:08 +00:00
cp $( shell ls config-$( KERNEL_MAJOR) .$( KERNEL_MINOR) .* | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]\)[.$$]./\1.\2.0\3/; s/\.\([0-9]\)$$/.0\1/' | sort -g | sed 's/\.0/./g; $$ !d' ) $@
2004-02-11 19:24:35 +00:00
cvs add $@
2005-04-30 22:09:08 +00:00
cvs commit $@
2005-01-31 13:54:46 +00:00
2005-04-25 15:44:15 +00:00
# if ($$0 ~ "^ *EXTRAVERSION *= [0-9]*.[0-9]*.[0-9]") { \
toplevel-makefile : patches .done
2005-04-30 22:09:08 +00:00
awk -v release = $( RPM_RELEASE) ' { \
2005-04-25 15:44:15 +00:00
if ( $$ 0 ~ /EXTRAVERSION *= *-/) { \
oldextra = $$ 3; \
gsub( /-/,_,oldextra) ; \
2005-04-30 22:09:08 +00:00
printf "EXTRAVERSION = -%s_%s\n" , release, oldextra \
} else if ( $$ 0 ~ /EXTRAVERSION *= *\. /) { \
oldextra = $$ 3; \
gsub( /-/,_,oldextra) ; \
printf "EXTRAVERSION = %s-%s\n" ,oldextra, release \
2005-04-25 15:44:15 +00:00
} else if ( $$ 0 ~ /EXTRAVERSION *= *$$ /) { \
printf "EXTRAVERSION = -%s\n" ,release \
} else { \
print $$ 0 \
} \
} ' linux-$( KERNEL_VERSION) /Makefile >$@
2005-04-30 22:09:08 +00:00
# sed "s/\(^ *EXTRAVERSION *= *[^ ]*\) *$$/\\1$(shell echo _$(RPM_RELEASE) | sed 's/^_/-/')/" \
2004-08-18 18:09:20 +00:00
linux-$(KERNEL_VERSION)/Makefile : toplevel -makefile
cp $< $@
2004-02-11 19:24:35 +00:00
unpack.done : $( KERNEL_PKG )
2005-04-25 19:14:31 +00:00
rm -rf linux-$( KERNEL_VERSION)
i f e q ( $( suffix $ ( KERNEL_PKG ) ) , . g z )
2004-02-11 19:24:35 +00:00
tar -xzf $( KERNEL_PKG)
2005-04-25 19:14:31 +00:00
e n d i f
i f e q ( $( suffix $ ( KERNEL_PKG ) ) , . b z 2 )
tar -xjf $( KERNEL_PKG)
e n d i f
2004-02-11 19:24:35 +00:00
touch $@
2005-01-31 13:54:46 +00:00
%.lxdone : unpack .done config -$( KERNEL_VERSION ) $( LOCAL_PRE_BUILD ) linux -$( KERNEL_VERSION ) /Makefile
2004-02-11 19:24:35 +00:00
$( BUILD) $( basename $@ )
touch $@
2005-04-05 14:30:38 +00:00
$(TMP_INSTALL)/$(F_SPEC) : linux -$( KERNEL_VERSION ) /Makefile $( MKSPEC ) Makefile
2005-04-30 22:09:08 +00:00
$( MKSPEC) -d $( TMP_INSTALL) -b $( KERNEL_BASE) -v $( KERNEL_VERSION) -r $( EXTRAVERSION) -a $( ARCH) -l $( BOOT_LABEL) > $@
2005-04-05 14:30:38 +00:00
2005-04-30 22:09:08 +00:00
$(TMP_INSTALL)/boot/%-$(KERNEL_VERSION)-$(RPM_RELEASE) : build .lxdone $( LOCAL_AFTER_KERNEL_BUILD )
2004-02-11 19:24:35 +00:00
@echo -n
.PRECIOUS : $( TMP_INSTALL ) /boot /%-$( KERNEL_VERSION )
2005-04-30 22:09:08 +00:00
$(TMP_INSTALL)/boot/%-$(KERNEL_VERSION)-$(RPM_RELEASE) : $( TMP_INSTALL ) /boot /%-$( KERNEL_VERSION )
cp $< $@
2004-02-11 19:24:35 +00:00
$(F_TGZ) : Makefile build .lxdone $( F_BOOTFILES ) $( TMP_INSTALL ) /$( F_SPEC )
tar -czf $@ \
$( F_BOOTFILES) \
$( addprefix $( TMP_INSTALL) /, \
lib \
$( F_SPEC) \
)
%.src.rpm : %.tar .gz
2005-03-30 15:42:59 +00:00
$( RPMBUILD) -ts $<
2004-02-11 19:24:35 +00:00
cp /usr/src/packages/SRPMS/$@ .
rpm.done : $( F_SPM )
2005-03-30 15:42:59 +00:00
$( RPMBUILD) --rebuild $( F_SPM)
2004-02-11 19:24:35 +00:00
touch $@
2005-01-31 14:03:17 +00:00
%.$(ARCH).rpm : rpm .done
cp /usr/src/packages/RPMS/$( ARCH) /$@ .
2004-02-11 19:24:35 +00:00
CURRENT_RPM_RUN_I386 : $( F_RPM_RUN )
echo $( UPLOAD_PATH) /rpm/run/$( F_RPM_RUN) > $@
CURRENT_RPM_DEVEL_I386 : $( F_RPM_RUN )
echo $( UPLOAD_PATH) /rpm/devel/$( F_RPM_DEVEL) > $@
CURRENT_RPM_SRC : $( F_RPM_RUN )
echo $( UPLOAD_PATH) /rpm/src/$( F_RPM_SRC) > $@
CURRENT_SRC : $( F_RPM_RUN )
echo $( UPLOAD_PATH) /src/$( F_TGZ) > $@
update.done :
cvs update -dP
make rpm
touch $@
upload.done : $( F_RPMS )
touch $@
%.tar.gz.uldone : %.tar .gz
upload.sh $< rsync_ssh://$( UPLOAD_HOST) :$( UPLOAD_PATH) /src/$<:640:750:$( UPLOAD_OWNER) .$( CUSTOMER)
touch $@
%.src.rpm.uldone : %.src .rpm
upload.sh $< rsync_ssh://$( UPLOAD_HOST) :$( UPLOAD_PATH) /rpm/src/$<:640:750:$( UPLOAD_OWNER) .$( CUSTOMER)
touch $@
%.rpm.uldone : %.rpm
upload.sh $< rsync_ssh://$( UPLOAD_HOST) :$( UPLOAD_PATH) /rpm/$( shell echo $@ | sed 's/.*\(run\|devel\).*/\1/' ) /$<:640:750:$( UPLOAD_OWNER) .$( CUSTOMER)
touch $@
current.uldone : $( F_CURRENT )
upload.sh $^ rsync_ssh://$( UPLOAD_HOST) :$( UPLOAD_PATH) /:640:750:$( UPLOAD_OWNER) .$( CUSTOMER)
touch $@
tag.done :
cvs tag $( TAG)
touch $@
version :
date >> RELEASE-$( KERNEL_VERSION)
cvs commit -m " $( KERNEL_VERSION) " RELEASE-$( KERNEL_VERSION)
exit 1
copy-run.done : $( F_RPM_RUN )
scp $< root@$( HOST) :/root/rpm/
touch $@
copy-devel.done : $( F_RPM_DEVEL )
scp $< root@$( HOST) :/root/rpm/
touch $@
ping :
ping $( HOST)
ssh :
ssh -l root $( HOST)
2005-03-30 15:42:59 +00:00
patches.done : unpack .done $( addsuffix .done ,$ ( notdir $ ( PATCHES ) ) )
touch $@
%.patch.done : %.patch
patch -d linux-$( KERNEL_VERSION) -p1 < $<
touch $@
%.patch :
cp $( filter %/$@ ,$( PATCHES) ) $@
2004-02-11 19:24:35 +00:00
# user targets
unpack : unpack .done
2004-04-20 16:48:50 +00:00
build : build .lxdone
2004-02-11 19:24:35 +00:00
driver : driver .done
tgz : $( F_TGZ )
spm : $( F_SPM )
rpm : $( F_RPMS )
upload : update .done rpm $( F_ULDONE )
tag : tag .done
install : build .lxdone driver .done install .lxdone
copy-run : copy -run .done
copy-devel : copy -devel .done
copy : copy -run copy -devel
2004-09-04 14:00:26 +00:00
patch : patches .done
2005-03-11 20:38:48 +00:00
shutdown :
ssh -l root $( HOST) "shutdown -h now"
2004-02-11 19:24:35 +00:00
reboot :
ssh -l root $( HOST) "reboot"
2004-04-20 16:48:50 +00:00
update-rpm : copy
ssh -l root $( HOST) rpm -U $( addprefix rpm/,$( F_RPMS) )
erase-rpm :
ssh -l root $( HOST) rpm -e $( KERNEL_BASE) -run $( KERNEL_BASE) -devel
2004-02-11 19:24:35 +00:00
dist : clean
cd ..; \
tar -czf kernel.tar.gz ` find kernel -type f -maxdepth 1 | grep -ve "setup\|trash\|CVS" `
mv ../kernel.tar.gz .
clean :
2005-04-25 19:14:31 +00:00
rm -rf $( TMP_INSTALL)
2004-02-11 19:24:35 +00:00
rm -rf install/* reiser.patch *~ *.done *.lxdone *.uldone *.patch *.rpm *.tar.gz *.tar $( SCOPE_DRIVER_BASE)
2005-04-25 19:14:31 +00:00
rm -rf linux linux-$( KERNEL_VERSION) CURRENT_*
2004-08-18 18:12:58 +00:00
rm -f toplevel-makefile
2004-08-18 12:42:05 +00:00
2005-04-30 22:09:08 +00:00
#newrelease:
# echo '# $$Id$$' > RELEASE-$(KERNEL_VERSION); \
# cvs add RELEASE-$(KERNEL_VERSION); \
# cvs commit -m "initial checkin" RELEASE-$(KERNEL_VERSION)
2004-08-18 12:42:05 +00:00