All of lore.kernel.org
 help / color / mirror / Atom feed
From: Trevor Woerner <twoerner@gmail.com>
To: Alexander Kanavin <alexander.kanavin@linux.intel.com>
Cc: Yocto Project <yocto@yoctoproject.org>,
	openembedded-architecture@lists.openembedded.org
Subject: Re: [Openembedded-architecture] Proposal: dealing with language-specific build tools/dependency management tools
Date: Fri, 10 Mar 2017 15:49:43 -0500	[thread overview]
Message-ID: <20170310204943.GA32004@linux-uys3> (raw)
In-Reply-To: <37d4f98c-9102-f4bf-c6cc-f64e1ffbce40@linux.intel.com>

Hi Alexander,

Thanks for bringing up this important topic. There is no doubt we're seeing
paradigm shifts in the way applications are written, built, and packaged;
as well as a complete lack of interest in licensing.

Although the trend is to not care about licensing, I believe it is vitally
important that we do our best to keep track of all the licensing from every
package that is pulled into an image. If we're pulling in >1000 npm packages
just for one node app, then that means we should have >1000 item list of each
dependency and their respective licenses. Although it makes a recipe look
ugly, I wouldn't want to drop this functionality due to aesthetic concerns.
Maybe the license list could be moved to another file that is required by the
"main" recipe file? Maybe the list could be moved to the bottom of the file?

In the case of node specifically, I don't think trying to create and maintain
separate recipes for each and every dependency one might find in the npm
registry would be a sane approach. Currently we embed the version info into
the recipe filename. This will simply not scale to millions of npm packages,
each with numerous versions.

I've been playing with node a fair amount lately as it relates to OE and I
have to say I've been quite impressed! These aren't easy things and I think
there's a lot of good work happening.

I've outlined some of my thoughts on my experiences[1]:
http://lists.openembedded.org/pipermail/openembedded-core/2017-February/133432.html

Other than these (short-term?) issues devtool seems to be on the right
track (?) It does, for example, generate a lockdown.json file and an
npm-shrinkwrap.json file automatically. All we need is the package.json from
the app developer, and that can be auto-generated via npm. I think we have to
accept that node developers are going to want to develop on the target device
itself, and when they're done they can hand us the package.json file which we
can run devtool on which will generate the recipe for us.

As a short-term work-around, I've simply been creating an image with node+npm,
running it on the device, copying over the package.json file, running npm
install against it, then collecting up all the extra stuff that gets added
to my image (as a result), and bundling all that into a platform-specific
"bin_package" (bbclass). It works, but it's a multi-step process. If I could
cut out some of those steps (once things from [1] are fixed), it would be an
improvement.

Best regards,
	Trevor







[1] A short recap of those emails:

	Different paths seem to be followed depending on whether you point devtool at,
	say, a github repository versus a local checkout of the same project. That
	seems wrong.

	Also (as you've pointed out) RSS is messing all this up on master at the
	moment; but I assume this can/will get fixed? Things work fine on morty.

	Also, devtool gets tripped up when it encounters a license string that isn't
	found in its list of already-known license strings. This approach seems doomed
	to failure. It has to be able to recover gracefully and continue walking the
	dependency list without having to continuously add corner cases to the code.


  parent reply	other threads:[~2017-03-10 20:49 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-10 13:49 Proposal: dealing with language-specific build tools/dependency management tools Alexander Kanavin
2017-03-10 14:30 ` [Openembedded-architecture] " Otavio Salvador
2017-03-10 14:48   ` Alexander Kanavin
2017-03-10 14:58     ` Otavio Salvador
2017-03-10 15:10       ` Alexander Kanavin
2017-03-10 15:33         ` Derek Straka
2017-03-10 15:35         ` Derek Straka
2017-03-13  8:25         ` Piotr Figiel
2017-03-13 17:51         ` Bruce, Henry
2017-03-16 10:25           ` Alexander Kanavin
2017-03-10 16:23       ` Mark Hatle
2017-03-10 20:37       ` Josef Holzmayr
2017-03-10 20:49 ` Trevor Woerner [this message]
2017-03-11 13:07   ` Josef Holzmayr
2017-03-13 20:58 ` Paul Eggleton
2017-03-16  8:17 ` [Openembedded-architecture] Sum up - " Josef Holzmayr
2017-03-16  9:30   ` Paul Barker
2017-03-16 10:35     ` Alexander Kanavin
2017-03-16 10:48       ` Jack Mitchell
2017-03-16 11:42         ` Alexander Kanavin
2017-03-16 11:47           ` Alexander Kanavin
2017-03-16 19:41         ` Patrick Ohly
2017-03-16 15:45       ` Mark Hatle
2017-03-16 15:43     ` Mark Hatle
2017-03-16 10:21   ` Alexander Kanavin

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=20170310204943.GA32004@linux-uys3 \
    --to=twoerner@gmail.com \
    --cc=alexander.kanavin@linux.intel.com \
    --cc=openembedded-architecture@lists.openembedded.org \
    --cc=yocto@yoctoproject.org \
    /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.