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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox