Closed
Bug 1382739
Opened 7 years ago
Closed 7 years ago
Add hardlink support to mozbuild
Categories
(Firefox Build System :: General, enhancement)
Firefox Build System
General
Tracking
(firefox56 fixed)
RESOLVED
FIXED
mozilla56
Tracking | Status | |
---|---|---|
firefox56 | --- | fixed |
People
(Reporter: Alex_Gaynor, Assigned: Alex_Gaynor)
References
(Blocks 1 open bug)
Details
Attachments
(1 file)
Right now mozbuild knows how to copy, and how to symlink. We should teach it to hardlink as well, for usage in 1380416.
Comment hidden (mozreview-request) |
Comment 2•7 years ago
|
||
mozreview-review |
Comment on attachment 8888433 [details]
Bug 1382739 - Added support for hardlinks to mozbuild;
https://reviewboard.mozilla.org/r/159380/#review165356
This is essentially an r+. Just need some minor test fixups.
::: python/mozbuild/mozpack/files.py:442
(Diff revision 1)
> + else:
> + return True
Nit: you can move this into the try: block.
::: python/mozbuild/mozpack/test/test_files.py:422
(Diff revision 1)
> + if not self.hardlink_supported:
> + return
IIRC the better way to do this is: `raise unittest.SkipTest('hardlink not supported')`
::: python/mozbuild/mozpack/test/test_files.py:453
(Diff revision 1)
> + s = HardlinkFile(source)
> + self.assertFalse(s.copy(dest))
> +
> + source_stat = os.stat(source)
> + dest_stat = os.stat(dest)
> + self.assertEqual(source_stat.st_dev, dest_stat.st_dev)
> + self.assertEqual(source_stat.st_ino, dest_stat.st_ino)
It feels like this test should lstat() the previous link and make sure it isn't updated as part of calling `s.copy()`. I'm not sure what attributes are available on hard links though. Maybe you could os.utime() the link to a very old time?
Attachment #8888433 -
Flags: review?(gps) → review-
Comment hidden (mozreview-request) |
Assignee | ||
Comment 4•7 years ago
|
||
mozreview-review-reply |
Comment on attachment 8888433 [details]
Bug 1382739 - Added support for hardlinks to mozbuild;
https://reviewboard.mozilla.org/r/159380/#review165356
> It feels like this test should lstat() the previous link and make sure it isn't updated as part of calling `s.copy()`. I'm not sure what attributes are available on hard links though. Maybe you could os.utime() the link to a very old time?
Not sure I understand this -- do hardlinks keep separate metadata from their target? I switched the test to use `lstat` so that if ther was a symlink somehow the test would fail.
Comment 5•7 years ago
|
||
mozreview-review-reply |
Comment on attachment 8888433 [details]
Bug 1382739 - Added support for hardlinks to mozbuild;
https://reviewboard.mozilla.org/r/159380/#review165356
> Not sure I understand this -- do hardlinks keep separate metadata from their target? I switched the test to use `lstat` so that if ther was a symlink somehow the test would fail.
It appears that they do not. So the best we can do is compare st_nlink and st_ino for the proper semantics.
Assignee | ||
Comment 6•7 years ago
|
||
mozreview-review-reply |
Comment on attachment 8888433 [details]
Bug 1382739 - Added support for hardlinks to mozbuild;
https://reviewboard.mozilla.org/r/159380/#review165356
> It appears that they do not. So the best we can do is compare st_nlink and st_ino for the proper semantics.
Just so I follow, you'd like a `self.assertEqual(source_stat.st_nlink, dest_stat.st_link)` as well?
Comment 7•7 years ago
|
||
mozreview-review |
Comment on attachment 8888433 [details]
Bug 1382739 - Added support for hardlinks to mozbuild;
https://reviewboard.mozilla.org/r/159380/#review165794
I guess you can change those lstat() back to stat() if you want. Sorry for misleading you. I always thought lstat() on a hard link yielded something more useful.
Attachment #8888433 -
Flags: review?(gps) → review+
Assignee | ||
Comment 8•7 years ago
|
||
mozreview-review-reply |
Comment on attachment 8888433 [details]
Bug 1382739 - Added support for hardlinks to mozbuild;
https://reviewboard.mozilla.org/r/159380/#review165794
`lstat` still makes more sense I think, so I'll leave it.
Assignee | ||
Updated•7 years ago
|
Keywords: checkin-needed
Pushed by ryanvm@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/9efa1cfe64b1
Added support for hardlinks to mozbuild; r=gps
Keywords: checkin-needed
Comment 10•7 years ago
|
||
bugherder |
Status: NEW → RESOLVED
Closed: 7 years ago
status-firefox56:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla56
Updated•7 years ago
|
Product: Core → Firefox Build System
You need to log in
before you can comment on or make changes to this bug.
Description
•