#! /usr/bin/python # # update-maintainer - this script is used to update the Maintainer field of an # Ubuntu package, as approved by the Ubuntu Technical # Board at: # # https://lists.ubuntu.com/archives/ubuntu-devel/2009-May/028213.html # # Copyright (C) 2009 Jonathan Davies # # Original shell script was: # # Copyright 2007 (C) Albin Tonnerre (Lutin) # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # import os import re import sys import ubuntutools.packages valid_locations = ["debian/control", "control"] control_file_found = False # Check changelog file exists. for location in valid_locations: if os.path.exists(location): control_file_found = True control_file = location break # Stop looking. # Check if we've found a control file. if not control_file_found: sys.stderr.write("Unable to find debian/control file.\n") sys.exit(1) # Read found file contents. debian_control_file = open(control_file, "r") file_contents = debian_control_file.read() debian_control_file.close() # Check if there is a Maintainer field in file found. if not 'Maintainer' in file_contents: sys.stderr.write("Unable to find Maintainer field in %s.\n" % control_file) sys.exit(1) package_field = re.findall('(Source:) (.*)', file_contents) package_name = package_field[0][1] # Get maintainer field information. maintainer_field = re.findall('(Maintainer:) (.*) (<.*>)', file_contents) # Split out maintainer name and email address. maintainer_name = maintainer_field[0][1] maintainer_mail = maintainer_field[0][2] if maintainer_mail.find("@ubuntu.com") != -1: print "Maintainer email is set to an @ubuntu.com address - doing nothing." sys.exit(0) # Check if Maintainer field is as approved in TB decision. if 'Ubuntu Developers' in maintainer_name and \ '' in maintainer_mail: print "Ubuntu Developers is already set as maintainer." sys.exit(0) if not ubuntutools.packages.checkIsInDebian(package_name, 'unstable'): user_email_address = os.getenv('DEBEMAIL') if not user_email_address: sys.stderr.write('The environment variable DEBEMAIL needs to be ' +\ 'set to make proper use of this script.\n') sys.exit(1) target_maintainer = user_email_address else: target_maintainer = "Ubuntu Developers " # Set original maintainer field in a string. original_maintainer = maintainer_name + " " + maintainer_mail final_addition = target_maintainer + "\nXSBC-Original-Maintainer: " + original_maintainer print "The original maintainer for this package is: " + original_maintainer print "Resetting as: " + target_maintainer # Replace text. debian_control_file = open(control_file, "w") debian_control_file.write(re.sub(original_maintainer, final_addition, file_contents)) debian_control_file.close()