From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
To: buildroot@busybox.net
Subject: [Buildroot] [RFC PATCH v1 1/1] package/pkg-golang: download deps to vendor tree if not present
Date: Thu, 3 Sep 2020 13:57:14 +0200 [thread overview]
Message-ID: <20200903135714.68ed2e22@windsurf.home> (raw)
In-Reply-To: <CAK714xKp0H5HEv5bp1bjDumZff6+cC41cs=exZk8bKuZTCV2vQ@mail.gmail.com>
Hello,
On Thu, 3 Sep 2020 05:52:56 -0500
Sam Voss <sam.voss@gmail.com> wrote:
> > My proposal was that we introduce per-package managers download
> > backends, which would typically do something like the following
> > (pseudo-code):
> >
> > #!/usr/bin/env bash
> > # This file is support/fownload/go
> >
> > # Parse options:
> > actual_site_method="$(get_option '--actual-site-method')"
> >
> > # Call actual download helper:
> > "${0%/*}/${actual_site_method}" "${@}" -o "${temp_tarball}"
> >
> > # Populate the vendor:
> > tar xf "${temp_tarball}" -C "${temp_directory}"
> > cd "${temp_directory}/${package_name_version}"
> > go mod vendor
> > cd ..
> > tar czf "${final_tarball}" "${package_name_version}"
> >
> > (of course, the details would be a bit more complex, and would require
> > that we pass the actual site method vi the download infra, but the idea
> > is there)
> >
> > What's your opinion on this?
>
> As we spoke about plenty on the IRC, I'm sure you know my opinion on
> this but I figure I mention it anyway: I believe we should split these
> recursive-requirements from the base tar. This should allow
> Proprietary applications and TPIP requirements to be captured while
> maintaining separation between them.
For those tuning in: TPIP stands for (I believe) "Third Party
Intellectual Property".
I think I agree with the idea of splitting into two tarballs the
package source code itself from the source code of all its dependencies.
> Now, to your point about "well, what if the repository has proprietary
> dependencies?".
That was indeed my question as well.
> I think this is still a valid point, especially when
> looking at the case you mentioned of "proprietary app with commingled
> TPIP+proprietary requirements", but I believe we should be able to
> handle this at a buildroot level fairly reasonably.
>
> I took a look at `go mod`, it seems to share a similar mechanism with
> cargo which allows us to pass local paths for dependencies. My
> proposition is to put the responsibility of whomever is adding a
> proprietary application, which has mixed dependencies, to instead
> split any proprietary modules into selectable options in buildroot,
> and use the standard depends mechanism. To enforce this, we could
> investigate using license-coalescing options of the package managers
> to find any proprietary dependencies and fail if they're found to be
> pointing to upstream URLs (and would be captured) with an error
> message clearly describing our intentions.
This feels like a reasonable approach to me.
Question: for the dependencies, instead of having a single tarball for
all of them, would there be a way of having separate tarballs for each
dependency that gets pulled by "go mod" or "cargo" ? If so, then we
could perhaps be able to teach the package which parts of the package
are proprietary (including the proprietary dependencies) and which
parts are open-source and under which license.
Note that as a first step, I am personally perfectly fine with what you
are proposing. The above question is really just a question, not a
request to implement something like that.
> In my (so far unshared) patchset, my solution to do this agrees with
> your suggestion above, by adding download-backend support for these
> package managers. I leveraged the implementation suggested previously
> by patrick[1] to use the cargo-dl step to then create two tarballs:
>
> <package>-<ver>.tar.gz <- we're all familiar with
> <package>-<ver>-vendor.tar.gz <- the TPIP portion
>
> The reasons for splitting are shared above. I believe that patchset is
> a good initial direction, and I think those interested in this
> patchset who are unfamiliar with that one should give it a review.
Could you submit your patch series ? Did you fix the issues that we
pointed out in the review of Patrick's series ?
I think we have a good opportunity to try to solve this problem for
both Cargo and Go at the same time, so that we at least see if there's
a reasonably similar solution that can be used.
Best regards,
Thomas
--
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
next prev parent reply other threads:[~2020-09-03 11:57 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-31 6:23 [Buildroot] [RFC PATCH v1 1/1] package/pkg-golang: download deps to vendor tree if not present Christian Stewart
2020-08-31 7:08 ` Yann E. MORIN
2020-09-03 10:52 ` Sam Voss
2020-09-03 11:57 ` Thomas Petazzoni [this message]
2020-09-03 13:01 ` Sam Voss
2020-09-03 13:58 ` Thomas Petazzoni
2020-09-03 18:51 ` Christian Stewart
2020-09-03 13:28 ` Yann E. MORIN
2020-09-03 14:02 ` Thomas Petazzoni
2020-09-03 15:12 ` Yann E. MORIN
2020-09-03 16:13 ` Thomas Petazzoni
2020-09-03 19:18 ` Yann E. MORIN
2020-09-03 19:40 ` Christian Stewart
2020-09-03 20:43 ` Yann E. MORIN
2020-09-03 21:47 ` Christian Stewart
2020-09-04 8:06 ` Yann E. MORIN
2020-09-04 16:07 ` Christian Stewart
2020-09-04 20:25 ` Sam Voss
2020-09-10 22:33 ` Christian Stewart
2020-09-15 19:10 ` Arnout Vandecappelle
2020-09-15 20:08 ` Sam Voss
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=20200903135714.68ed2e22@windsurf.home \
--to=thomas.petazzoni@bootlin.com \
--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