[Buildbot-devel] Questions on buildbot_www package (nine branch)

Andrii Senkovych jolly_roger at itblog.org.ua
Wed Oct 23 20:46:37 UTC 2013


2013/10/16 Dustin J. Mitchell <dustin at v.igoro.us>:
> On Sat, Oct 12, 2013 at 8:15 PM, Andrii Senkovych
> <jolly_roger at itblog.org.ua> wrote:
>>  * it tends to satisfy all build-dependencies system-wide
>
> I wouldn't think of the NPM requirements as "build dependencies".  In
> fact, having e.g., ui-router installed systemwide might not help, as
> we need it installed within the buildbot-www build directories.  I can
> see that the practice of downloading these packages from npm at build
> time will be problematic, though!  I see that Pierre has suggested the
> opposite.  Barring known solutions to this sort of problem in the
> Debian world, I think you'll have to compromise on #1 or #2.

You may be surprised, but there are already some helpers that fix
these issues for several workflows. There is a lot of software that
uses sphinx to generate documentation. The resulting files among plain
HTML include underscore.js and some jQuery plugins. These files are
located during build by dh_sphinxdoc helper and are replaced with
symlinks that point to the files installed system-wide (e.g. to
/usr/share/javascript/*) together with adding additional dependencies
to the resulting binary package. To make this work you Build-Depend on
dh-sphinxdoc and use it during build inside debian/rules.

I might mimic this behaviour in a certain way by writing my own helper scripts.

As for downloading files during build, you are right. Current Debian
build procedure allows to use internet connection to download packages
as an exception to debian-installer. Ubuntu builders drop network
connections during builds already. However thanks to the DebSrc 3.0
format it is possible to have multiple tarballs for a single debian
build. In short I expect to achieve the following workflow:

1) buildbot-www sdist is the actual sdist containing all files from
git repo that are needed for build procedure
2) there exists (or can be generated) additional source tarball that
includes all necessary external dependencies,possibly it's the
contents of bower_components and node_modules right before actual
build. Since this step is done in environment controlled by developer
or maintainer, it can possibly contain anything that doesn't conflict
with Debian policy.
3) based on these tarballs, run typical Debian build procedure. This
is pretty straightforward, given all dependencies can be satisfied by
provided files in offline mode.

I understand that it's better to provide prebuilt buildbot-www package
as well, but don't know how exactly this can be done and serviced to
the end users/python developers/etc.

>>  * it requires all packages to be built from source
>
> Which means, from your description, that the concatenated and minified
> JS from the sdist tarball isn't adequate.  I suppose that means that
> the orig.tar.gz is the Buildbot git repository, rather than anything
> generated by python setup.py.

Yes, I cannot use current sdist tarball for buildbot-www as it is now.
I used buildbot and buildbot-slave sdist tarballs up until now though.
So it's not the format that matters but the contents.

>>  * it has /usr/bin/nodejs instead of /usr/bin/node
>
> Depending on node-legacy is one fix here.  Note, thought, that the
> only system binary that setup.py invokes is 'npm', which is already
> packaged and presumably patched to refer to nodejs.

not exactly. There is some library (don't remember which one) that
uses exactly this executable name during its build. But sure, this is
minor issue.

I've got some answers from other Debian maintainers here:

http://lists.debian.org/debian-mentors/2013/10/msg00171.html

There are some "holy war" arguments appear, but please ignore them.

Thanks.
-- 
Best regards, Andrii Senkovych




More information about the devel mailing list