python-uuid rpm seems to have gone
[build.git] / Makefile
index 5a52daf..1c601a9 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -330,6 +330,15 @@ $(foreach package, $(ALL), $(eval $(call package_hasdate,$(package))))
 
 ### the common header for generated specfiles
 # useful when trying new specfiles manually
+###
+# note for fedora23 (and onwards, probably)
+# many rpms wouldn't build as-is and issue an weird error
+##
+# Processing files: pl_sshd-debuginfo-1.0-11.lxc.x86_64
+# error: Empty %files file /longbuildroot/BUILD/pl_sshd-1.0/debugfiles.list
+##
+# so to work around that we define debug_package as being nil
+# only for f23 for now, let's see what this gives us..
 header.spec:
        (echo -n "# Generated by planetlab build on " ; date) > $@
        echo "%define distro $(DISTRO)" >> $@
@@ -342,6 +351,9 @@ header.spec:
        echo "%global _source_filedigest_algorithm 1" >> $@
        echo "%global _source_payload       w9.gzdio" >> $@
        echo "%global _binary_payload       w9.gzdio" >> $@
+ifeq "$(DISTRONAME)""$(filter $(DISTRONAME),f25 f27)"
+       echo "%define debug_package %{nil}" >> $@
+endif
 
 ### make up spec file - extract module first
 define target_spec
@@ -426,6 +438,10 @@ export HOME := $(FAKEROOT)
 else
 export HOME := $(PWD)
 endif
+
+# rpm macros
+# build.common (getrpmmacros.sh) defines some utilities we want in place on our images
+# in addition to these we set a few others for the build
 .rpmmacros:
 ifeq "$(shell pwd)" "/build"
        rm -f $(FAKEROOT) ; ln -s $(REALROOT) $(FAKEROOT)
@@ -455,19 +471,20 @@ endef
 $(foreach package,$(ALL),$(eval $(call target_mk,$(package))))
 
 # stores env variables in a file
-# this is done at stage1. later run wont get confused
-SAVED_VARS=PLDISTRO PLDISTROTAGS build-GITPATH PERSONALITY MAILTO BASE WEBPATH TESTBUILDURL WEBROOT
-# also remember variable settings in alias, like sfa-GITPATH=git://git.f-lab.fr/sfa.git@generic
-# but don't save stage1
-ASSIGNS=$(foreach chunk,$(MAKEFLAGS),$(if $(findstring =,$(chunk)),$(if $(findstring stage1,$(chunk)),,$(chunk)),))
+# this is done at stage1. later run won't get confused
+STATIC_VARS=PLDISTRO PLDISTROTAGS build-GITPATH PERSONALITY MAILTO BASE WEBPATH TESTBUILDURL WEBROOT
+# find out names for variables set on the command line
+define assigned_varname
+$(if $(findstring =,$(1)),$(firstword $(subst =, ,$(1))) )
+endef
+ASSIGNED=$(filter-out stage1 stage1iter,$(foreach flag,$(MAKEFLAGS),$(call assigned_varname,$(flag))))
+SAVED_VARS=$(sort $(STATIC_VARS) $(ASSIGNED))
 envfrompreviousrun.mk:
        @echo "# do not edit" > $@
        @$(foreach var,$(SAVED_VARS),echo "$(var):=$($(var))" >> $@ ;)
-       @$(foreach chunk,$(ASSIGNS),echo "override $(chunk)" | sed -e s,=,:=, >> $@;)
        @echo "# do not edit" > aliases
        @echo -n "alias m=\"make " >> aliases
        @$(foreach var,$(SAVED_VARS),echo -n " $(var)=$($(var))" >> aliases ;)
-       @echo -n $(ASSIGNS) >> aliases
        @echo "\"" >> aliases
        @echo "alias m1=\"m stage1=true\"" >> aliases
 
@@ -564,11 +581,11 @@ endef
 
 # install stock rpms if defined
 define rpmyum_install_stock_rpms 
-       $(if $($(1)-STOCK-DEVEL-RPMS), echo "Installing for $(1)-STOCK-DEVEL-RPMS" ; $(RPMYUM-INSTALL-STOCK) $($(1)-STOCK-DEVEL-RPMS))
+       $(if $($(1)-STOCK-DEVEL-RPMS), echo "Installing for $(1)-STOCK-DEVEL-RPMS" ; $(RPMYUM-INSTALL-STOCK) $($(1)-STOCK-DEVEL-RPMS) || true)
 endef
 
 define rpmyum_uninstall_stock_rpms
-       -$(if $($(1)-STOCK-DEVEL-RPMS), echo "Unstalling for $(1)-STOCK-DEVEL-RPMS" ; $(RPMYUM-UNINSTALL-STOCK) $($(1)-STOCK-DEVEL-RPMS))
+       -$(if $($(1)-STOCK-DEVEL-RPMS), echo "Unstalling for $(1)-STOCK-DEVEL-RPMS" ; $(RPMYUM-UNINSTALL-STOCK) $($(1)-STOCK-DEVEL-RPMS) || true)
 endef
 
 # similar for debians
@@ -582,11 +599,11 @@ define dpkgapt_install_local_debs
 endef
 
 define dpkgapt_install_stock_debs 
-       $(if $($(1)-STOCK-DEVEL-DEBS), echo "Installing for $(1)-STOCK-DEVEL-DEBS" ; $(DPKGAPT-INSTALL-STOCK) $($(1)-STOCK-DEVEL-DEBS))
+       $(if $($(1)-STOCK-DEVEL-DEBS), echo "Installing for $(1)-STOCK-DEVEL-DEBS" ; $(DPKGAPT-INSTALL-STOCK) $($(1)-STOCK-DEVEL-DEBS) || true)
 endef
 
 define dpkgapt_uninstall_stock_debs
-       -$(if $($(1)-STOCK-DEVEL-DEBS), echo "Unstalling for $(1)-STOCK-DEVEL-DEBS" ; $(DPKGAPT-UNINSTALL-STOCK) $($(1)-STOCK-DEVEL-DEBS))
+       -$(if $($(1)-STOCK-DEVEL-DEBS), echo "Unstalling for $(1)-STOCK-DEVEL-DEBS" ; $(DPKGAPT-UNINSTALL-STOCK) $($(1)-STOCK-DEVEL-DEBS) || true)
 endef
 
 
@@ -703,6 +720,11 @@ endef
 
 $(foreach package,$(ALL),$(eval $(call target_depends,$(package))))
 
+####################
+# debian meta-target
+ALL-DEBIAN := $(foreach target,$(ALL),$(target)-debian)
+debian: $(ALL-DEBIAN)
+
 ####################
 # very rough for now (one module per package), targets only sfa for now
 # the general idea here is, changing the specfile (for version number and all) is enough, and this
@@ -715,7 +737,7 @@ $(1)-debian: $(1)-tarball
        $(call dpkgapt_install_local_debs,$(1))
        $(call dpkgapt_install_stock_debs,$(1))
        mkdir -p DEBIAN/$(1)
-       rsync -a MODULES/$(1)/ DEBIAN/$(1)/
+       rsync -a MODULES/$($(1).module)/ DEBIAN/$(1)/
        make -C DEBIAN/$(1) "RPMTARBALL=$(HOME)/$($(1).tarballs)" "RPMVERSION=$($(1).rpm-version)" "RPMRELEASE=$($(1).rpm-release)" "RPMNAME=$($(1).rpm-name)" debian
        $(call dpkgapt_uninstall_stock_debs,$(1))
 endef
@@ -782,7 +804,7 @@ clean-help:
 distclean1:
        rm -rf envfrompreviousrun.mk .rpmmacros spec2make header.spec SPECS MAKE $(DISTCLEANS)
 distclean2:
-       rm -rf MODULES SOURCES BUILD BUILDROOT RPMS SRPMS tmp
+       rm -rf MODULES SOURCES BUILD BUILDROOT RPMS SRPMS DEBIAN tmp
 distclean: distclean1 distclean2
 .PHONY: distclean1 distclean2 distclean