WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
REOPENED
166810
Avoid triggering rebuilds for minor changes of CSSProperties.json
https://bugs.webkit.org/show_bug.cgi?id=166810
Summary
Avoid triggering rebuilds for minor changes of CSSProperties.json
Simon Fraser (smfr)
Reported
2017-01-07 12:50:18 PST
Avoid triggering rebulids for minor changes of CSSProperties.json
Attachments
Patch
(4.62 KB, patch)
2017-01-07 12:51 PST
,
Simon Fraser (smfr)
no flags
Details
Formatted Diff
Diff
Non-working patch
(8.10 KB, patch)
2017-01-16 11:02 PST
,
Simon Fraser (smfr)
no flags
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
Simon Fraser (smfr)
Comment 1
2017-01-07 12:51:51 PST
Created
attachment 298281
[details]
Patch
Daniel Bates
Comment 2
2017-01-07 13:06:41 PST
Comment on
attachment 298281
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=298281&action=review
r=me
> Source/WebCore/css/makeprop.pl:184 > + if (compare($tempFile, $file) != 0) {
I take it you feel the "!= 0" improves the readability of this code.
WebKit Commit Bot
Comment 3
2017-01-07 15:40:32 PST
Comment on
attachment 298281
[details]
Patch Clearing flags on attachment: 298281 Committed
r210493
: <
http://trac.webkit.org/changeset/210493
>
WebKit Commit Bot
Comment 4
2017-01-07 15:40:36 PST
All reviewed patches have been landed. Closing bug.
Darin Adler
Comment 5
2017-01-07 17:09:18 PST
Comment on
attachment 298281
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=298281&action=review
Here’s a problem that will slow down builds that I think we have after this patch: Lets say we edit CSSProperties.json so that it is newer than CSSPropertyNames.h, but our edit does not affect the contents of CSSPropertyNames.h. We build and the new version of this script will correctly leave CSSPropertyNames.h unmodified. Now we build again without editing CSSProperties.json. Unfortunately, the make file sees that CSSPropertyNames.h is older than CSSProperties.json so it runs makeprop.pl again. That means we are now going to run makeprop.pl every time we build WebKit, once this happens. I don’t know how to make correct rules in a makefile for case like this; but I am pretty sure the problem is real. I would love to find a good solution for the problem that we can use in this case and that we can use in other similar cases.
> Source/WebCore/css/makeprop.pl:185 > + copy($tempFile, $file) or die "Failed to copy $tempFile to $file: $!";
This should be a move, rather than a copy followed by an unlink.
> Source/WebCore/css/makeprop.pl:192 > +open GPERF, ">$gperfTempFile" || die "Could not open $gperfTempFile for writing";
These problems both existed before this patch: It’s cleaner to write: open GPERF, ">", $gperfTempFile or die ... Including the ">" in the filename was needed in old versions of perl, but in new ones we don’t need to do that. I also suspect that "|| die" is wrong and this needs to use "or die" because of operator precedence. I’m pretty sure that the "||" will be part of evaluating the argument to open, not something evaluated based on the return value of open. This same thing applies to code below.
> Source/WebCore/css/makeprop.pl:351 > +my $properyNamesHeaderTempFile = "CSSPropertyNames.h.tmp";
There’s a typo in this variable name and all the uses of it, "propery" without the "t".
Simon Fraser (smfr)
Comment 6
2017-01-07 17:39:26 PST
(In reply to
comment #5
)
> Comment on
attachment 298281
[details]
> Patch > > View in context: >
https://bugs.webkit.org/attachment.cgi?id=298281&action=review
> > Here’s a problem that will slow down builds that I think we have after this > patch: > > Lets say we edit CSSProperties.json so that it is newer than > CSSPropertyNames.h, but our edit does not affect the contents of > CSSPropertyNames.h. We build and the new version of this script will > correctly leave CSSPropertyNames.h unmodified. Now we build again without > editing CSSProperties.json. Unfortunately, the make file sees that > CSSPropertyNames.h is older than CSSProperties.json so it runs makeprop.pl > again. > > That means we are now going to run makeprop.pl every time we build WebKit, > once this happens.
True. Maybe the fix is to keep the intermediate files around and involve them in make dependencies, or use timestamp files.
> I don’t know how to make correct rules in a makefile for case like this; but > I am pretty sure the problem is real. I would love to find a good solution > for the problem that we can use in this case and that we can use in other > similar cases. > > > Source/WebCore/css/makeprop.pl:185 > > + copy($tempFile, $file) or die "Failed to copy $tempFile to $file: $!"; > > This should be a move, rather than a copy followed by an unlink. > > > Source/WebCore/css/makeprop.pl:192 > > +open GPERF, ">$gperfTempFile" || die "Could not open $gperfTempFile for writing"; > > These problems both existed before this patch: > > It’s cleaner to write: > > open GPERF, ">", $gperfTempFile or die ... > > Including the ">" in the filename was needed in old versions of perl, but in > new ones we don’t need to do that. > > I also suspect that "|| die" is wrong and this needs to use "or die" because > of operator precedence. I’m pretty sure that the "||" will be part of > evaluating the argument to open, not something evaluated based on the return > value of open. > > This same thing applies to code below. > > > Source/WebCore/css/makeprop.pl:351 > > +my $properyNamesHeaderTempFile = "CSSPropertyNames.h.tmp"; > > There’s a typo in this variable name and all the uses of it, "propery" > without the "t".
I'll clean those up.
Simon Fraser (smfr)
Comment 7
2017-01-07 17:51:45 PST
There's a hack involving md5 checksum files described here:
https://www.cmcrossroads.com/article/rebuilding-when-files-checksum-changes
Simon Fraser (smfr)
Comment 8
2017-01-07 17:53:24 PST
Almost identical hack at
http://blog.jgc.org/2006/04/rebuilding-when-hash-has-changed-not.html
Simon Fraser (smfr)
Comment 9
2017-01-07 21:59:10 PST
A side effect of always running makeprops.pl is that CSSPropertyNames.cpp is regenerated each time. I think this step needs to be moved into the Makefile.
Darin Adler
Comment 10
2017-01-08 21:12:53 PST
I’m really concerned about leaving this patch in. It’s nice to make the single build after modifying CSSProperties.json faster, but doing it this way makes all the builds from then on slower; we should turn this behavior off or roll it out until we solve the problem.
Simon Fraser (smfr)
Comment 11
2017-01-08 22:21:24 PST
I'll roll it out.
WebKit Commit Bot
Comment 12
2017-01-09 08:27:58 PST
Re-opened since this is blocked by
bug 166842
Simon Fraser (smfr)
Comment 13
2017-01-16 11:02:22 PST
Created
attachment 298974
[details]
Non-working patch
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug