MarkAHershberger has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/118074

Change subject: Fix make-release script to use branches instead of tags
......................................................................

Fix make-release script to use branches instead of tags

* Also allow easy changing of root url for downloads
  (url still needs to be fixed, though)
* Fix diff production by storing cwd before changing dir and making
  sure dir is right before starting diffs.
* Put git checkout in separate function that both core and extensions
  can use.

Change-Id: I80ec9bba1db834dba1578aebcf55931a07061dc2
---
M make-release/make-release.py
1 file changed, 50 insertions(+), 38 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/tools/release 
refs/changes/74/118074/1

diff --git a/make-release/make-release.py b/make-release/make-release.py
index 9681148..e77da6d 100755
--- a/make-release/make-release.py
+++ b/make-release/make-release.py
@@ -72,7 +72,7 @@
     return list(set(extensions))
 
 
-def versionToBranch(version):
+def versionToTag(version):
     return 'tags/' + version
 
 
@@ -178,8 +178,9 @@
         self.raw = version
         self.major = decomposed.get('major', None)
         self.branch = decomposed.get('branch', None)
+        self.tag = decomposed.get('tag', None)
         self.prev_version = decomposed.get('prevVersion', None)
-        self.prev_branch = decomposed.get('prevBranch', None)
+        self.prev_tag = decomposed.get('prevTag', None)
 
         # alpha / beta / rc ..
         self.phase = decomposed.get('phase', None)
@@ -189,10 +190,11 @@
         if self.raw is None:
             return "<MwVersion Null (snapshot?)>"
 
