From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH v2 04/12] support/download/post-process-helpers: add helper function for post process scripts
Date: Sat, 19 Dec 2020 18:39:33 +0100 [thread overview]
Message-ID: <20201219173933.GJ3188@scaer> (raw)
In-Reply-To: <20201219153525.1361175-5-thomas.petazzoni@bootlin.com>
Thomas, All,
On 2020-12-19 16:35 +0100, Thomas Petazzoni spake thusly:
> download post process scripts will often need to unpack the source
> code tarball, do some operation, and then repack it. In order to help
> with this, post-process-helpers provide an unpack() function and a
> repack() function.
You forgot to explain in the commit log why we need a hard-coded, fixed
date.
However, I find it ugly that we resort to such an arbitrary constant. At
the very least, I'd like we take a memorable value, like 1970-01-01
00:00:00 +0000.
However, I am afraid that tar would refuse to extract files to that
date, whining about an "implausibly old time stamp" when extracting such
files...
But see below for a proposal...
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> ---
> support/download/post-process-helpers | 30 +++++++++++++++++++++++++++
> 1 file changed, 30 insertions(+)
> create mode 100644 support/download/post-process-helpers
>
> diff --git a/support/download/post-process-helpers b/support/download/post-process-helpers
> new file mode 100644
> index 0000000000..bed8df2577
> --- /dev/null
> +++ b/support/download/post-process-helpers
> @@ -0,0 +1,30 @@
> +
> +unpack() {
> + dest="$1"
> + tarball="$2"
This is a shell script, variables are global. But since we run it with
bash, we can declare such variable as local:
local dest="${1}"
local tarball="${2}"
> + mkdir ${dest}
> + tar -C ${dest} --strip-components=1 -xf ${tarball}
local one_file
one_file="$(find "${dest}" -type f |head -n1)"
touch -r "${one_file}" "${dest}.timestamp"
> +}
> +
> +repack() {
> + src="$1"
> + tarball="$2"
Ditto: make them 'local' (this can be fixed when applying).
Also, I suppose that the 'dest' parameter of unpack is expected to be the
'src' parameter of repack, right?
> + # Generate the archive, sort with the C locale so that it is reproducible.
> + find "$(basename ${src})" -not -type d -print0 >files.list
> + LC_ALL=C sort -z <files.list >files.list.sorted
> +
> + # let's use a fixed hardcoded date to be reproducible
> + date="2020-02-06 01:02:03 +0000"
Assuming that unpack's dest and repack's src are pointing to the same
directory:
date="$(stat -c "${src}.timestamp")"
> + # Create GNU-format tarballs, since that's the format of the tarballs on
> + # sources.buildroot.org and used in the *.hash files
> + tar cf new.tar --null --verbatim-files-from --numeric-owner --format=gnu \
> + --owner=0 --group=0 --mtime="${date}" -T files.list.sorted
This will have to be changed according to my pending series to change to
the PAX format, whish is even more reproducible.
> + gzip -6 -n <new.tar >new.tar.gz
> + mv "${tarball}" "${tarball}".old
> + mv new.tar.gz "${tarball}"
> + rm "${tarball}".old
> + rm -rf ${src}
Quote all expanded variable, even "${src}". And also rm "${src}.timestamp",
now.
Regards,
Yann E. MORIN.
> +}
> --
> 2.29.2
>
--
.-----------------.--------------------.------------------.--------------------.
| 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:[~2020-12-19 17:39 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-19 15:35 [Buildroot] [PATCH v2 00/12] Support for Cargo and Go vendoring Thomas Petazzoni
2020-12-19 15:35 ` [Buildroot] [PATCH v2 01/12] support/download/dl-wrapper: add concept of download post-processing Thomas Petazzoni
2020-12-19 15:35 ` [Buildroot] [PATCH v2 02/12] package/pkg-download.mk: add <pkg>_DOWNLOAD_POST_PROCESS variable Thomas Petazzoni
2020-12-19 15:35 ` [Buildroot] [PATCH v2 03/12] package/pkg-download.mk: add <pkg>_DL_ENV variable Thomas Petazzoni
2020-12-29 16:18 ` Yann E. MORIN
2020-12-19 15:35 ` [Buildroot] [PATCH v2 04/12] support/download/post-process-helpers: add helper function for post process scripts Thomas Petazzoni
2020-12-19 17:39 ` Yann E. MORIN [this message]
2020-12-19 20:29 ` Yann E. MORIN
2020-12-20 8:40 ` Yann E. MORIN
2020-12-19 15:35 ` [Buildroot] [PATCH v2 05/12] support/download/go-post-process: implement Go vendoring support Thomas Petazzoni
2021-07-29 20:17 ` Christian Stewart
2021-07-29 20:50 ` Thomas Petazzoni
2021-07-30 13:18 ` Vincent Fazio
[not found] ` <CA+h8R2onPMjOuvC0U6iM8QbhuAQQ9=aQ-yB-rWQkCbhpxcdiHw@mail.gmail.com>
2021-08-01 7:08 ` Yann E. MORIN
[not found] ` <CA+h8R2pLN_aYiQ1vp+rTMUsQAcGT88fsAiCC-i9uJpK1y0r4rw@mail.gmail.com>
2021-08-01 9:14 ` Yann E. MORIN
2021-09-19 6:20 ` Christian Stewart via buildroot
2021-09-19 6:42 ` Christian Stewart via buildroot
2020-12-19 15:35 ` [Buildroot] [PATCH v2 06/12] package/tinifier: new package Thomas Petazzoni
2020-12-19 15:35 ` [Buildroot] [PATCH v2 07/12] package/pkg-cargo.mk: introduce the cargo package infrastructure Thomas Petazzoni
2020-12-19 15:35 ` [Buildroot] [PATCH v2 08/12] docs/manual/cargo: document the cargo-package infrastructure Thomas Petazzoni
2020-12-19 15:35 ` [Buildroot] [PATCH v2 09/12] package/ripgrep: convert to cargo infrastructure Thomas Petazzoni
2020-12-19 15:35 ` [Buildroot] [PATCH v2 10/12] package/sentry-cli: convert to host-cargo-package infrastructure Thomas Petazzoni
2020-12-19 15:35 ` [Buildroot] [PATCH v2 11/12] support/download/cargo-post-process, package/pkg-cargo.mk: enable vendoring for Cargo packages Thomas Petazzoni
2020-12-19 15:35 ` [Buildroot] [PATCH v2 12/12] docs/manual/adding-packages-cargo.txt: rewrite explanation about dependency management Thomas Petazzoni
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=20201219173933.GJ3188@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.