make build steps more independent:

- svn changelog is now updated in osc checkouts in editsvnchangelog step and not in last step obs, so it runs even if a later step fails (running just obs step did not update debian.changes, as changelog was no longer in memory)
- checkout always uses svn tag now, even if tag was created in a different run
This commit is contained in:
Ralf Becker 2013-01-28 12:33:43 +00:00
parent 2bc387c73d
commit 142a828c44

View File

@ -29,7 +29,7 @@ $config = array(
'svnbranch' => 'branches/Stylite-EPL-11.1', // 'branches/1.6' or 'tags/1.6.001' 'svnbranch' => 'branches/Stylite-EPL-11.1', // 'branches/1.6' or 'tags/1.6.001'
'svnalias' => 'epl-ssh', // default alias 'svnalias' => 'epl-ssh', // default alias
'aliasdir' => 'egroupware', // directory created by the alias 'aliasdir' => 'egroupware', // directory created by the alias
'extra' => array('stylite','jdots','$egwbase/$svnbranch/egw-pear','svn+ssh://stylite@svn.stylite.de/stylite/trunk/eventmgr'), 'extra' => array('stylite','jdots','$egwbase/$svnbranch/egw-pear','svn+ssh://stylite@svn.stylite.de/stylite/trunk/eventmgr','svn+ssh://stylite@svn.stylite.de/stylite/trunk/esyncpro'),
'types' => array('tar.bz2','tar.gz','zip'), 'types' => array('tar.bz2','tar.gz','zip'),
'svn' => '/usr/bin/svn', 'svn' => '/usr/bin/svn',
'rsync' => 'rsync --progress -e "ssh -P 9922"', 'rsync' => 'rsync --progress -e "ssh -P 9922"',
@ -47,7 +47,8 @@ $config = array(
'copychangelog' => 'root@download.stylite.de:/var/www/html/stylite-epl/stylite-epl-$version/changelog.txt', 'copychangelog' => 'root@download.stylite.de:/var/www/html/stylite-epl/stylite-epl-$version/changelog.txt',
'skip' => array(), 'skip' => array(),
'run' => array('editsvnchangelog','svntag','checkout','copy','virusscan','create','sign','obs'), 'run' => array('editsvnchangelog','svntag','checkout','copy','virusscan','create','sign','obs'),
'patchCmd' => 'cp $obs/egroupware-epl-11.1/debian.changes $egw_buildroot/egroupware/doc/rpm-build/', //'# run cmd after copy eg. "cd $egw_buildroot; patch -p1 /path/to/patch"', // no longer copy changelog from obs to tgz, as we checkout the tag containing current changelog 'cp $obs/egroupware-epl-11.1/debian.changes $egw_buildroot/egroupware/doc/rpm-build/'
'patchCmd' => '', //'# run cmd after copy eg. "cd $egw_buildroot; patch -p1 /path/to/patch"',
); );
// process config from command line // process config from command line
@ -222,6 +223,8 @@ function do_editsvnchangelog()
$cmd = $svn." commit -m 'Changelog for $config[version].$config[packaging]' ".$changelog; $cmd = $svn." commit -m 'Changelog for $config[version].$config[packaging]' ".$changelog;
run_cmd($cmd); run_cmd($cmd);
} }
// update obs changelogs (so all changlogs are updated in case of a later error and changelog step can be skiped)
do_obs(true); // true: only update debian.changes in obs checkouts
} }
/** /**
@ -330,8 +333,9 @@ function get_last_svn_tag($tags_url,$pattern,&$matches=null)
/** /**
* Copy archive files to obs checkout and commit them * Copy archive files to obs checkout and commit them
* *
* @param boolean $only_update_changelog=false true update debian.changes, but nothing else, nor commit it
*/ */
function do_obs() function do_obs($only_update_changelog=false)
{ {
global $config,$verbose; global $config,$verbose;
@ -339,7 +343,7 @@ function do_obs()
{ {
usage("Path '$config[obs]' not found!"); usage("Path '$config[obs]' not found!");
} }
if ($verbose) echo "Updating OBS checkout\n"; if ($verbose) echo $only_update_changelog ? "Updating OBS changelogs\n" : "Updating OBS checkout\n";
run_cmd('osc up '.$config['obs']); run_cmd('osc up '.$config['obs']);
$n = 0; $n = 0;
@ -361,7 +365,7 @@ function do_obs()
++$n; ++$n;
} }
// updating dsc, spec and changelog files // updating dsc, spec and changelog files
if (substr($path,-4) == '.dsc' || substr($path,-5) == '.spec' || if (!$only_update_changelog && (substr($path,-4) == '.dsc' || substr($path,-5) == '.spec') ||
!empty($config['changelog']) && basename($path) == 'debian.changes') !empty($config['changelog']) && basename($path) == 'debian.changes')
{ {
$content = $content_was = file_get_contents($path); $content = $content_was = file_get_contents($path);
@ -395,7 +399,7 @@ function do_obs()
} }
} }
} }
if ($n) if ($n && !$only_update_changelog)
{ {
echo "$n files updated in OBS checkout ($config[obs]), commiting them now...\n"; echo "$n files updated in OBS checkout ($config[obs]), commiting them now...\n";
//run_cmd('osc status '.$config['obs']); //run_cmd('osc status '.$config['obs']);
@ -600,8 +604,18 @@ function do_checkout()
chdir($config['svndir']); chdir($config['svndir']);
// do we use a just created tag --> list of taged modules // do we use a just created tag --> list of taged modules
if ($config['svntag'] && isset($config['modules'])) if ($config['svntag'])
{ {
if (!isset($config['modules']))
{
get_modules_per_repro();
}
if (strpos($config['svntag'],'$') !== false) // in case svntag command did not run, translate tag name
{
$translate = array();
foreach($config as $name => $value) $translate['$'.$name] = $value;
$config['svntag'] = strtr($config['svntag'],$translate);
}
if (file_exists($config['aliasdir'])) if (file_exists($config['aliasdir']))
{ {
system('/bin/rm -rf .svn '.$config['aliasdir']); // --> remove the whole checkout, as we dont implement switching tags system('/bin/rm -rf .svn '.$config['aliasdir']); // --> remove the whole checkout, as we dont implement switching tags