Files
rpmbuild/make_tag.py
T
2025-02-25 10:40:56 -05:00

135 lines
3.8 KiB
Python
Executable File

#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# $Id: make_tag.py 1221 2016-05-26 11:00:07Z ehrlicher $
# $HeadURL: svn://192.168.133.21/admin/rpmbuild/make_tag.py $
# $Author: ehrlicher $
# Created by Christian Ehrlicher, SLSE, 20013-02-19
#
import datetime
import getopt
import os
import subprocess
import sys
# helper functions
def verbose():
verb = os.getenv( "EMERGE_VERBOSE" )
if ( not verb == None and verb.isdigit() and int(verb) > 0 ):
return int( verb )
else:
return 0
def debug( message ):
if verbose() > 0:
print "emerge debug:", message
return True
def die( message ):
print >> sys.stderr, "emerge fatal error: %s" % message
sys.exit( 1 )
def system( cmdstring, file = None ):
debug( "Executing '%s'" % cmdstring )
out = subprocess.PIPE
if file != None:
out = file
p = subprocess.Popen( cmdstring, shell=True, stdout=out, stderr=sys.stderr )
ret = p.wait()
if ( ret != 0 ):
die( "Error executing %s (%s)" % (cmdstring, ret) )
ret = ""
if file == None:
ret = p.stdout.read().strip()
return ret
def getSvn_Release( svn_dir ):
try:
old_lang = os.environ['LANG']
except:
old_lang = None
os.putenv("LANG", "en_US")
cmd = "svn info %s | grep \"Last Changed Rev\"" % svn_dir
rel = system( cmd ).split(':')[1].strip()
if old_lang:
os.putenv("LANG", old_lang)
return rel
def usage():
print >> sys.stdout, "Usage: %s [-r repository] [-s source] -p <project_name> -v <version>" % sys.argv[0]
print >> sys.stdout, " e.g.: %s -r TDS -s ctc -p tes_uae_ctc -v 4.3" % sys.argv[0]
print >> sys.stdout, " e.g.: %s -r AVS -s trunk -p tes_uae_ctc -v 4.3" % sys.argv[0]
def main():
svn_server = "slssvn"
try:
ip = socket.gethostbyname(socket.gethostname())
if ip.startswith('172.'):
svn_server = "ECCORAS01"
except:
print >> sys.stdout, "Using %s as svn server" % svn_server
try:
opts, args = getopt.getopt(sys.argv[1:], "p:r:s:v:",
["project_name=", "source=", "repository=", "version=",])
except getopt.GetoptError, err:
print >> sys.stderr, err
usage()
sys.exit(2)
version = None
project_name = None
svn_repo = "TDS"
svn_src = None
for o, a in opts:
if o in ("-p", "--project_name"):
project_name = a
if o in ("-r", "--repository"):
svn_repo = a
if o in ("-s", "--source"):
svn_src = a
if o in ("-v", "--version"):
version = a.split('.')
try:
version_maj = version[0]
version_min = version[1]
version = "%s.%s" % ( version_maj, version_min )
except:
die( "Invalid version format (maj.min): %s" % a )
if not version or not project_name:
usage()
die("Version or project name not defined")
if not svn_src:
svn_src = project_name[project_name.rfind('_') + 1:]
project = project_name[:project_name.rfind('_'):]
subproject_src = svn_src
subproject_dst = project_name[project_name.rfind('_') + 1:]
svn_branch = "svn://%s/%s/branches/%s/stable/%s" % ( svn_server, svn_repo, project, subproject_src )
full_version = "%s-%s" % ( version, getSvn_Release( svn_branch ) )
svn_tag = "svn://%s/%s/tags/%s/%s/%s_%s-%s" % ( svn_server, svn_repo, project, subproject_dst, project, subproject_dst, full_version )
print "Project: %s" % project
print "SubProject SRC: %s" % subproject_src
print "SubProject DST: %s" % subproject_dst
print "SVN Path: %s" % svn_branch
print "SVN Tag: %s" % svn_tag
filename = "svn-commit-msg-branch-%s" % project_name
f = open( filename, 'w' )
f.write( "Tagged TES UAE %s rev %s on %s\n" % ( project_name.upper(), full_version, datetime.date.today().isoformat() ) )
f.close()
system("svn cp %s %s -F %s" % ( svn_branch, svn_tag, filename ) )
os.remove( filename )
if __name__ == "__main__":
main()