-        return "<MwVersion %s major: %s (prev: %s), branch: %s (prev: %s)>" % (
+        return "<MwVersion %s major: %s (prev: %s), tag: %s (prev: %s), 
branch: %s>" % (
             self.raw,
             self.major, self.prev_version,
-            self.branch, self.prev_branch)
+            self.tag, self.prev_tag,
+            self.branch)
 
     def decomposeVersion(self, version):
         '''Split a version number to branch / major
@@ -201,8 +203,9 @@
             - major (ie 1.22)
             - minor
             - branch
+            - tag
             - prevVersion
-            - prevBranch
+            - prevTag
 
         When one or more letters are found after the minor version we consider
         it a software development phase (ex: alpha, beta, rc) with incremental
@@ -218,7 +221,7 @@
             return ret
 
         m = re.compile(r"""
-            (?P<major>\d+\.\d+)
+            (?P<major>(?P<major1>\d+)\.(?P<major2>\d+))
             \.
             (?P<minor>\d+)
             (?:
@@ -234,7 +237,14 @@
         ret = dict((k, v) for k, v in m.groupdict().iteritems()
                    if v is not None)
 
-        ret['branch'] = 'tags/%s.%s%s%s' % (
+        ret['branch'] = 'REL%s_%s' % (
+            ret['major1'],
+            ret['major2'],
+        )
+        del ret['major1']
+        del ret['major2']
+
+        ret['tag'] = 'tags/%s.%s%s%s' % (
             ret['major'],
             ret['minor'],
             ret.get('phase', ''),
@@ -246,11 +256,13 @@
             ret['prevVersion'] = None
             return ret
 
-        bits = [d if d is not None else '' for d in m.groups()]
+        bits = [d for d in m.groups('')]
         bits[m.lastindex - 1] = str(int(bits[m.lastindex - 1]) - 1)
+        del bits[1]
+        del bits[1]
 
         ret['prevVersion'] = '%s.%s%s%s' % tuple(bits)
-        ret['prevBranch'] = 'tags/' + ret['prevVersion']
+        ret['prevTag'] = 'tags/' + ret['prevVersion']
 
         return ret
 
@@ -346,7 +358,8 @@
                     return False
             print 'Please type "y" for yes or "n" for no'
 
-    def getGit(self, repo, dir, label):
+    def getGit(self, repo, dir, label, branch):
+        oldDir = os.getcwd()
         if os.path.exists(repo):
             print "Updating local %s" % repo
             proc = subprocess.Popen(['git', 'remote', 'update'],
@@ -367,8 +380,20 @@
             print "git clone failed, exiting"
             sys.exit(1)
 
-    def patchExport(self, patch, dir):
+        os.chdir(dir)
 
+        if branch != 'trunk':
+            print "Checking out %s..." % (branch)
+            proc = subprocess.Popen(['git', 'checkout', branch])
+
+            if proc.wait() != 0:
+                print "git checkout failed, exiting"
+                sys.exit(1)
+
+        os.chdir(oldDir)
+
+    def patchExport(self, patch, dir):
+        oldDir = os.getcwd()
         gitRoot = self.options.gitroot
 
         os.chdir(dir)
@@ -382,27 +407,16 @@
             print "git patch failed, exiting"
             sys.exit(1)
 
-        os.chdir('..')
+        os.chdir(oldDir)
         print "Done"
 
-    def export(self, tag, module, exportDir):
+    def export(self, branch, module, exportDir):
 
         gitRoot = self.options.gitroot
 
         dir = exportDir + '/' + module
-        self.getGit(gitRoot + '/core', dir, "core")
+        self.getGit(gitRoot + '/core', dir, "core",  branch)
 
-        os.chdir(dir)
-
-        if tag != 'trunk':
-            print "Checking out %s..." % (tag)
-            proc = subprocess.Popen(['git', 'checkout', tag])
-
-            if proc.wait() != 0:
-                print "git checkout failed, exiting"
-                sys.exit(1)
-
-        os.chdir('..')
         print "Done"
 
     def exportExtension(self, branch, extension, dir):
@@ -411,7 +425,7 @@
             gitroot = self.options.gitrootext
 
         self.getGit(gitroot + '/extensions/' + extension,
-                    dir + '/extensions/' + extension, extension)
+                    dir + '/extensions/' + extension, extension, branch)
         print "Done"
 
     def makePatch(self, destDir, patchFileName, dir1, dir2, type):
@@ -492,6 +506,7 @@
 
         # variables related to the version
         branch = self.version.branch
+        tag = self.version.tag
         #prevBranch = self.version.prev_branch
         prevVersion = self.version.prev_version
 
@@ -520,7 +535,7 @@
         package = 'mediawiki-' + version
 
         # Export the target
-        self.export(branch, package, buildDir)
+        self.export(tag, package, buildDir)
 
         patchRevisions = []
         for patch in patchRevisions:
@@ -549,9 +564,10 @@
         )
 
         # Patch
+        os.chdir(buildDir)
         if prevVersion is not None:
             prevDir = 'mediawiki-' + prevVersion
-            self.export(versionToBranch(prevVersion),
+            self.export(versionToTag(prevVersion),
                         prevDir, buildDir)
 
             for ext in getVersionExtensions(prevVersion, extensions):
@@ -611,30 +627,26 @@
         print
         print '*' * 70
 
+        downloadBase = 'http://releases.wikimedia.org/mediawiki/'
         print 'Download:'
-        print ('http://download.wikimedia.org/mediawiki/'
-               + dir + '/' + package + '.tar.gz')
+        print (downloadBase + dir + '/' + package + '.tar.gz')
         print
 
         if prevVersion is not None:
             if haveI18n:
                 print ("Patch to previous version (" + prevVersion
                        + "), without interface text:")
-                print ('http://download.wikimedia.org/mediawiki/'
-                       + dir + '/' + package + '.patch.gz')
+                print (downloadBase + dir + '/' + package + '.patch.gz')
                 print "Interface text changes:"
-                print ('http://download.wikimedia.org/mediawiki/'
-                       + dir + '/' + i18nPatch)
+                print (downloadBase + dir + '/' + i18nPatch)
             else:
                 print "Patch to previous version (" + prevVersion + "):"
-                print ('http://download.wikimedia.org/mediawiki/'
-                       + dir + '/' + package + '.patch.gz')
+                print (downloadBase + dir + '/' + package + '.patch.gz')
             print
 
         print 'GPG signatures:'
         for fileName in outFiles:
-            print ('http://download.wikimedia.org/mediawiki/'
-                   + dir + '/' + fileName + '.sig')
+            print (downloadBase + dir + '/' + fileName + '.sig')
         print
 
         print 'Public keys:'

-- 
To view, visit https://gerrit.wikimedia.org/r/118074
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I80ec9bba1db834dba1578aebcf55931a07061dc2
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/tools/release
Gerrit-Branch: master
Gerrit-Owner: MarkAHershberger <m...@nichework.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to