debian.mkchanges 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. #!/usr/bin/perl
  2. # Usage:
  3. # perl debian.mkchanges <version> <debian.changestemplate >thing.changes
  4. $x=time; sub z { $_[1]+$_[2]*60; }; @l=localtime($x); $od=1440;
  5. $d=&z(@l)-&z(gmtime($x)); $d+=$od; $d%=$od; $s=$d>$od/2?($d=$od-$d,'-'):'+';
  6. $date=sprintf("%s, %d %s %d %02d:%02d:%02d %s%02d%02d",
  7. (Sun,Mon,Tue,Wed,Thu,Fri,Sat)[$l[6]], $l[3],
  8. (Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec)[$l[4]], $l[5]+1900,
  9. $l[2],$l[1],$l[0], $s,$d/60,$d%60);
  10. ($version)=@ARGV;
  11. chop($arch=`dpkg --print-architecture`);
  12. open(Z,"debian.Changelog");
  13. while(<Z>) { $changes.=$_; last if m/^ --/; }
  14. close(Z); $changes =~ s/^/ /g; $changes =~ s/^/\n/; $changes =~ s/\n$//;
  15. chdir("..");
  16. while (<STDIN>) {
  17. s/=a/$arch/g;
  18. s/=v/$version/g;
  19. if (m/^ =f:(\S+) (\S+) (\S+)$/) {
  20. ($file,$sec,$pri)=($1,$2,$3);
  21. $!=0; chop($md5sum=`md5sum <$file`); $? && die "$file: $? $!";
  22. $!=0; $size=`ls -l $file`; $? && die "$file: $? $!";
  23. $size =~ m/^\S+\s+\d+\s+\S+\s+\S+\s+(\d+)\s/ || die "$file: `$size'";
  24. $size= $1;
  25. $_= " $md5sum $size $sec $pri $file\n";
  26. } else {
  27. s/=c/$changes/ || s/=d/$date/g;
  28. }
  29. print || die $!;
  30. }
  31. close(STDOUT) || die $!;