From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH v2 02/18] package/pkg-generic.mk: Remove Info documents dir entry
Date: Tue, 6 Jul 2021 21:25:01 +0200 [thread overview]
Message-ID: <20210706192501.GM2521@scaer> (raw)
In-Reply-To: <20210706142501.951345-3-herve.codina@bootlin.com>
Herv?, All,
On 2021-07-06 16:24 +0200, Herve Codina spake thusly:
> Some packages (autotools for instance) install documentation
> files using install-info. This program adds an entry in
> the Info directory file (share/info/dir) and this causes
> TARGET_DIR and/or HOST_DIR overwrite.
>
> In order to avoid this overwrite this patch removes the Info
> directory file right after any installation.
>
> In order to be as generic as possible, this patch introduces
> a new tooling to remove useless and conflicting files based
> on the file and/or directory list <PKG>_DROP_FILES_OR_DIRS.
> share/info/dir file is added for every packages in this list.
>
> Signed-off-by: Herve Codina <herve.codina@bootlin.com>
> ---
> Changes v1 to v2:
> - Reworked adding <PKG>_DROP_FILES_OR_DIRS and associated tooling.
>
> package/pkg-generic.mk | 26 ++++++++++++++++++++++++++
> 1 file changed, 26 insertions(+)
>
> diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
> index 45589bcbb4..05b2095664 100644
> --- a/package/pkg-generic.mk
> +++ b/package/pkg-generic.mk
> @@ -135,6 +135,22 @@ define check_bin_arch
> -a $(BR2_READELF_ARCH_NAME)
> endef
>
> +# Functions to remove conflicting and useless files
> +
> +# $1: base directory (target, staging, host)
> +define remove-conflicting-useless-files
> + $(Q)$(RM) -rf $(patsubst %, $(1)/%, $($(PKG)_DROP_FILES_OR_DIRS))
This is very ambiguous: in case $(PKG)_DROP_FILES_OR_DIRS ends up
being empty, this code wil lexpand to "rm -rf". This does nothing,
fortunately, but calling rm -rf always makes me nervous, especially
in conjunction with adding $(1)/ in front of it, because what happens
when the caller forgets to pass the argument? Meh, maybe I'm getting
too paranoid. Or too old... Or both...
Yes, this is the exact line I wrote in my previous review, but it was
mostly just to kickstart the idea...
But here, I don't think checking would be superfluous.
Also, $(PKG)_DROP_FILES_OR_DIRS is supposed to contain absolute path,
e.g. /share/info/dir, so there already is a '/', so no need to add one.
So, what about:
$(if $($(PKG)_DROP_FILES_OR_DIRS), \
$(Q)$(RM) -rf $(patsubst %, $(1)%, $($(PKG)_DROP_FILES_OR_DIRS)))
No need to respin, I can do that when applying...
And of course, the big question: do we want to expose that to packages,
so they can set it by themselves? In which case, that lacks an entry in
the manual... But I don't think we should expose it; packages that want
to remove files can do do with post-install hooks. Here we really are
speaking about files that by design Buildroot does not want to handle...
Regards,
Yann E. MORIN.
> +endef
> +define REMOVE_CONFLICTING_USELESS_FILES_IN_HOST
> + $(call remove-conflicting-useless-files,$(HOST_DIR))
> +endef
> +define REMOVE_CONFLICTING_USELESS_FILES_IN_STAGING
> + $(call remove-conflicting-useless-files,$(STAGING_DIR))
> +endef
> +define REMOVE_CONFLICTING_USELESS_FILES_IN_TARGET
> + $(call remove-conflicting-useless-files,$(TARGET_DIR))
> +endef
> +
> ################################################################################
> # Implicit targets -- produce a stamp file for each step of a package build
> ################################################################################
> @@ -823,6 +839,16 @@ $$(error "Package $(1) defines host variant before target variant!")
> endif
> endif
>
> +# Globaly remove following conflicting and useless files
> +$(2)_DROP_FILES_OR_DIRS += /share/info/dir
> +
> +ifeq ($$($(2)_TYPE),host)
> +$(2)_POST_INSTALL_HOOKS += REMOVE_CONFLICTING_USELESS_FILES_IN_HOST
> +else
> +$(2)_POST_INSTALL_STAGING_HOOKS += REMOVE_CONFLICTING_USELESS_FILES_IN_STAGING
> +$(2)_POST_INSTALL_TARGET_HOOKS += REMOVE_CONFLICTING_USELESS_FILES_IN_TARGET
> +endif
> +
> # human-friendly targets and target sequencing
> $(1): $(1)-install
> $(1)-install: $$($(2)_TARGET_INSTALL)
> --
> 2.31.1
>
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
next prev parent reply other threads:[~2021-07-06 19:25 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-06 14:24 [Buildroot] [PATCH v2 00/18] Overwritten file detection and fixes, one more step to TLP build Herve Codina
2021-07-06 14:24 ` [Buildroot] [PATCH v2 01/18] package/e2fsprogs: fix fsck overwrite in HOST_DIR Herve Codina
2021-07-06 14:24 ` [Buildroot] [PATCH v2 02/18] package/pkg-generic.mk: Remove Info documents dir entry Herve Codina
2021-07-06 19:25 ` Yann E. MORIN [this message]
2021-07-06 14:24 ` [Buildroot] [PATCH v2 03/18] package/pkg-generic.mk: perform .la files fixup in per-package HOST_DIR Herve Codina
2021-07-06 14:24 ` [Buildroot] [PATCH v2 04/18] package/pkg-generic: add post-prepare hooks Herve Codina
2021-07-06 14:24 ` [Buildroot] [PATCH v2 05/18] package/apr-util: use post-prepare hook Herve Codina
2021-07-06 14:24 ` [Buildroot] [PATCH v2 06/18] package/apache: move APACHE_FIXUP_APR_LIBTOOL to " Herve Codina
2021-07-06 14:24 ` [Buildroot] [PATCH v2 07/18] package/pkg-python: remove _sysconfigdata*.pyc files when _sysconfigdata*.py are changed Herve Codina
2021-07-06 19:29 ` Yann E. MORIN
2021-07-06 14:24 ` [Buildroot] [PATCH v2 08/18] package/pkg-generic.mk: move python fixup to generic package infrastructure Herve Codina
2021-07-06 19:50 ` Yann E. MORIN
2021-07-06 21:22 ` Yann E. MORIN
2021-07-07 11:48 ` Herve Codina
2021-07-07 12:21 ` Arnout Vandecappelle
2021-07-07 12:49 ` Herve Codina
2021-07-07 14:28 ` Arnout Vandecappelle
2021-07-07 20:12 ` Yann E. MORIN
2021-07-08 15:38 ` Herve Codina
2021-07-08 20:26 ` Yann E. MORIN
2021-07-09 6:48 ` Herve Codina
2021-07-06 14:24 ` [Buildroot] [PATCH v2 09/18] package/owfs: remove Python sysconfigdata fixup Herve Codina
2021-07-06 14:24 ` [Buildroot] [PATCH v2 10/18] package/pkg-generic.mk: detect files overwritten in TARGET_DIR and HOST_DIR Herve Codina
2021-07-06 14:24 ` [Buildroot] [PATCH v2 11/18] package/pkg-generic.mk: generate final rsync exclude file list Herve Codina
2021-07-06 14:24 ` [Buildroot] [PATCH v2 12/18] Makefile: rsync global {TARGET, HOST}_DIR using exclusion " Herve Codina
2021-07-06 14:24 ` [Buildroot] [PATCH v2 13/18] Makefile: breaks hardlinks in global {TARGET, HOST}_DIR on per-package build Herve Codina
2021-07-06 14:24 ` [Buildroot] [PATCH v2 14/18] package/pkg-generic.mk: fix per-package <pkg>-{reconfigure, rebuild, reinstall} Herve Codina
2021-07-06 14:24 ` [Buildroot] [PATCH v2 15/18] package/pkg-generic.mk: remove .files-final-rsync.before temporary file Herve Codina
2021-07-06 14:24 ` [Buildroot] [PATCH v2 16/18] support/testing/infra: add log_file_path() function Herve Codina
2021-07-06 14:25 ` [Buildroot] [PATCH v2 17/18] support/testing/tests: add test for check_bin_arch Herve Codina
2021-07-06 20:20 ` Yann E. MORIN
2021-07-06 21:25 ` Yann E. MORIN
2021-07-07 12:07 ` Herve Codina
2021-07-06 14:25 ` [Buildroot] [PATCH v2 18/18] support/testing/tests: add test for file overwrite detection Herve Codina
2021-07-06 21:19 ` [Buildroot] [PATCH v2 00/18] Overwritten file detection and fixes, one more step to TLP build Yann E. MORIN
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210706192501.GM2521@scaer \
--to=yann.morin.1998@free.fr \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox