[Libreoffice-commits] .: solenv/gbuild
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Sat Sep 29 00:54:50 PDT 2012
solenv/gbuild/TargetLocations.mk | 1 +
solenv/gbuild/UnpackedTarball.mk | 31 ++++++++++++++++++++++++++++++-
solenv/gbuild/gbuild.mk | 8 ++++++++
3 files changed, 39 insertions(+), 1 deletion(-)
New commits:
commit 363e0b67e9ce5de317603a76a5ffc159fc964722
Author: Norbert Thiebaud <nthiebaud at gmail.com>
Date: Thu Sep 27 16:19:14 2012 -0500
add supporting target and options to generate patches for ExternalProjects
also add the support for the convention that a patch filename
encode the -p value if it end with .[0-9]
for instance foo.patch.2 indicate a -p2 patch
usage:
generate a 'reference' copy of the expanded and patched file structure
$> make clucene.clean
$> patches=t make clucene
go to the module
$> cd clucene
edit files in $WORKDIR/UnpackedTarball/clucene
force a rebuild of things that depend on that UnpackedTarball
$> make clucene.rebuild
create a -p1 patch named clucene.new.patch.1 in the module's directory
$> make clucene.genpatch
you can then rename it, place it where appropriate in the module
hierarchy, update the UnpackedTarball_lucene.mk to apply it.
rinse and repeat from the top (yes the make lucene.clean is needed
to regenerate a 'reference' expanded and patched tarball)
Change-Id: I419c54a5981cffa385521596ba5016d2ca7ef52a
Reviewed-on: https://gerrit.libreoffice.org/712
Reviewed-by: Norbert Thiebaud <nthiebaud at gmail.com>
Tested-by: Norbert Thiebaud <nthiebaud at gmail.com>
diff --git a/solenv/gbuild/TargetLocations.mk b/solenv/gbuild/TargetLocations.mk
index be268ba..28c7dd4 100644
--- a/solenv/gbuild/TargetLocations.mk
+++ b/solenv/gbuild/TargetLocations.mk
@@ -171,6 +171,7 @@ gb_UnoApiHeadersTarget_get_comprehensive_target = $(WORKDIR)/UnoApiHeadersTarget
gb_UnoApiHeadersTarget_get_target = $(WORKDIR)/UnoApiHeadersTarget/$(1)/normal.done
gb_UnoApiPartTarget_get_target = $(WORKDIR)/UnoApiPartTarget/$(1)
gb_UnpackedTarball_get_dir = $(WORKDIR)/UnpackedTarball/$(1)
+gb_UnpackedTarball_get_pristine_dir = $(WORKDIR)/UnpackedTarball/$(1).org
gb_UnpackedTarball_get_final_target = $(WORKDIR)/UnpackedTarball/$(1).update
gb_UnpackedTarball_get_target = $(WORKDIR)/UnpackedTarball/$(1).done
gb_UnpackedTarball_get_preparation_target = $(WORKDIR)/UnpackedTarball/$(1).prepare
diff --git a/solenv/gbuild/UnpackedTarball.mk b/solenv/gbuild/UnpackedTarball.mk
index a9cf53e..c96d4ce 100644
--- a/solenv/gbuild/UnpackedTarball.mk
+++ b/solenv/gbuild/UnpackedTarball.mk
@@ -131,7 +131,9 @@ $(call gb_Helper_abbreviate_dirs,\
$(foreach file,$(UNPACKED_FIX_EOL),$(call gb_UnpackedTarball_CONVERTTOUNIX,$(file)) && ) \
$(if $(UNPACKED_PATCHES),\
for p in $(UNPACKED_PATCHES); do \
- $(GNUPATCH) -s -p$(UNPACKED_PATCHLEVEL) < "$$p" || exit 1;\
+ pl=$(UNPACKED_PATCHLEVEL); \
+ s=$${p##*.}; case "$$s" in [0-9]$(CLOSE_PAREN) pl="$$s"; ;; esac ; \
+ $(GNUPATCH) -s -p$$pl < "$$p" || exit 1;\
done && \
) \
$(foreach file,$(UNPACKED_FIX_EOL),$(call gb_UnpackedTarball_CONVERTTODOS,$(file)) && ) \
@@ -145,6 +147,10 @@ $(call gb_Helper_abbreviate_dirs,\
$(if $(UNPACKED_POST_ACTION),\
$(UNPACKED_POST_ACTION) && \
) \
+ $(if $(gb_KEEP_PRISTINE), \
+ rm -fr $(call gb_UnpackedTarball_get_pristine_dir,$(2)) && \
+ cp -r $(call gb_UnpackedTarball_get_dir,$(2)) $(call gb_UnpackedTarball_get_pristine_dir,$(2)) && \
+ ) \
touch $(1) \
) || \
( \
@@ -174,6 +180,7 @@ $(call gb_UnpackedTarball_get_clean_target,%) :
$(call gb_UnpackedTarball_get_target,$*) \
$(call gb_UnpackedTarball_get_preparation_target,$*) \
$(call gb_UnpackedTarball_get_dir,$*) \
+ $(call gb_UnpackedTarball_get_pristine_dir,$*) \
$(foreach subdir,$(UNPACKED_SUBDIRS),$(gb_EXTERNAL_HEADERS_DIR)/$(subdir)) \
)
@@ -365,4 +372,26 @@ $(foreach file,$(2),$(call gb_UnpackedTarball_mark_output_file,$(1),$(file)))
endef
+# force the rebuild of an external target
+# this only works when running as partial build.
+#
+%.rebuild :
+ if [ -f $(call gb_UnpackedTarball_get_target,$*) ] ; then \
+ touch $(call gb_UnpackedTarball_get_target,$*) ; \
+ make ;\
+ fi
+
+%.genpatch :
+ if [ -d $(call gb_UnpackedTarball_get_dir,$*) -a -d $(call gb_UnpackedTarball_get_pristine_dir,$*) ] ; then \
+ ( \
+ patch_file=$$(pwd)/$*.new.patch.1; \
+ cd $(call gb_UnpackedTarball_get_dir,) ; \
+ diff -ur $*.org $* > $$patch_file; \
+ echo "Patch $$patch_file generated" ; \
+ ); \
+ else \
+ echo "Error: No pristine tarball avaialable for $*" 1>&2 ; \
+ fi
+
+
# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk
index 91bb68b..02f8998 100644
--- a/solenv/gbuild/gbuild.mk
+++ b/solenv/gbuild/gbuild.mk
@@ -71,6 +71,8 @@ endef
COMMA :=,
+CLOSE_PAREN :=)
+
# optional extensions that should never be essential
ifneq ($(wildcard $(GBUILDDIR)/extensions/pre_*.mk),)
include $(wildcard $(GBUILDDIR)/extensions/pre_*.mk)
@@ -145,6 +147,12 @@ gb_FULLDEPS := $(true)
endif
endif
+ifneq ($(strip $(patches)$(PATCHES)),)
+gb_KEEP_PRISTINE := $(true)
+else
+gb_KEEP_PRISTINE := $(false)
+endif
+
# save user-supplied flags for latter use
# TODO remove after the old build system is abolished
ifneq ($(strip $(ENVCFLAGS)),)
More information about the Libreoffice-commits
mailing list