]> Sergey Matveev's repositories - public-inbox.git/commitdiff
doc: avoid needless rebuilds of NEWS
authorEric Wong <e@yhbt.net>
Fri, 24 Jan 2020 22:09:29 +0000 (22:09 +0000)
committerEric Wong <e@yhbt.net>
Sat, 25 Jan 2020 09:00:48 +0000 (09:00 +0000)
Repeatedly rebuilding `NEWS' because the mtime of `NEWS'
is synched to the latest release .eml is a bit annoying,
but necessary to save bandwidth for the website.

So we'll also update the mtime of the source .eml file when
reading them.  It's kinda gross to be setting mtimes of source
.eml files in Documentation/RelNotes/, but I can't think of
anything better at the moment...

Documentation/include.mk
Documentation/mknews.perl
Makefile.PL

index 0229bf40030b25ac246a798ebcd1af500cd1503b..3d88fcec29bd85e0eb8cb9ef663e2edff9aa7db2 100644 (file)
@@ -62,12 +62,7 @@ Documentation/standards.txt : Documentation/standards.perl
        touch -r Documentation/standards.perl $@+
        mv $@+ $@
 
-RELEASES =
-RELEASES += v1.2.0
-RELEASES += v1.1.0-pre1
-RELEASES += v1.0.0
-
-NEWS NEWS.atom NEWS.html : Documentation/include.mk
+NEWS NEWS.atom NEWS.html : $(news_deps)
        $(PERL) -I lib -w Documentation/mknews.perl $@ $(RELEASES)
 
 # check for internal API changes:
index 3efabdb592426799a23777a2eb3fe64f0c6699dd..71b1a996c254b9439fd6644805ea85d048e6f8a5 100755 (executable)
@@ -21,8 +21,8 @@ my $atom_url = 'https://public-inbox.org/NEWS.atom';
 my $addr = 'meta@public-inbox.org';
 
 my $latest = shift(@releases) or die 'no releases?';
-my $mime_latest = release2mime($latest);
-my $mtime = msg_datestamp($mime_latest->header_obj);
+my $mtime;
+my $mime_latest = release2mime($latest, \$mtime);
 my $tmp = "$dst+";
 my $out;
 if ($dst eq 'NEWS') {
@@ -73,9 +73,17 @@ rename($tmp, $dst) or die;
 exit 0;
 
 sub release2mime {
-       my $f = "$dir/$_[0].eml";
+       my ($release, $mtime_ref) = @_;
+       my $f = "$dir/$release.eml";
        open(my $fh, '<', $f) or die "open($f): $!";
-       PublicInbox::MIME->new(do { local $/; <$fh> });
+       my $mime = PublicInbox::MIME->new(do { local $/; <$fh> });
+       # Documentation/include.mk relies on mtimes of each .eml file
+       # to trigger rebuild, so make sure we sync the mtime to the Date:
+       # header in the .eml
+       my $mtime = msg_datestamp($mime->header_obj);
+       utime($mtime, $mtime, $fh) or warn "futimes $f: $!";
+       $$mtime_ref = $mtime if $mtime_ref;
+       $mime;
 }
 
 sub mime2txt {
index 94ec16c65fb16bc3c0433fe85e2b738e7c655a08..2b3c7fd04c1035326a300048f9de82d78024526e 100644 (file)
@@ -8,6 +8,8 @@ chomp(my @manifest = (<$m>));
 my @EXE_FILES = grep(m!^script/!, @manifest);
 my $v = {};
 my $t = {};
+my @RELEASES = qw(v1.2.0 v1.1.0-pre1 v1.0.0); # do not sort
+$v->{news_deps} = [ map { "Documentation/RelNotes/$_.eml" } @RELEASES ];
 $v->{txt} = [ qw(INSTALL README COPYING TODO HACKING) ];
 my @dtxt = grep(m!\ADocumentation/.*\.txt\z!, @manifest);
 push @dtxt, 'Documentation/standards.txt';
@@ -91,6 +93,7 @@ my $VARS = join("\n", map {;
        my $varname = $_;
        join('', map { "$varname += $_\n" } sort @{$v->{$varname}});
 } grep(!/^-/, sort keys %$v));
+$VARS .= "\nRELEASES = ".join(' ', @RELEASES)."\n";
 
 # Don't waste user's disk space by installing some pods from
 # imported code or internal use only