Closed Bug 1651207 Opened 4 years ago Closed 4 years ago

sccache-dist builds fail with "<inline asm>:5:13: error: Could not find incbin file '$SRC/config/external/icu/data/icudt67l.dat'"

Categories

(Firefox Build System :: General, defect)

defect

Tracking

(firefox-esr68 unaffected, firefox-esr78 unaffected, firefox78 unaffected, firefox79 unaffected, firefox80 fixed)

RESOLVED FIXED
mozilla80
Tracking Status
firefox-esr68 --- unaffected
firefox-esr78 --- unaffected
firefox78 --- unaffected
firefox79 --- unaffected
firefox80 --- fixed

People

(Reporter: dholbert, Assigned: glandium)

References

(Regression)

Details

(Keywords: regression)

Attachments

(1 file)

As of today, my sccache-dist-boosted builds fail with the following error:

 3:41.65 config/external/icu/data
 3:41.86 <inline asm>:5:13: error: Could not find incbin file '/scratch/work/builds/mozilla-central/mozilla/config/external/icu/data/icudt67l.dat'
 3:41.86     .incbin "/scratch/work/builds/mozilla-central/mozilla/config/external/icu/data/icudt67l.dat"
 3:41.86             ^
 3:41.87 1 error generated.

If I build without sccache at all (or with sccache-dist disabled via commenting out scheduler_url in my config file), the build succeeds.

Per discussion in #developers, this seems to be a regression from bug 1650299.

Workaround for any folks like me who hit this: when you hit this error, you can temporarily turn off sccache-dist by commenting out the scheduler_url line in ~/.config/sccache/config, and then kill the local sccache daemon (sccache --stop-server), and then build in the affected "config" directory (./mach build config).

This should finish building in this directory, and then you can undo what you've done (uncomment the line, kill the local sccache daemon again), and do ./mach build to pick up from where you left off.

It'd be possible to work around this by using an assembly file as source instead of C, which would essentially disable sccache for that file only. However, that doesn't help me for bug 1264836 because assembly files are not supported for the host, and bug 1264836 requires a host build of ICU. It feels to me a fix here would be to disable sccache "manually" for this file/directory, which would require a hack in a Makefile.in.

Assignee: nobody → mh+mozilla

(There might actually be a way not to need the ICU data for the host)

Set release status flags based on info from the regressing bug 1650299

Depends on: 1651305

... instead of a C file. This avoids issues with sccache (via dist or
caching), because sccache doesn't do anything with assembly files,
but with a C file, it doesn't know about the incbin-included data file.

This has the unfortunate side effect of requiring some manual work to
mark the file for safeseh on 32-bits Windows.

I confirmed that this patch (layered on top of bug 1651305's patch) fixes the bug for me locally.

Thanks for the quick action!

Pushed by mh@glandium.org: https://hg.mozilla.org/integration/autoland/rev/6675dd827c46 Build the ICU data through an assembly file. r=froydnj
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla80
Blocks: 1264836
Has Regression Range: --- → yes
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: