Closed Bug 1496708 Opened 7 years ago Closed 7 years ago

./mach bootstrap aborts trying to install NodeJS on Tier3

Categories

(Firefox Build System :: Bootstrap Configuration, defect)

Unspecified
FreeBSD
defect
Not set
normal

Tracking

(firefox-esr60 unaffected, firefox62 unaffected, firefox63 fixed, firefox64 fixed)

RESOLVED FIXED
mozilla64
Tracking Status
firefox-esr60 --- unaffected
firefox62 --- unaffected
firefox63 --- fixed
firefox64 --- fixed

People

(Reporter: jbeich, Assigned: jbeich)

References

Details

(Keywords: regression, Whiteboard: [npotb])

Attachments

(2 files)

bug 1424921 + bug 1433036 added NodeJS support to all systems with bootstrap, including FreeBSD and OpenBSD but bug 1481693 appears to have factored NodeJS dependency out into its own package set built by Mozilla. Artifacts are not supported on Tier3 platforms and aren't desired due to low trust in pre-built binaries compared to system packages. Not to mention, Mozilla isn't even upstream for NodeJS to trust its binaries. $ ./mach bootstrap [...] Your version of Mercurial (4.7.1) is sufficiently modern. Your version of Python (2.7.15) is new enough. Your version of Rust (1.29.1) is new enough. Error running mach: ['bootstrap'] The error occurred in code that was called by the mach command. This is either a bug in the called code itself or in the way that mach is calling it. You should consider filing a bug for this issue. If filing a bug, please include the full output of mach, including this error message. The details of the failure are as follows: NotImplementedError: mozboot.base does not yet implement ensure_node_packages() File "python/mozboot/mozboot/mach_commands.py", line 38, in bootstrap bootstrapper.bootstrap() File "python/mozboot/mozboot/bootstrap.py", line 440, in bootstrap checkout_root) File "python/mozboot/mozboot/bootstrap.py", line 337, in maybe_install_private_packages_or_exit self.instance.ensure_node_packages(state_dir, checkout_root) File "python/mozboot/mozboot/base.py", line 269, in ensure_node_packages % __name__)
I'm not even sure why ./mach bootstrap tries to download toolchain artifacts when user explicitly opted out from Artifact Mode i.e., $ ./mach bootstrap Please choose the version of Firefox you want to build: 1. Firefox for Desktop Artifact Mode 2. Firefox for Desktop 3. Firefox for Android Artifact Mode 4. Firefox for Android Your choice: 2
We should probably just print a warning here that node needs to be manually installed for systems that don't have bootstrap support. (In reply to Jan Beich from comment #1) > I'm not even sure why ./mach bootstrap tries to download toolchain artifacts > when user explicitly opted out from Artifact Mode i.e., node is used for front-end Firefox development, so it'll be required to build even in artifact mode.
(Not on Phabricator due to MFA shenanigans i.e., BMO MFA is incompatible with GitHub login).
Assignee: nobody → jbeich
Attachment #9014740 - Flags: review?(core-build-config-reviews)
Attachment #9014740 - Flags: feedback?(landry)
Attachment #9014741 - Flags: review?(core-build-config-reviews)
Attachment #9014741 - Flags: feedback?(landry)
(In reply to Ted Mielczarek [:ted] [:ted.mielczarek] from comment #2) > We should probably just print a warning here that node needs to be manually > installed for systems that don't have bootstrap support. I don't follow. ./mach bootstrap is/was supported on OpenBSD, FreeBSD and (maybe) DragonFly.
Attachment #9014740 - Flags: review?(core-build-config-reviews) → review+
Attachment #9014741 - Flags: review?(core-build-config-reviews) → review+
Thanks for the quick bug-filing and patches! (In reply to Jan Beich from comment #0) > > Mozilla isn't even upstream for NodeJS to trust its binaries. Can you elaborate on what you mean by this, exactly?
Flags: needinfo?(jbeich)
(In reply to Jan Beich from comment #5) > I don't follow. ./mach bootstrap is/was supported on OpenBSD, FreeBSD and > (maybe) DragonFly. Sorry, I meant "for systems that don't currently have support for installing node in bootstrap". Printing a warning that you'll need to manually install it seems nicer than erroring.
Keywords: checkin-needed
Tried to land this but received: applying bug1496708.node.diff patching file python/mozboot/mozboot/freebsd.py Hunk #2 succeeded at 70 with fuzz 2 (offset 0 lines). patching file python/mozboot/mozboot/openbsd.py Hunk #2 FAILED at 48 1 out of 2 hunks FAILED -- saving rejects to file python/mozboot/mozboot/openbsd.py.rej patch failed, unable to continue (try -v) patch failed, rejects left in working directory errors during apply, please fix and qrefresh bug1496708.node.diff
(In reply to Noemi Erli[:noemi_erli] from comment #9) I can't reproduce. $ hg clone https://hg.mozilla.org/mozilla-unified $ cd mozilla-unified; hg up -r inbound $ hg tip changeset: 491620:63a27bd95ecf bookmark: inbound tag: tip parent: 491616:82b600b76a38 user: aceman <acelists@atlas.sk> date: Fri Oct 05 14:56:00 2018 +0300 summary: Bug 1496524 - add CSP to docshell/resorces/content/netError.xhtml. r=ckerschb $ hg import 'https://bugzilla.mozilla.org/attachment.cgi?id=9014740' applying https://bugzilla.mozilla.org/attachment.cgi?id=9014740 $ hg import 'https://bugzilla.mozilla.org/attachment.cgi?id=9014741' applying https://bugzilla.mozilla.org/attachment.cgi?id=9014741 # another to be checked in bug touching mozboot/freebsd.py $ hg import 'https://bugzilla.mozilla.org/attachment.cgi?id=9014796' applying https://bugzilla.mozilla.org/attachment.cgi?id=9014796
(In reply to Dan Mosedale (:dmose, :dmosedale) from comment #7) > (In reply to Jan Beich from comment #0) > > Mozilla isn't even upstream for NodeJS to trust its binaries. > Can you elaborate on what you mean by this, exactly? Sorry for sarcasm. ./mach bootstrap is recommended for simple way to build from source. I don't expect it to download binaries outside of package manager (which may point to a self-hosted repo also built from source). How long the specific version NodeJS version Firefox 64 uses is going to be available as toolchain artifact, anyway?
Flags: needinfo?(jbeich)
Pushed by csabou@mozilla.com: https://hg.mozilla.org/integration/mozilla-inbound/rev/584018b0397d Install cbindgen as system package. f=gaston r=Build r=froydnj https://hg.mozilla.org/integration/mozilla-inbound/rev/7b660cc5c5b4 Install node as system package. f=gaston r=Build r=froydnj
Keywords: checkin-needed
Comment on attachment 9014740 [details] [diff] [review] [part 1] use system cbindgen [Beta/Release Uplift Approval Request] Feature/Bug causing the regression: Bug 1481693 User impact if declined: Broken ./mach bootstrap on FreeBSD and OpenBSD. Bootstrap is recommended as part of the simple way to build from source. https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Simple_Firefox_build/Linux_and_MacOS_build_preparation Is this code covered by automated tests?: Unknown Has the fix been verified in Nightly?: Yes Needs manual test from QE?: No If yes, steps to reproduce: List of other uplifts needed: None Risk to taking this patch: Low Why is the change risky/not risky? (and alternatives if risky): ./mach bootstrap isn't used by the automation. If I'm wrong then assume this can only break build in case of syntax errors (e.g., FreeBSDBootstrapper fails to import due to bogus whitespace). String changes made/needed:
Attachment #9014740 - Flags: approval-mozilla-beta?
Comment on attachment 9014741 [details] [diff] [review] [part 2] use system node See comment 13. [Beta/Release Uplift Approval Request] Feature/Bug causing the regression: None User impact if declined: Is this code covered by automated tests?: Yes Has the fix been verified in Nightly?: Yes Needs manual test from QE?: Yes If yes, steps to reproduce: List of other uplifts needed: None Risk to taking this patch: Low Why is the change risky/not risky? (and alternatives if risky): String changes made/needed:
Attachment #9014741 - Flags: approval-mozilla-beta?
The approval request form filled the answers in comment 14 when nothing was selected/entered. Unfortunately, I wasn't offered a choice to edit or cancel.
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla64
Comment on attachment 9014740 [details] [diff] [review] [part 1] use system cbindgen Sorry, this is too late in the Beta cycle (we build the last 63 beta on Thursday before entering RC) to uplift unplanned tier-3 patches as we need to minimize any potential regression for the final release.
Attachment #9014740 - Flags: approval-mozilla-beta? → approval-mozilla-beta-
Attachment #9014741 - Flags: approval-mozilla-beta? → approval-mozilla-beta-
(In reply to Jan Beich from comment #11) > > How long the specific version NodeJS version Firefox 64 uses is going to be > available as toolchain artifact, anyway? The toolchain artifact is generated dynamically (if it's not already cached) by the CI system, by downloading the official binary from NodeJS.org, which has its archives available indefinitely (see http://nodejs.org/dist/). As far as I know, this means that even if, at some point in the future, none of the CI builds are generating it by default, pushing a Firefox 64 build to try should cause it to be re-cached. Needinfo to gps to verify that my understanding is correct.
Flags: needinfo?(gps)
Comment on attachment 9014740 [details] [diff] [review] [part 1] use system cbindgen Per IRC discussion, these patches are NPOTB and don't need approval for uplift. Sorry for the confusion :(
Attachment #9014740 - Flags: approval-mozilla-beta-
Attachment #9014741 - Flags: approval-mozilla-beta-
Comment on attachment 9014741 [details] [diff] [review] [part 2] use system node probably works for me :)
Attachment #9014741 - Flags: feedback?(landry) → feedback+
Attachment #9014740 - Flags: feedback?(landry) → feedback+
"fetch" task artifacts expire in like 1000 years or something ridiculous. The current expiration for toolchain artifacts is the same as most other artifacts: 1 year. e.g. https://tools.taskcluster.net/groups/b9fwUkb9TS-EI9YdwLw6_w/tasks/bGAq2m5BR_6gNX1DDhdVDw/details. The theory is tasks are deterministic over time. So if an artifact disappears, it can be reconstructed whenever. Obviously dependencies on 3rd party services undermine this by introducing unreliability. Hence the reason for "fetch" tasks and their non-expiration.
Flags: needinfo?(gps)
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: