About two weeks ago a gclient hook has been added to download NaCl's IRT (integrated runtime) on each gclient sync: http://src.chromium.org/viewvc/chrome/trunk/src/build/download_nacl_irt.py?view=logThis is probably fine for the developers' workflow and the buildbot (although some valid concerns have been raised in http://codereview.chromium.org/6893080), but it breaks horribly for Linux distro packages. We're creating tarballs on http://build.chromium.org/official/ , and the script behind it uses --nohooks (otherwise we run into problems like http://bugs.gentoo.org/show_bug.cgi?id=337543, and it's not guaranteed that the machine generating tarballs has all build dependencies (and embedding makefiles into the tarballs, even if they can get overwritten, is not necessarily the best idea).Now the immediate problem that download_nacl_irt.py is causing is http://bugs.gentoo.org/show_bug.cgi?id=366413 (since we don't run the hook, the build fails because of missing files). It even fails when -Ddisable_nacl=1 is passed to gyp, which makes it impossible to work around cleanly.
The package should not be downloading any files from the Internet after unpacking the tarball, so everything should be in the tarball.Is it really needed to have a script like download_nacl_irt.py? Why don't we handle this like everything else, i.e. DEPS rolls and possibly canary buildbots which always use the latest builds?
As a short term fix, we can make it work with 'disable_nacl=1'. Here's a change to do that: http://codereview.chromium.org/6968007/
We can also make download_nacl_irt.py invokable directly to address the problem that "Calling the download_nacl_irt.py script from the ebuild is difficult because we would need to figure out the nacl_revision and file_hash values." Here's a change to do that: http://codereview.chromium.org/6966010/
Would that help, or is it still a problem to have pre-built binaries in your source tarball?
--
Chromium Developers mailing list: chromi...@chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
Cheers,
Jói
Is there a reason you need to use a script executed by [gclient
runhooks] to pull down the pre-built binaries instead of checking the
pre-built binaries into an SVN repository somewhere and pulling them
down via DEPS during [gclient sync]?
> 1. 6MB files x ~10 commits per day was a turn off to the folks running our
> svn server.
Would it reduce the burden if these files were only checked in
whenever the NaCl revision used by Chrome is rolled in DEPS? I'm
guessing this is much less often.
Cheers,
Jói
I don't object if everything is behind the nacl_enabled flag, but just
one thought:
Would it reduce the burden if these files were only checked in
> 1. 6MB files x ~10 commits per day was a turn off to the folks running our
> svn server.
whenever the NaCl revision used by Chrome is rolled in DEPS? I'm
guessing this is much less often.
It seems that you’ve got to track this correspondence anyway, whether
the a specific build of the IRT is identified by a hash or a
Subversion revision number. At least as far as this aspect is
concerned, the download script is no better than having a side
Subversion repository.
For that matter, in a Subversion checkin, you could just use something
like http://nacl-irt-binaries.googlecode.com/svn/5068. Now it’s
written right into the path again. There isn’t any requirement that
you replace the files as time goes on, and since nobody is likely to
check out the repository in its entirety, it’s not likely to make
things cumbersome for anyone.
I just tried to update the NaCl version used in chrome. I saw this
comment in DEPS:
# These hashes need to be updated when nacl_revision is changed.
# After changing nacl_revision, run gclient sync to get the new values.
When I ran `gclient sync` after bumping up nacl_revision to 5443
(which has a build file dependency fix that gyp rolls are blocked on),
I got a long stack ending in
"http://commondatastorage.googleapis.com/nativeclient-archive2/irt/r5443/irt_x86_64.nexe
– urllib2.HTTPError: HTTP Error 404: Not Found"
By trial and error I discovered that 5445 does have a nexe, so I'm
trying to roll to that. Is there a way to know which nacl revisions
are valid roll targets?
Thanks,
Nico
On Mon, May 9, 2011 at 10:28 AM, Mark Seaborn <msea...@chromium.org> wrote:
Hi Mark & Brad,
I just tried to update the NaCl version used in chrome. I saw this
comment in DEPS:
# These hashes need to be updated when nacl_revision is changed.
# After changing nacl_revision, run gclient sync to get the new values.
When I ran `gclient sync` after bumping up nacl_revision to 5443
(which has a build file dependency fix that gyp rolls are blocked on),
I got a long stack ending in
"http://commondatastorage.googleapis.com/nativeclient-archive2/irt/r5443/irt_x86_64.nexe
– urllib2.HTTPError: HTTP Error 404: Not Found"
By trial and error I discovered that 5445 does have a nexe, so I'm
trying to roll to that. Is there a way to know which nacl revisions
are valid roll targets?
That would be helpful. Please add a comment to the DEPS file that
points to this script.
Maybe also mention what the hashes are for – I assume to make sure the
downloaded nexes aren't corrupted / haven't been tampered with?