Closed Bug 1272544 Opened 8 years ago Closed 8 years ago

git artifact builds failing: WindowsError: [Error 206] The filename or extension is too long

Categories

(Firefox Build System :: General, defect)

Unspecified
Windows
defect
Not set
normal

Tracking

(firefox49 fixed)

RESOLVED FIXED
mozilla49
Tracking Status
firefox49 --- fixed

People

(Reporter: markh, Unassigned)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

Traceback below. The problem is that _get_hg_revisions_from_git() is executing:

% git rev-list --topo-order HEAD~500..HEAD

and it then hopes to pass the output of that, via the command-line to:

% git cinnabar git2hg ...

The issue is that the rev-list command is returning 2369 full hashes, which appears to exceed a Windows command-line limit (which isn't *too* surprising - the cmdline in this case is 97128 bytes!)

The workarounds:

1) Use --abbrev-commit on the rev-list command. This reduces the command-line down to ~20k and does work, but it takes cinnabar ~30s to output the hg lists - a quick scan of cinnabar's code shows that it makes its own |git rev-list| call to turn them back into long hashes, so I'm guessing this is much slower than it would be if full hashes were passed.

2) Change the initial revlist command to something like |git rev-list --topo-order --max-count=500 HEAD|

3) Change NUM_REVISIONS_TO_QUERY from 500 to, say, 100.

All the above workarounds worked for me. I'm guessing (2) is reasonable - if it is, I'll put up a patch. If it's not, it might be necessary to change cinnabar to allow reading of the revisions from stdin and have artifacts.py pipe them in that way.

The details of the failure are as follows:
> 
> WindowsError: [Error 206] The filename or extension is too long
>   File "o:\src\moz\gecko\python/mozbuild/mozbuild/mach_commands.py", line 1549, in artifact_install
>     return artifacts.install_from(source, self.distdir)
>   File "o:\src\moz\gecko\python/mozbuild\mozbuild\artifacts.py", line 1037, in install_from
>     return self.install_from_recent(distdir)
>   File "o:\src\moz\gecko\python/mozbuild\mozbuild\artifacts.py", line 999, in install_from_recent
>     return self._install_from_hg_pushheads(hg_pushheads, distdir)
>   File "o:\src\moz\gecko\python/mozbuild\mozbuild\artifacts.py", line 977, in _install_from_hg_pushheads
>     for hg_hash in hg_pushheads:
>   File "o:\src\moz\gecko\python/mozbuild\mozbuild\artifacts.py", line 871, in _find_pushheads
>     last_revs = self._get_recent_public_revisions()
>   File "o:\src\moz\gecko\python/mozbuild\mozbuild\artifacts.py", line 857, in _get_recent_public_revisions
>     return self._get_hg_revisions_from_git()
>   File "o:\src\moz\gecko\python/mozbuild\mozbuild\artifacts.py", line 838, in _get_hg_revisions_from_git
>     ] + rev_list.splitlines())
>   File "c:\mozilla-build\python\lib\subprocess.py", line 566, in check_output
>     process = Popen(stdout=PIPE, *popenargs, **kwargs)
>   File "c:\mozilla-build\python\lib\subprocess.py", line 710, in __init__
>     errread, errwrite)
>   File "c:\mozilla-build\python\lib\subprocess.py", line 958, in _execute_child
>     startupinfo)

(line numbers might be off by a line or 2 as I added a couple of prints, but you get the idea)
Either or both of 2 and 3 sound reasonable.
Attachment #8752059 - Flags: review?(cmanchester) → review+
Comment on attachment 8752059 [details]
MozReview Request: Bug 1272544 - artifact builds with git now only consider the last 500 revisions rather than all revisions for the last 500 commits. r?chmanchester

https://reviewboard.mozilla.org/r/52403/#review49465

Thank you for the patch.
https://hg.mozilla.org/mozilla-central/rev/950d344b6e43
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla49
Product: Core → Firefox Build System
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: