Use two pbuilder environments This produces two different pbuilder environments: one that supports a cross build, the other that supports a native build. At this point in time with buster, some packages that depend on seriously broken dependencies like dh-python will not build in a crossbuild environment and *must* be emulated in a native environment. Change-Id: If937f643f8cf042cd721660c7c3718c2197ce6df
diff --git a/packages.mk b/packages.mk index 17b974b..3bfb8a3 100644 --- a/packages.mk +++ b/packages.mk
@@ -18,20 +18,35 @@ include $(ROOTDIR)/build/preamble.mk -pbuilder-base: $(ROOTDIR)/cache/base.tgz +pbuilder-base: $(ROOTDIR)/cache/cross-base.tgz $(ROOTDIR)/cache/native-base.tgz ifneq ($(FETCH_PBUILDER_DIRECTORY),) -$(ROOTDIR)/cache/base.tgz: $(FETCH_PBUILDER_DIRECTORY)/base.tgz | out-dirs +$(ROOTDIR)/cache/cross-base.tgz: $(FETCH_PBUILDER_DIRECTORY)/cross-base.tgz | out-dirs cp $< $(ROOTDIR)/cache else -$(ROOTDIR)/cache/base.tgz: /usr/bin/qemu-aarch64-static /usr/bin/qemu-arm-static +$(ROOTDIR)/cache/cross-base.tgz: + mkdir -p $(ROOTDIR)/cache + sudo pbuilder create \ + --basetgz $@ \ + --othermirror "deb [trusted=yes] http://packages.cloud.google.com/apt mendel-day main|deb [trusted=yes] http://packages.cloud.google.com/apt mendel-bsp-$(BOARD_NAME)-day main" \ + --distribution buster \ + --architecture amd64 \ + --extrapackages "crossbuild-essential-armhf crossbuild-essential-arm64 debhelper gnupg lintian" \ + --aptcache "" +endif + +ifneq ($(FETCH_PBUILDER_DIRECTORY),) +$(ROOTDIR)/cache/native-base.tgz: $(FETCH_PBUILDER_DIRECTORY)/native-base.tgz | out-dirs + cp $< $(ROOTDIR)/cache +else +$(ROOTDIR)/cache/native-base.tgz: /usr/bin/qemu-aarch64-static /usr/bin/qemu-arm-static mkdir -p $(ROOTDIR)/cache sudo pbuilder create \ --basetgz $@ \ --othermirror "deb [trusted=yes] http://packages.cloud.google.com/apt mendel-day main|deb [trusted=yes] http://packages.cloud.google.com/apt mendel-bsp-$(BOARD_NAME)-day main" \ --distribution buster \ --architecture arm64 \ - --extrapackages "crossbuild-essential-armhf crossbuild-essential-arm64 debhelper gnupg lintian" \ + --extrapackages "build-essential debhelper gnupg lintian" \ --aptcache "" mkdir -p $(ROOTDIR)/cache/base-tmp cd $(ROOTDIR)/cache/base-tmp; \ @@ -58,6 +73,7 @@ # $4: space separated list of external dependencies (may be empty) # $5: dpkg-buildpackage --build value (may be empty, defaults to full) # $6: repository which package belongs to (e.g. core or bsp) +# $7: whether to use a cross or native pbuilder env (may be empty, defaults to cross) define make-pbuilder-package-target $1: $(PRODUCT_OUT)/.$1-pbuilder-$(USERSPACE_ARCH) PBUILDER_TARGETS += $(PRODUCT_OUT)/.$1-pbuilder-$(USERSPACE_ARCH) @@ -69,7 +85,7 @@ $(foreach package,$3,$(PRODUCT_OUT)/.$(package)-pbuilder-$(USERSPACE_ARCH)) \ $$(shell find $(ROOTDIR)/packages/$1 -type f) \ $$(shell find $(ROOTDIR)/$2 -type f | sed -e 's/ /\\ /g') \ - | out-dirs $(ROOTDIR)/cache/base.tgz \ + | out-dirs $(ROOTDIR)/cache/$(if $7,$7,cross)-base.tgz \ $4 $(LOG) $1 pbuilder @@ -98,7 +114,7 @@ cd $(PRODUCT_OUT)/obj/$1; pdebuild \ --buildresult $(PRODUCT_OUT)/packages/$(if $6,$6,core) -- \ --debbuildopts "--build=$(if $5,$5,full) -sa --check-command=true --check-option=--fail-on-warnings --check-option=--profile=mendel" \ - --basetgz $(ROOTDIR)/cache/base.tgz \ + --basetgz $(ROOTDIR)/cache/$(if $7,$7,cross)-base.tgz \ --configfile $(ROOTDIR)/build/pbuilderrc \ --hookdir $(ROOTDIR)/build/pbuilder-hooks \ --host-arch $(USERSPACE_ARCH) --logfile $(PRODUCT_OUT)/$1-$(USERSPACE_ARCH).log @@ -116,7 +132,7 @@ # Convenience macro to target a package to the bsp repo define make-pbuilder-bsp-package-target -$(call make-pbuilder-package-target,$1,$2,$3,$4,$5,bsp) +$(call make-pbuilder-package-target,$1,$2,$3,$4,$5,bsp,$6) endef $(eval $(call make-pbuilder-package-target,mendel-minimal,packages/mendel-minimal)) @@ -129,7 +145,7 @@ $(eval $(call make-pbuilder-package-target,mendel-keyring,packages/mendel-keyring)) $(eval $(call make-pbuilder-package-target,runonce,packages/runonce)) $(eval $(call make-pbuilder-package-target,usb-gadget,packages/usb-gadget)) -$(eval $(call make-pbuilder-package-target,vitalsd,packages/vitalsd)) +$(eval $(call make-pbuilder-package-target,vitalsd,packages/vitalsd,,,,,native)) $(eval $(call make-pbuilder-package-target,meta-mendel,packages/meta-mendel)) include $(ROOTDIR)/board/packages.mk