From patchwork Fri Mar 28 18:29:32 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Hadjinlian X-Patchwork-Id: 334855 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from hemlock.osuosl.org (hemlock.osuosl.org [140.211.166.133]) by ozlabs.org (Postfix) with ESMTP id DDFE8140088 for ; Sat, 29 Mar 2014 05:29:44 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 33E3987F3D; Fri, 28 Mar 2014 18:29:44 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id pbOl7Hy3AzFh; Fri, 28 Mar 2014 18:29:43 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by hemlock.osuosl.org (Postfix) with ESMTP id 8794688420; Fri, 28 Mar 2014 18:29:43 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from hemlock.osuosl.org (hemlock.osuosl.org [140.211.166.133]) by ash.osuosl.org (Postfix) with ESMTP id 635BD1C28B8 for ; Fri, 28 Mar 2014 18:29:42 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 5F96D88420 for ; Fri, 28 Mar 2014 18:29:42 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id yRVD7RW1g9Zq for ; Fri, 28 Mar 2014 18:29:41 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-we0-f178.google.com (mail-we0-f178.google.com [74.125.82.178]) by hemlock.osuosl.org (Postfix) with ESMTPS id 6839687F3D for ; Fri, 28 Mar 2014 18:29:41 +0000 (UTC) Received: by mail-we0-f178.google.com with SMTP id u56so2868497wes.23 for ; Fri, 28 Mar 2014 11:29:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=QAo7ujcFgRKXBsDmbRIXhz90+GTswOILIhhL7vNh0Sk=; b=N1QEHzAWFBstpeRyunvo2YbYi+nNtxPXN8td1dR8wrhMYzerhBdxWc407PZNDnNvl0 VTGPeNL46mFtYS8EiTElhxb/9+c95Y0QWZR3V73eD5KyKw4fx3GchZEP8YYYjQRzlCLB kpZB/lilcBOV6z7CBwsWFJWccc9ihgDfqXjzZZ3s+QftFmyclS2hVlakE0a1kXaAsPaD vxE5zYIEMbSmg9II+RoKP3IeVpJdRc1ugf8pd3Gfrllw+5XkcmTNcY6bXO+/BRGpR+Wb Kwo4loHrqb/M7LJChINyPTESASeXQCzoEPYAa7f02IVndO1e1YpfpZtEDeKEjL31ahdS bBFA== X-Received: by 10.180.20.71 with SMTP id l7mr14375370wie.35.1396031380003; Fri, 28 Mar 2014 11:29:40 -0700 (PDT) Received: from localhost (11-96-190-109.dsl.ovh.fr. [109.190.96.11]) by mx.google.com with ESMTPSA id w10sm9347843wiy.9.2014.03.28.11.29.38 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Fri, 28 Mar 2014 11:29:39 -0700 (PDT) From: Maxime Hadjinlian To: buildroot@buildroot.org Date: Fri, 28 Mar 2014 19:29:32 +0100 Message-Id: <1396031372-23308-1-git-send-email-maxime.hadjinlian@gmail.com> X-Mailer: git-send-email 1.9.0 Subject: [Buildroot] [PATCH v3] infra: Add PRE_*_HOOKS for every step X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: buildroot-bounces@busybox.net Add PRE_*_HOOKS to all the different steps through which a package may go. This will help avoid using POST_*_HOOKS to do tasks that should be done in the PRE_*_HOOKS of the next step. Otherwise, when the user would do a make foo-re, this would not do what was really intented, the POST_*_HOOK of the preceding step not being executed. Signed-off-by: Maxime Hadjinlian --- Changes v2 -> v3 - Fix a mis-match in the number of spaces used to indent (Yann E. Morin) Changes v1 -> v2 - Move the PRE_*_HOOKS after the message (Arnout Vandecappelle) - PRE_LEGAL_HOOKS executed even if condition is not met (Arnout Vandecappelle) --- docs/manual/adding-packages-hooks.txt | 17 +++++++++++++++++ package/pkg-generic.mk | 22 ++++++++++++++++++++-- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/docs/manual/adding-packages-hooks.txt b/docs/manual/adding-packages-hooks.txt index d96c991..38d3e4a 100644 --- a/docs/manual/adding-packages-hooks.txt +++ b/docs/manual/adding-packages-hooks.txt @@ -14,17 +14,34 @@ of the package construction. The following hook points are available: +* +LIBFOO_PRE_DOWNLOAD_HOOKS+ * +LIBFOO_POST_DOWNLOAD_HOOKS+ + +* +LIBFOO_PRE_EXTRACT_HOOKS+ * +LIBFOO_POST_EXTRACT_HOOKS+ + +* +LIBFOO_PRE_RSYNC_HOOKS+ * +LIBFOO_POST_RSYNC_HOOKS+ + * +LIBFOO_PRE_PATCH_HOOKS+ * +LIBFOO_POST_PATCH_HOOKS+ + * +LIBFOO_PRE_CONFIGURE_HOOKS+ * +LIBFOO_POST_CONFIGURE_HOOKS+ + +* +LIBFOO_PRE_BUILD_HOOKS+ * +LIBFOO_POST_BUILD_HOOKS+ + +* +LIBFOO_PRE_INSTALL_HOOKS+ (for host packages only) * +LIBFOO_POST_INSTALL_HOOKS+ (for host packages only) + +* +LIBFOO_PRE_INSTALL_STAGING_HOOKS+ (for target packages only) * +LIBFOO_POST_INSTALL_STAGING_HOOKS+ (for target packages only) + +* +LIBFOO_PRE_INSTALL_TARGET_HOOKS+ (for target packages only) * +LIBFOO_POST_INSTALL_TARGET_HOOKS+ (for target packages only) + +* +LIBFOO_PRE_LEGAL_INFO_HOOKS+ * +LIBFOO_POST_LEGAL_INFO_HOOKS+ These variables are 'lists' of variable names containing actions to be diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk index 555c3c2..9edcfbe 100644 --- a/package/pkg-generic.mk +++ b/package/pkg-generic.mk @@ -70,6 +70,7 @@ endif # Retrieve the archive $(BUILD_DIR)/%/.stamp_downloaded: + $(foreach hook,$($(PKG)_PRE_DOWNLOAD_HOOKS),$(call $(hook))$(sep)) ifeq ($(DL_MODE),DOWNLOAD) # Only show the download message if it isn't already downloaded $(Q)if test ! -e $(DL_DIR)/$($(PKG)_SOURCE); then \ @@ -101,6 +102,7 @@ endif $(BUILD_DIR)/%/.stamp_extracted: @$(call step_start,extract) @$(call MESSAGE,"Extracting") + $(foreach hook,$($(PKG)_PRE_EXTRACT_HOOKS),$(call $(hook))$(sep)) $(Q)mkdir -p $(@D) $($(PKG)_EXTRACT_CMDS) # some packages have messed up permissions inside @@ -114,6 +116,7 @@ $(BUILD_DIR)/%/.stamp_extracted: $(BUILD_DIR)/%/.stamp_rsynced: @$(call MESSAGE,"Syncing from source dir $(SRCDIR)") @test -d $(SRCDIR) || (echo "ERROR: $(SRCDIR) does not exist" ; exit 1) + $(foreach hook,$($(PKG)_PRE_RSYNC_HOOKS),$(call $(hook))$(sep)) rsync -au $(RSYNC_VCS_EXCLUSIONS) $(SRCDIR)/ $(@D) $(foreach hook,$($(PKG)_POST_RSYNC_HOOKS),$(call $(hook))$(sep)) $(Q)touch $@ @@ -162,8 +165,8 @@ $(BUILD_DIR)/%/.stamp_patched: # Configure $(BUILD_DIR)/%/.stamp_configured: @$(call step_start,configure) - $(foreach hook,$($(PKG)_PRE_CONFIGURE_HOOKS),$(call $(hook))$(sep)) @$(call MESSAGE,"Configuring") + $(foreach hook,$($(PKG)_PRE_CONFIGURE_HOOKS),$(call $(hook))$(sep)) $($(PKG)_CONFIGURE_CMDS) $(foreach hook,$($(PKG)_POST_CONFIGURE_HOOKS),$(call $(hook))$(sep)) $(Q)touch $@ @@ -173,6 +176,7 @@ $(BUILD_DIR)/%/.stamp_configured: $(BUILD_DIR)/%/.stamp_built:: @$(call step_start,build) @$(call MESSAGE,"Building") + $(foreach hook,$($(PKG)_PRE_BUILD_HOOKS),$(call $(hook))$(sep)) $($(PKG)_BUILD_CMDS) $(foreach hook,$($(PKG)_POST_BUILD_HOOKS),$(call $(hook))$(sep)) $(Q)touch $@ @@ -182,6 +186,7 @@ $(BUILD_DIR)/%/.stamp_built:: $(BUILD_DIR)/%/.stamp_host_installed: @$(call step_start,install-host) @$(call MESSAGE,"Installing to host directory") + $(foreach hook,$($(PKG)_PRE_INSTALL_HOOKS),$(call $(hook))$(sep)) $($(PKG)_INSTALL_CMDS) $(foreach hook,$($(PKG)_POST_INSTALL_HOOKS),$(call $(hook))$(sep)) $(Q)touch $@ @@ -191,6 +196,7 @@ $(BUILD_DIR)/%/.stamp_host_installed: $(BUILD_DIR)/%/.stamp_staging_installed: @$(call step_start,install-staging) @$(call MESSAGE,"Installing to staging directory") + $(foreach hook,$($(PKG)_PRE_INSTALL_STAGING_HOOKS),$(call $(hook))$(sep)) $($(PKG)_INSTALL_STAGING_CMDS) $(foreach hook,$($(PKG)_POST_INSTALL_STAGING_HOOKS),$(call $(hook))$(sep)) $(Q)if test -n "$($(PKG)_CONFIG_SCRIPTS)" ; then \ @@ -207,6 +213,7 @@ $(BUILD_DIR)/%/.stamp_staging_installed: $(BUILD_DIR)/%/.stamp_images_installed: @$(call step_start,install-image) @$(call MESSAGE,"Installing to images directory") + $(foreach hook,$($(PKG)_PRE_INSTALL_IMAGES_HOOKS),$(call $(hook))$(sep)) $($(PKG)_INSTALL_IMAGES_CMDS) $(foreach hook,$($(PKG)_POST_INSTALL_IMAGES_HOOKS),$(call $(hook))$(sep)) $(Q)touch $@ @@ -216,6 +223,7 @@ $(BUILD_DIR)/%/.stamp_images_installed: $(BUILD_DIR)/%/.stamp_target_installed: @$(call step_start,install-target) @$(call MESSAGE,"Installing to target") + $(foreach hook,$($(PKG)_PRE_INSTALL_TARGET_HOOKS),$(call $(hook))$(sep)) $(if $(BR2_INIT_SYSTEMD),\ $($(PKG)_INSTALL_INIT_SYSTEMD)) $(if $(BR2_INIT_SYSV)$(BR2_INIT_BUSYBOX),\ @@ -377,19 +385,28 @@ $(2)_EXTRACT_CMDS ?= \ $$(if $$($(2)_SOURCE),$$(INFLATE$$(suffix $$($(2)_SOURCE))) $(DL_DIR)/$$($(2)_SOURCE) | \ $(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $$($(2)_DIR) $(TAR_OPTIONS) -) -# post-steps hooks +# pre/post-steps hooks +$(2)_PRE_DOWNLOAD_HOOKS ?= $(2)_POST_DOWNLOAD_HOOKS ?= +$(2)_PRE_EXTRACT_HOOKS ?= $(2)_POST_EXTRACT_HOOKS ?= +$(2)_PRE_RSYNC_HOOKS ?= $(2)_POST_RSYNC_HOOKS ?= $(2)_PRE_PATCH_HOOKS ?= $(2)_POST_PATCH_HOOKS ?= $(2)_PRE_CONFIGURE_HOOKS ?= $(2)_POST_CONFIGURE_HOOKS ?= +$(2)_PRE_BUILD_HOOKS ?= $(2)_POST_BUILD_HOOKS ?= +$(2)_PRE_INSTALL_HOOKS ?= $(2)_POST_INSTALL_HOOKS ?= +$(2)_PRE_INSTALL_STAGING_HOOKS ?= $(2)_POST_INSTALL_STAGING_HOOKS ?= +$(2)_PRE_INSTALL_TARGET_HOOKS ?= $(2)_POST_INSTALL_TARGET_HOOKS ?= +$(2)_PRE_INSTALL_IMAGES_HOOKS ?= $(2)_POST_INSTALL_IMAGES_HOOKS ?= +$(2)_PRE_LEGAL_INFO_HOOKS ?= $(2)_POST_LEGAL_INFO_HOOKS ?= # human-friendly targets and target sequencing @@ -543,6 +560,7 @@ $(2)_MANIFEST_TARBALL ?= not saved # legal-info: produce legally relevant info. $(1)-legal-info: # Packages without a source are assumed to be part of Buildroot, skip them. + $(foreach hook,$($(2)_PRE_LEGAL_INFO_HOOKS),$(call $(hook))$(sep)) ifneq ($(call qstrip,$$($(2)_SOURCE)),) ifeq ($$($(2)_SITE_METHOD),local)