diff options
| author | Yann E. MORIN <yann.morin.1998@free.fr> | 2017-12-01 16:09:46 +0100 |
|---|---|---|
| committer | Thomas Petazzoni <thomas.petazzoni@bootlin.com> | 2018-03-31 22:34:55 +0200 |
| commit | 725ea68913cf6369a40180a70d94fadb06ca6491 (patch) | |
| tree | 0346545e2a2c896093457803628923d1f40da09a | |
| parent | 152f58e2092158cfd243934f577430badd619637 (diff) | |
| download | buildroot-725ea68913cf6369a40180a70d94fadb06ca6491.tar.gz buildroot-725ea68913cf6369a40180a70d94fadb06ca6491.zip | |
infra/pkg-kconfig: do not update-(def)config to a directory
Currently, if the user specifies the path to an existing directory as
the path to the custom (def)config file (FOO_KCONFIG_FILE), then we
happily create a file in there, either 'defconfig' or '.config' (or
whatever the .config is named for that package), depending on whether
we're saving a defconfig or a full config.
So, we could save the file, but then the Buildroot defconfig file that
contains that path would no longer be reusable as-is, because we
interpret that path as a path to a file.
Furthermore, if the directory-portion of FOO_KCONFIG_FILE does not
exist yet, the update would fail, because cp does not create missing
directory components.
So we fix that by adding an explicit test for the directory-ness of the
target file, and then an explicit mkdir to create missing directory
components.
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
| -rw-r--r-- | package/pkg-kconfig.mk | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/package/pkg-kconfig.mk b/package/pkg-kconfig.mk index 0da6d0ab4e..81bba5220c 100644 --- a/package/pkg-kconfig.mk +++ b/package/pkg-kconfig.mk @@ -18,6 +18,11 @@ define kconfig-package-update-config echo "Unable to perform $(@) when fragment files are set"; exit 1) @$(if $($(PKG)_KCONFIG_DEFCONFIG), \ echo "Unable to perform $(@) when using a defconfig rule"; exit 1) + $(Q)if [ -d $($(PKG)_KCONFIG_FILE) ]; then \ + echo "Unable to perform $(@) when $($(PKG)_KCONFIG_FILE) is a directory"; \ + exit 1; \ + fi + $(Q)mkdir -p $(dir $($(PKG)_KCONFIG_FILE)) cp -f $($(PKG)_DIR)/$(1) $($(PKG)_KCONFIG_FILE) $(Q)touch --reference $($(PKG)_DIR)/$($(PKG)_KCONFIG_DOTCONFIG) $($(PKG)_KCONFIG_FILE) endef |

