rockbox/tools/release
2007-01-22 23:09:07 +00:00

115 lines
2.1 KiB
Perl
Executable file

#!/usr/bin/env perl
$version = $ARGV[0];
if($version eq "") {
print "Enter version number!\n";
exit;
}
if(!-f "apps/version.h") {
print "run this script in the root dir\n";
exit;
}
# save the complete version string for VERSION file,
# strip everything after space / hyphen for filename
$longversion = $ARGV[0];
$version =~ s/[ -].+//;
# -L allows find to follow symbolic links
@files=`find -L . -name FILES`;
my @entries;
sub dirpart {
my ($file)=@_;
my @p=split("/", $file);
$p[$#p]=""; # blank the last one
my $dir=join("/", @p);
$dir =~ s/^\.\///; # cut off ./ beginnings
$dir =~ s/\/$//; # off / trailers
return $dir;
}
sub add {
my ($file)=@_;
my $dir=dirpart($file);
open(FILE, "<$file");
while(<FILE>) {
if($_ =~ /^ *\#/) {
next;
}
chomp;
push @entries, "$dir/$_";
}
close(FILE);
}
for(@files) {
chomp;
add($_);
}
sub mkalldir {
my ($dir) = @_;
my @parts = split("/", $dir);
#print "IN: $dir\n";
my $sub="";
for(@parts) {
#print "PART: $_\n";
$sub .= "$_";
if($_ eq "") {
next;
}
mkdir($sub, 0777);
#print "make $sub\n";
$sub .= "/";
}
}
#mkalldir("rockbox-1.0/firmware/malloc");
#exit;
for(@entries) {
my $dir = dirpart("rockbox-$version/$_");
#print "Create $dir\n";
mkalldir($dir);
#print "Copy $_ to $dir\n";
`cp -p $_ $dir 2>/dev/null`;
}
if(!open(VERSION, "<apps/version.h")) {
print "Can't read version.h\n";
exit;
}
if(!open(THIS, ">rockbox-$version/apps/version.h")) {
print "Can't create a new version.h for this version\n";
exit;
}
while(<VERSION>) {
$_ =~ s/^\#define APPSVERSION .*/\#define APPSVERSION \"$version\"/;
print THIS $_;
}
close(VERSION);
close(THIS);
if(!open(VER, ">rockbox-$version/docs/VERSION")) {
print "Can't create new docs/VERSION file\n";
exit;
}
print VER $version;
close(VER);
`tar -cjf rockbox-$version.tar.bz2 rockbox-$version`;
`rm -rf rockbox-$version`;