From af7de9fb863ae5ea62fbaae01aed52fee6c27462 Mon Sep 17 00:00:00 2001 From: Alan Knowles Date: Sat, 28 Aug 2010 15:15:52 +0800 Subject: [PATCH] tools/build_debs.php --- tools/build_debs.php | 126 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) diff --git a/tools/build_debs.php b/tools/build_debs.php index e69de29bb..0e3a0acf0 100644 --- a/tools/build_debs.php +++ b/tools/build_debs.php @@ -0,0 +1,126 @@ + 2.7.6.dfsg-1ubuntu1 + * DIRECTORY => libxml2-2.7.6.dfsg (split on '-') + * + * + * + * + */ + +$HOME = $_SERVER["HOME"]; +if (!file_exists($HOME.'/.debgnome')) { + mkdir( $HOME.'/.debgnome' ); +} +if (!file_exists($HOME.'/.debgnome-work')) { + mkdir( $HOME.'/.debgnome-work' ); +} +$cdir = $HOME.'/.debgnome'; +$cfg = (array) json_decode(file_get_contents("$cdir/build.cfg.js")); +$state = (array) json_decode(file_get_contents("$cdir/state.cfg.js")); +// fix json objects.. +foreach($state as $pkg => $data) { + $state[$pkg] = (array) $data; +} + +function dpkg_s($data) { + global $state; + $dpkg = empty($data['deb.name']) ? $data['pkg'] : $data['deb.name']; + $pkg = $data['pkg']; + $out = trim(`dpkg -l $dpkg`); + $last = preg_split('/\s+/',array_pop(explode("\n", $out))); + $state[$pkg]['deb.avail'] = $last[2]; + $state[$pkg]['deb.ver'] = array_shift(explode('-',$last[2])); +} + +function apt_get_source($data) +{ + global $state, $HOME; + $dpkg = empty($data['deb.name']) ? $data['pkg'] : $data['deb.name']; + $pkg = $data['pkg']; + if ($state[$pkg]['deb.cached'] == $state[$pkg]['deb.ver']) { + return; + } + + chdir('/tmp'); + + $cmd = 'apt-get source ' . $dpkg . '=' . $state[$pkg]['deb.avail']; + echo $cmd."\n"; + echo `$cmd`; + $cmd = 'cp -a /tmp/'. $dpkg . '-'. $state[$pkg]['deb.ver'].'/debian '. $HOME.'/.debgnome/'.$pkg; + echo $cmd ."\n"; + echo `$cmd`; + $state[$pkg]['deb.cached'] = $state[$pkg]['deb.ver']; + +} + +$cfg = array( + 'libxml2' => array('repo' => 'git://git.gnome.org/libxml2') +); + +foreach($cfg as $pkg => $data) +{ + // checkout or pull... + $data = (array) $data; + $data['pkg'] = $pkg; + + $src = $HOME .'/.debgnome-work/'. $pkg; + if (file_exists($src)) { + chdir($src); + echo `git pull --rebase`; + + } else { + $repo = $data['repo']; + echo `git clone $repo $src`; + + } + + dpkg_s($data); + apt_get_source($data); + + $cmd = 'rm -rf ' . $src . '/debian'; + `$cmd`; + $cmd = 'cp -a '.$HOME.'/.debgnome/'.$pkg . ' ' . $src . '/debian'; + + + echo `$cmd`; + chdir($src); + echo `./autogen.sh --prefix=/usr`; + echo `touch COPYING`; + + $cmd = 'debchange --preserve -v ' . $state[$pkg]['deb.ver']. '-' . + date('YmdH') .' --distribution UNRELEASED jhdebuild snapshot'; + echo `$cmd`; + echo `dpkg-buildpackage -rfakeroot -us -uc -D`; + + + + file_put_contents("$cdir/state.cfg.js",json_encode($state)); + +} + + +print_R($state); + + -- 2.39.2