Allow adding per-package override rsync exclusions
authorAdrian Perez de Castro <aperez@igalia.com>
Wed, 8 Nov 2017 13:26:41 +0000 (15:26 +0200)
committerArnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Sun, 1 Apr 2018 15:05:35 +0000 (17:05 +0200)
This allows using <PKG>_SRCDIR_OVERRIDE_RSYNC_EXCLUSIONS in local.mk to
skip copying parts of source trees unneeded for building. For example,
when developing WebKitGTK+, it's handy to skip copying all the tests and
other build directories, which are huge:

    WEBKITGTK_OVERRIDE_SRCDIR = /home/aperez/WebKit
    WEBKITGTK_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS = \
        --exclude JSTests --exclude ManualTests \
--exclude PerformanceTests --exclude WebDriverTests \
--exclude WebKitBuild --exclude WebKitLibraries \
--exclude WebKit.xcworkspace --exclude Websites \
--exclude Examples

This saves a good chunk of time when rsync is used for the first time to
copy the source tree over before building.

Signed-off-by: Adrian Perez de Castro <aperez@igalia.com>
[Arnout: move documentation to the end of the section]
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
docs/manual/using-buildroot-development.txt
package/pkg-generic.mk

index 1071de513278a54a15c1de02ff459582f089fa09..3389a37b3968964ef7ceca02b915dc89737e6b58 100644 (file)
@@ -81,3 +81,19 @@ make busybox-rebuild all
 
 the root filesystem image in +output/images+ contains the updated
 BusyBox.
+
+Source trees for big projects often contain hundreds or thousands of
+files which are not needed for building, but will slow down the process
+of copying the sources with _rsync_. Optionally, it is possible define
++<pkg>_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS+ to skip syncing certain files
+from the source tree. For example, when working on the +webkitgtk+
+package, the following will exclude the tests and in-tree builds from
+a local WebKit source tree:
+
+------------------
+WEBKITGTK_OVERRIDE_SRCDIR = /home/bob/WebKit
+WEBKITGTK_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS = \
+       --exclude JSTests --exclude ManualTests --exclude PerformanceTests \
+       --exclude WebDriverTests --exclude WebKitBuild --exclude WebKitLibraries \
+       --exclude WebKit.xcworkspace --exclude Websites --exclude Examples
+------------------
index d870921defce30ad88ccab4e88a289af88c1d150..84d77822d4cac81ac06bbd1b000560f773987395 100644 (file)
@@ -168,7 +168,7 @@ $(BUILD_DIR)/%/.stamp_rsynced:
        @$(call MESSAGE,"Syncing from source dir $(SRCDIR)")
        $(foreach hook,$($(PKG)_PRE_RSYNC_HOOKS),$(call $(hook))$(sep))
        @test -d $(SRCDIR) || (echo "ERROR: $(SRCDIR) does not exist" ; exit 1)
-       rsync -au --chmod=u=rwX,go=rX $(RSYNC_VCS_EXCLUSIONS) $(call qstrip,$(SRCDIR))/ $(@D)
+       rsync -au --chmod=u=rwX,go=rX $(RSYNC_VCS_EXCLUSIONS) $($(PKG)_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS) $(call qstrip,$(SRCDIR))/ $(@D)
        $(foreach hook,$($(PKG)_POST_RSYNC_HOOKS),$(call $(hook))$(sep))
        $(Q)touch $@