Add quilt integration for packages

make package/<package>-prepare QUILT=1 will apply all patches using quilt
Autorebuild will be disabled, so that you can edit all patches in the build dir.
When you're done editing patches and everything works, you can call:
make package/<package>-refresh
That will copy the updated patches from quilt into package/<package>/patches,
and remove all old patches.
Before the patches are overwritten, the correct order of the patches is verified
('cat series' is compared against 'sort series').


git-svn-id: svn://svn.openwrt.org/openwrt/trunk@7471 3c298f89-4303-0410-b956-a3cf2f4a3e73
master
Felix Fietkau 2007-06-03 06:16:08 +00:00
parent 304696e31d
commit 414e3ef71a
4 changed files with 58 additions and 8 deletions

View File

@ -33,12 +33,11 @@ define Package/Default
DESCRIPTION:= DESCRIPTION:=
endef endef
Build/Patch:=$(Build/Patch/Default)
ifneq ($(strip $(PKG_UNPACK)),) ifneq ($(strip $(PKG_UNPACK)),)
define Build/Prepare/Default define Build/Prepare/Default
$(PKG_UNPACK) $(PKG_UNPACK)
@if [ -d ./patches -a "$$$$(ls ./patches | wc -l)" -gt 0 ]; then \ $(Build/Patch)
$(PATCH) $(PKG_BUILD_DIR) ./patches; \
fi
endef endef
endif endif

View File

@ -14,13 +14,16 @@ include $(INCLUDE_DIR)/prereq.mk
include $(INCLUDE_DIR)/host.mk include $(INCLUDE_DIR)/host.mk
include $(INCLUDE_DIR)/unpack.mk include $(INCLUDE_DIR)/unpack.mk
include $(INCLUDE_DIR)/depends.mk include $(INCLUDE_DIR)/depends.mk
include $(INCLUDE_DIR)/package-defaults.mk
include $(INCLUDE_DIR)/package-dumpinfo.mk
include $(INCLUDE_DIR)/package-ipkg.mk
STAMP_PREPARED:=$(PKG_BUILD_DIR)/.prepared$(if $(DUMP),,_$(shell find ${CURDIR} $(PKG_FILE_DEPEND) $(DEP_FINDPARAMS) | md5s)) STAMP_PREPARED:=$(PKG_BUILD_DIR)/.prepared$(if $(DUMP),,_$(shell find ${CURDIR} $(PKG_FILE_DEPEND) $(DEP_FINDPARAMS) | md5s))
STAMP_CONFIGURED:=$(PKG_BUILD_DIR)/.configured STAMP_CONFIGURED:=$(PKG_BUILD_DIR)/.configured
STAMP_BUILT:=$(PKG_BUILD_DIR)/.built STAMP_BUILT:=$(PKG_BUILD_DIR)/.built
include $(INCLUDE_DIR)/quilt.mk
include $(INCLUDE_DIR)/package-defaults.mk
include $(INCLUDE_DIR)/package-dumpinfo.mk
include $(INCLUDE_DIR)/package-ipkg.mk
export CONFIG_SITE:=$(INCLUDE_DIR)/site/$(REAL_GNU_TARGET_NAME) export CONFIG_SITE:=$(INCLUDE_DIR)/site/$(REAL_GNU_TARGET_NAME)
ifneq ($(CONFIG_AUTOREBUILD),) ifneq ($(CONFIG_AUTOREBUILD),)

48
include/quilt.mk Normal file
View File

@ -0,0 +1,48 @@
#
# Copyright (C) 2007 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
QUILT?=$(strip $(shell test -f $(PKG_BUILD_DIR)/.quilt_patched && echo y))
ifneq ($(QUILT),)
STAMP_PREPARED:=$(strip $(STAMP_PREPARED))_q
CONFIG_AUTOREBUILD=
PATCHES:=$(shell cd ./patches; ls)
define Build/Patch/Default
rm -rf $(PKG_BUILD_DIR)/patches
mkdir -p $(PKG_BUILD_DIR)/patches
for patch in $(PATCHES); do ( \
cp "./patches/$$$$patch" $(PKG_BUILD_DIR); \
cd $(PKG_BUILD_DIR); \
quilt import -p 1 "$$$$patch"; \
quilt push; \
quilt refresh; \
rm -f "$$$$patch"; \
); done
touch $(PKG_BUILD_DIR)/.quilt_patched
endef
else
define Build/Patch/Default
@if [ -d ./patches -a "$$$$(ls ./patches | wc -l)" -gt 0 ]; then \
$(PATCH) $(PKG_BUILD_DIR) ./patches; \
fi
endef
endif
refresh: $(STAMP_PREPARED)
@[ -f "$(PKG_BUILD_DIR)/patches/series" ] || { \
echo "The source directory was not unpacked using quilt. Please rebuild."; \
false; \
}
@[ "$$(cat $(PKG_BUILD_DIR)/patches/series | md5sum)" = "$$(sort $(PKG_BUILD_DIR)/patches/series | md5sum)" ] || { \
echo "The patches are not sorted in the right order. Please fix."; \
false; \
}
rm -f ./patches/* 2>/dev/null >/dev/null
@( \
for patch in $$(cat $(PKG_BUILD_DIR)/patches/series); do \
$(CP) -v "$(PKG_BUILD_DIR)/patches/$$patch" ./patches; \
done; \
)

View File

@ -26,9 +26,9 @@ ifeq ($(QUIET),1)
%-compile %-install: FORCE %-compile %-install: FORCE
$(MAKE) -C $* $(patsubst $*-%,%,$@) || { $(call MESSAGE, "*** $* $(patsubst $*-%,%,$@) failed"); false; } $(MAKE) -C $* $(patsubst $*-%,%,$@) || { $(call MESSAGE, "*** $* $(patsubst $*-%,%,$@) failed"); false; }
%-prepare %-prereq %-download %-clean: FORCE %-prepare %-prereq %-download %-clean %-refresh: FORCE
else else
%-prepare %-prereq %-download %-clean %-compile %-install: FORCE %-prepare %-prereq %-download %-clean %-compile %-install %-refresh: FORCE
endif endif
$(MAKE) -C $* $(patsubst $*-%,%,$@) $(MAKE) -C $* $(patsubst $*-%,%,$@)