[vlc-devel] [vlc-commits] contrib: use git-archive and save the hash

Jean-Baptiste Kempf jb at videolan.org
Tue Feb 21 02:46:30 CET 2017


This commit breaks the build.

On Mon, 20 Feb 2017, at 21:10, Rémi Denis-Courmont wrote:
> vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Mon Feb 20
> 22:01:25 2017 +0200| [8fe4168947dd6cabd2aabb84cebc9aa6148e5d43] |
> committer: Rémi Denis-Courmont
> 
> contrib: use git-archive and save the hash
> 
> git-archive is supposed to validate the git repository to match the
> git hash, and the git hash itself is supposed to be cryptographically
> secure. So we if save it, we can reuse it to check the tarball.
> 
> Note: Alternatively, we could rely on git-archive making reproducible
> tarballs, which it indeed does, then perform a regular hash of the
> decompressed tarball. It is however unclear if git-archive tarballs are
> reproducible *across* Git versions, which could lead to problems.
> 
> Note 2: This still requires a head to fetch from. In principles,
> fetching a hash directly is possible, but not all servers allow it.
> 
> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=8fe4168947dd6cabd2aabb84cebc9aa6148e5d43
> ---
> 
>  contrib/src/main.mak | 30 +++++++++++++++++++++++-------
>  1 file changed, 23 insertions(+), 7 deletions(-)
> 
> diff --git a/contrib/src/main.mak b/contrib/src/main.mak
> index 9461a6c..6d95f56 100644
> --- a/contrib/src/main.mak
> +++ b/contrib/src/main.mak
> @@ -252,6 +252,12 @@ else
>  XZCAT ?= $(error xz and lzma client not found!)
>  endif
>  
> +ifeq ($(shell which xz >/dev/null 2>&1 || echo FAIL),)
> +XZ = xz
> +else
> +XZ ?= $(error XZ (LZMA) compressor not found!)
> +endif
> +
>  ifeq ($(shell which bzcat >/dev/null 2>&1 || echo FAIL),)
>  BZCAT = bzcat
>  else
> @@ -317,13 +323,23 @@ HOSTVARS_PIC := $(HOSTTOOLS) \
>  	LDFLAGS="$(LDFLAGS)"
>  
>  download_git = \
> -       rm -Rf $(@:.tar.xz=) && \
> -       $(GIT) clone $(subst HEAD, --depth 1,$(findstring HEAD, $3))
> $(2:%=--branch %) $(1) $(@:.tar.xz=) && \
> -       (cd $(@:.tar.xz=) && $(GIT) checkout $(3:%= %)) && \
> -       rm -Rf $(@:%.tar.xz=%)/.git && \
> -       (cd $(dir $@) && \
> -       tar cvJ $(notdir $(@:.tar.xz=))) > $@ && \
> -       rm -Rf $(@:.tar.xz=)
> +       rm -Rf -- "$(@:.tar.xz=)" && \
> +       $(GIT) init --bare "$(@:.tar.xz=)" && \
> +       (cd "$(@:.tar.xz=)" && \
> +       $(GIT) remote add origin "$(1)" && \
> +       $(GIT) fetch origin "$(2)") && \
> +       (cd "$(@:.tar.xz=)" && \
> +       $(GIT) archive --prefix="$(notdir $(@:.tar.xz=))" \
> +               --format=tar "$(3)") > "$(@:.xz=)" && \
> +       echo "$(3) $(@)" > "$(@:.tar.xz=.githash)" && \
> +       rm -Rf -- "$(@:.tar.xz)" && \
> +       $(XZ) --stdout "$(@:.xz=)" > "$@.tmp" && \
> +       mv -f -- "$@.tmp" "$@"
> +check_githash = \
> +       h=`sed -n -e "s,^\([0-9a-fA-F]\{40\}\) $<,\1,p" \
> +               < "$(<:.tar.xz=.githash)"` && \
> +       test "$$h" = "$1"
> +
>  checksum = \
>  	$(foreach f,$(filter $(TARBALLS)/%,$^), \
>  		grep -- " $(f:$(TARBALLS)/%=%)$$" \
> 
> _______________________________________________
> vlc-commits mailing list
> vlc-commits at videolan.org
> https://mailman.videolan.org/listinfo/vlc-commits


-- 
Jean-Baptiste Kempf -  President
+33 672 704 734


More information about the vlc-devel mailing list