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...
touch -r Documentation/standards.perl $@+
mv $@+ $@
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:
$(PERL) -I lib -w Documentation/mknews.perl $@ $(RELEASES)
# check for internal API changes:
my $addr = 'meta@public-inbox.org';
my $latest = shift(@releases) or die 'no releases?';
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') {
my $tmp = "$dst+";
my $out;
if ($dst eq 'NEWS') {
exit 0;
sub release2mime {
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): $!";
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;
my @EXE_FILES = grep(m!^script/!, @manifest);
my $v = {};
my $t = {};
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';
$v->{txt} = [ qw(INSTALL README COPYING TODO HACKING) ];
my @dtxt = grep(m!\ADocumentation/.*\.txt\z!, @manifest);
push @dtxt, 'Documentation/standards.txt';
my $varname = $_;
join('', map { "$varname += $_\n" } sort @{$v->{$varname}});
} grep(!/^-/, sort keys %$v));
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
# Don't waste user's disk space by installing some pods from
# imported code or internal use only