#!/bin/perl use strict; use warnings; use File::Slurp qw(read_dir); my $svn="svn"; my $get_cmd="checkout"; my $avidemux_repo="svn://svn.berlios.de/avidemux"; my $revision="HEAD"; my $avidemux_branch="$avidemux_repo/branches/avidemux_2.5_branch_gruntster"; sub run { system(@_) == 0 or die "svn @_ failed: $?"; } sub svn_get { my ($branch, $revno, @args) = @_; run ($svn, $get_cmd, $branch, "-r", $revno, @args), } foreach (@ARGV) { if (/^(\d+)$/) { $revision = $1; } elsif (/^-e$/) { $get_cmd = "export"; } else { die "Unknown argument: $_"; } } svn_get($avidemux_branch, $revision, "avidemux"); my ($avidemux_version); open CM, "<", "avidemux/CMakeLists.txt" or die; while () { $avidemux_version=$1 if /(?i:set)\(VERSION ([\d.]+)\)/; } close CM or die; defined $avidemux_version or die; my ($ffmpeg_version, $swscale_version); open CM, "<", "avidemux/cmake/admFFmpegBuild.cmake" or die; while () { $ffmpeg_version=$1 if /(?i:set)\(FFMPEG_VERSION (\d+)\)/; $swscale_version=$1 if /(?i:set)\(SWSCALE_VERSION (\d+)\)/; } close CM or die; defined $ffmpeg_version && defined $swscale_version or die; my ($ffmpeg_branch, $swscale_branch); open CM, "<", "avidemux/cmake/admFFmpegPrepareSvn.cmake" or die; while () { $ffmpeg_branch=$1 if /co (\S+) -r \$\{FFMPEG_VERSION\}/; $swscale_branch=$1 if /co (\S+) -r \$\{SWSCALE_VERSION\}/; } close CM or die; defined $ffmpeg_branch && defined $swscale_branch or die; svn_get($ffmpeg_branch, $ffmpeg_version, "--ignore-externals", "ffmpeg"); svn_get($swscale_branch, $swscale_version, "libswscale"); for (read_dir("avidemux/avidemux/ADM_libraries")) { next unless /(ffmpeg|libswscale)_r(\d+)\.tar\.gz/; unlink "avidemux/avidemux/ADM_libraries/$_" or die "Error unlinking $_"; } run("tar", "czf", "avidemux/avidemux/ADM_libraries/ffmpeg_r$ffmpeg_version.tar.gz", "--exclude=.svn", "ffmpeg"); run("tar", "czf", "avidemux/avidemux/ADM_libraries/libswscale_r$swscale_version.tar.gz", "--exclude=.svn", "libswscale"); my $p="avidemux-${avidemux_version}"; $p =~ s/\.\d+$//; $p .= "-r$revision"; rename("avidemux", $p) or die "Error renaming avidemux to $p"; run("tar", "cjf", "$p.tar.bz2", "--exclude=.svn", $p); rename($p, "avidemux") or die "Error renaming $p back to avidemux"; print "$p.tar.bz2 created.\n";