[Buildroot] [PATCH 1 of 2 v2] GENTARGETS: add support for scp://
Thomas De Schampheleire
patrickdepinguin+buildroot at gmail.com
Tue Oct 25 08:59:56 UTC 2011
On Wed, Oct 19, 2011 at 5:06 PM, Thomas De Schampheleire
<patrickdepinguin+buildroot at gmail.com> wrote:
> This patch adds support for scp:// both for use in the package Makefiles, as for
> the BR2_PRIMARY_SITE variable.
>
> This patch was based on the work of Richard Guy Briggs
> (see https://bugs.busybox.net/show_bug.cgi?id=3343).
>
> Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire at gmail.com>
>
> ---
> v2: update based on comments of Thomas Petazzoni
>
> Config.in | 13 ++++++++++++-
> package/Makefile.package.in | 55
> +++++++++++++++++++++++++++++++++++++++++++++++++------
> 2 files changed, 61 insertions(+), 7 deletions(-)
>
> diff --git a/Config.in b/Config.in
> --- a/Config.in
> +++ b/Config.in
> @@ -36,6 +36,14 @@ config BR2_LOCALFILES
> string "Local files retrieval command"
> default "cp"
>
> +config BR2_SCP
> + string "Secure copy (scp) command"
> + default "scp"
> +
> +config BR2_SSH
> + string "Secure shell (ssh) command"
> + default "ssh"
> +
> config BR2_ZCAT
> string "zcat command"
> default "gzip -d -c"
> @@ -102,7 +110,10 @@ config BR2_PRIMARY_SITE
> Primary site to download from. If this option is set then buildroot
> will try to download package source first from this site and try the
> default if the file is not found.
> - NOTE: This only works for packages using the Makefile.autotools.in
> + Valid URIs are URIs recognized by $(WGET) and scp URIs of the form
> + scp://[user@]host:path .
> + NOTE: This works for all packages using the central package
> + infrastructure (generic, autotools, cmake, ...)
>
> config BR2_BACKUP_SITE
> string "Backup download site"
> diff --git a/package/Makefile.package.in b/package/Makefile.package.in
> --- a/package/Makefile.package.in
> +++ b/package/Makefile.package.in
> @@ -92,6 +92,8 @@ WGET:=$(call qstrip,$(BR2_WGET)) $(QUIET
> SVN:=$(call qstrip,$(BR2_SVN))
> BZR:=$(call qstrip,$(BR2_BZR))
> GIT:=$(call qstrip,$(BR2_GIT))
> +SCP:=$(call qstrip,$(BR2_SCP)) $(QUIET)
> +SSH:=$(call qstrip,$(BR2_SSH)) $(QUIET)
> LOCALFILES:=$(call qstrip,$(BR2_LOCALFILES))
>
> # Default spider mode is 'DOWNLOAD'. Other possible values are 'SOURCE_CHECK'
> @@ -104,20 +106,39 @@ ifeq ($(DL_DIR),)
> DL_DIR:=$(TOPDIR)/dl
> endif
>
> +#
> +# URI scheme helper functions
> +# Example URIs:
> +# * http://www.example.com/dir/file
> +# * scp://www.example.com:dir/file (with domainseparator :)
> +#
> +# geturischeme: http
> +geturischeme=$(firstword $(subst ://, ,$(call qstrip,$(1))))
> +# stripurischeme: www.example.com/dir/file
> +stripurischeme=$(lastword $(subst ://, ,$(call qstrip,$(1))))
> +# domain: www.example.com
> +domain=$(firstword $(subst $(call domainseparator,$(2)), ,$(call stripurischeme,$(1))))
> +# notdomain: dir/file
> +notdomain=$(patsubst $(call domain,$(1),$(2))$(call domainseparator,$(2))%,%,$(call stripurischeme,$(1)))
> +#
> +# default domainseparator is /, specify alternative value as first argument
> +domainseparator=$(if $(1),$(1),/)
> +
> ################################################################################
> # The DOWNLOAD_{GIT,SVN,BZR,LOCALFILES} helpers are in charge of getting a
> # working copy of the source repository for their corresponding SCM,
> # checking out the requested version / commit / tag, and create an
> -# archive out of it. DOWNLOAD_WGET is the normal wget-based download
> +# archive out of it. DOWNLOAD_SCP uses scp to obtain a remote file with
> +# ssh authentication. DOWNLOAD_WGET is the normal wget-based download
> # mechanism.
> #
> -# The SOURCE_CHECK_{GIT,SVN,BZR,WGET,LOCALFILES} helpers are in charge of simply
> -# checking that the source is available for download. This can be used
> +# The SOURCE_CHECK_{GIT,SVN,BZR,WGET,LOCALFILES,SCP} helpers are in charge of
> +# simply checking that the source is available for download. This can be used
> # to make sure one will be able to get all the sources needed for
> # one's build configuration.
> #
> -# The SHOW_EXTERNAL_DEPS_{GIT,SVN,BZR,WGET,LOCALFILES} helpers simply output to
> -# the console the names of the files that will be downloaded, or path
> +# The SHOW_EXTERNAL_DEPS_{GIT,SVN,BZR,WGET,LOCALFILES,SCP} helpers simply output
> +# to the console the names of the files that will be downloaded, or path
> # and revision of the source repositories, producing a list of all the
> # "external dependencies" of a given build configuration.
> ################################################################################
> @@ -176,6 +197,22 @@ define SHOW_EXTERNAL_DEPS_SVN
> echo $($(PKG)_SOURCE)
> endef
>
> +# SCP URIs should be of the form scp://[user@]host:filepath
> +# Note that filepath is relative to the user's home directory, so you may want
> +# to prepend the path with a slash: scp://[user@]host:/absolutepath
> +define DOWNLOAD_SCP
> + test -e $(DL_DIR)/$(2) || \
> + $(SCP) $(call stripurischeme,$(call qstrip,$(1)))/$(2) $(DL_DIR)
> +endef
> +
> +define SOURCE_CHECK_SCP
> + $(SSH) $(call domain,$(1),:) ls $(call notdomain,$(1)/$(2),:) > /dev/null
> +endef
> +
> +define SHOW_EXTERNAL_DEPS_SCP
> + echo $(2)
> +endef
> +
>
> define DOWNLOAD_WGET
> test -e $(DL_DIR)/$(2) || \
> @@ -218,7 +255,10 @@ endef
>
> define DOWNLOAD
> $(Q)if test -n "$(call qstrip,$(BR2_PRIMARY_SITE))" ; then \
> - $(call $(DL_MODE)_WGET,$(BR2_PRIMARY_SITE),$(2)) && exit ; \
> + case "$(call geturischeme,$(BR2_PRIMARY_SITE))" in \
> + scp) $(call $(DL_MODE)_SCP,$(BR2_PRIMARY_SITE),$(2)) && exit ;; \
> + *) $(call $(DL_MODE)_WGET,$(BR2_PRIMARY_SITE),$(2)) && exit ;; \
> + esac ; \
> fi ; \
> if test -n "$(1)" ; then \
> case "$($(PKG)_SITE_METHOD)" in \
> @@ -226,6 +266,7 @@ define DOWNLOAD
> svn) $($(DL_MODE)_SVN) && exit ;; \
> bzr) $($(DL_MODE)_BZR) && exit ;; \
> file) $($(DL_MODE)_LOCALFILES) && exit ;; \
> + scp) $($(DL_MODE)_SCP) && exit ;; \
> *) $(call $(DL_MODE)_WGET,$(1),$(2)) && exit ;; \
> esac ; \
> fi ; \
> @@ -655,6 +696,8 @@ else ifeq ($$($(2)_SITE_METHOD),git)
> DL_TOOLS_DEPENDENCIES += git
> else ifeq ($$($(2)_SITE_METHOD),bzr)
> DL_TOOLS_DEPENDENCIES += bzr
> +else ifeq ($$($(2)_SITE_METHOD),scp)
> +DL_TOOLS_DEPENDENCIES += scp ssh
> endif # SITE_METHOD
>
> endif # $(2)_KCONFIG_VAR
>
>
bump
More information about the buildroot
mailing list