about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@yhbt.net>2020-01-24 22:09:29 +0000
committerEric Wong <e@yhbt.net>2020-01-25 09:00:48 +0000
commit4d19d3a79188591a25d325128d2ed0a153766577 (patch)
tree628549bc3aaa50e7eb42141690ee2e45b137a6c1
parent0cf1c8b305e15d9ca9869c624a71c96b96a7a5cc (diff)
downloadpublic-inbox-4d19d3a79188591a25d325128d2ed0a153766577.tar.gz
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...
-rw-r--r--Documentation/include.mk7
-rwxr-xr-xDocumentation/mknews.perl16
-rw-r--r--Makefile.PL3
3 files changed, 16 insertions, 10 deletions
diff --git a/Documentation/include.mk b/Documentation/include.mk
index 0229bf40..3d88fcec 100644
--- a/Documentation/include.mk
+++ b/Documentation/include.mk
@@ -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:
diff --git a/Documentation/mknews.perl b/Documentation/mknews.perl
index 3efabdb5..71b1a996 100755
--- a/Documentation/mknews.perl
+++ b/Documentation/mknews.perl
@@ -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 {
diff --git a/Makefile.PL b/Makefile.PL
index 94ec16c6..2b3c7fd0 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -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