]> rtime.felk.cvut.cz Git - coffee/buildroot.git/commitdiff
infra/pkg-kconfig: do not update-(def)config to a directory
authorYann E. MORIN <yann.morin.1998@free.fr>
Fri, 1 Dec 2017 15:09:46 +0000 (16:09 +0100)
committerThomas Petazzoni <thomas.petazzoni@bootlin.com>
Sat, 31 Mar 2018 20:34:55 +0000 (22:34 +0200)
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>
package/pkg-kconfig.mk

index 0da6d0ab4e5653eeceee07b6c6692cd98c5be439..81bba5220c61c029e903ed1ab11caa2c15ec91ce 100644 (file)
@@ -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