Chad has uploaded a new change for review.

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

Change subject: Implement patch support for make-release
......................................................................

Implement patch support for make-release

Bug: T115493
Change-Id: Ic7c96ea482d9e13f304c576c446ccf8bd3c897fc
---
M make-release/.gitignore
M make-release/make-release.py
2 files changed, 36 insertions(+), 4 deletions(-)


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

diff --git a/make-release/.gitignore b/make-release/.gitignore
index a88eb19..da8f0f8 100644
--- a/make-release/.gitignore
+++ b/make-release/.gitignore
@@ -1,3 +1,4 @@
 *.gz
 /uploads/
 /build/
+/patches/
diff --git a/make-release/make-release.py b/make-release/make-release.py
index 8b92381..b213d8d 100755
--- a/make-release/make-release.py
+++ b/make-release/make-release.py
@@ -11,6 +11,7 @@
 """
 
 import argparse
+import glob
 import logging
 import os
 import re
@@ -319,6 +320,10 @@
                         base.remove(repo)
         return sorted(extensions + list(base))
 
+    def get_patches_for_repo(self, repo, patchDir):
+        return glob.glob(patchDir + '/' + repo + '/*-' +
+                         self.version.branch + '.patch')
+
     def print_bundled(self, extensions):
         """
         Print all bundled extensions and skins
@@ -458,25 +463,31 @@
         os.chdir(cwd)
         logging.info("Fetched external composer dependencies")
 
-    def export(self, tag, module, exportDir):
+    def export(self, tag, module, exportDir, patches=[]):
 
         gitRoot = self.options.gitroot
 
         dir = exportDir + '/' + module
+        if patches:
+            tag = self.version.branch
         self.getGit(gitRoot + '/core', dir, "core", tag)
+        for patch in patches:
+            self.applyPatch(patch, dir)
         # 1.25+ has composer dependencies.
         if self.version.major >= '1.25' or self.version.major == 'snapshot':
             self.install_composer_dependencies(dir)
 
         logging.info('Done with exporting core')
 
-    def exportExtension(self, branch, extension, dir):
+    def exportExtension(self, branch, extension, dir, patches=[]):
         gitroot = self.options.gitroot
         if self.options.gitrootext:
             gitroot = self.options.gitrootext
 
         self.getGit(gitroot + '/' + extension,
                     dir + '/' + extension, extension, branch)
+        for patch in patches:
+            self.applyPatch(patch, dir)
         logging.info('Done with exporting %s', extension)
 
     def makePatch(self, destDir, patchFileName, dir1, dir2, type):
@@ -508,6 +519,20 @@
         patchFile.close()
         logging.info('Done with making patch')
         return diffStatus == 1
+
+    def applyPatch(self, patchFile, targetDir):
+        oldDir = os.getcwd()
+        os.chdir(targetDir)
+        patchIn = open(patchFile)
+        patchProc = subprocess.Popen(['git', 'am', '--signoff'], stdin=patchIn)
+        status = patchProc.wait()
+        if status != 0:
+            logging.error("Patch failed, exiting")
+            logging.error("git: %s", status)
+            sys.exit(1)
+        patchIn.close()
+        logging.info("Finished applying patch %s", patchFile)
+        os.chdir(oldDir)
 
     def makeTarFile(self, package, targetDir, dir, argAdd=[]):
         tar = self.options.tar_command
@@ -551,6 +576,7 @@
 
         buildDir = rootDir + '/build'
         uploadDir = rootDir + '/uploads'
+        patchDir = rootDir + '/patches'
 
         if not os.path.exists(buildDir):
             logging.debug('Creating build dir: %s', buildDir)
@@ -558,6 +584,9 @@
         if not os.path.exists(uploadDir):
             logging.debug('Creating uploads dir: %s', uploadDir)
             os.mkdir(uploadDir)
+        if not os.path.exists(patchDir):
+            logging.debug('Creating patch directory: %s', patchDir)
+            os.mkdir(patchDir)
 
         os.chdir(buildDir)
 
@@ -567,11 +596,13 @@
         package = 'mediawiki-' + version.raw
 
         # Export the target
-        self.export(tag, package, buildDir)
+        patches = self.get_patches_for_repo('core', patchDir)
+        self.export(tag, package, buildDir, patches)
 
         extExclude = []
         for ext in self.get_extensions_for_version(version, extensions):
-            self.exportExtension(branch, ext, package)
+            patches = self.get_patches_for_repo(ext, patchDir)
+            self.exportExtension(branch, ext, package, patches)
             extExclude.append("--exclude")
             extExclude.append(ext)
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic7c96ea482d9e13f304c576c446ccf8bd3c897fc
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/tools/release
Gerrit-Branch: master
Gerrit-Owner: Chad <ch...@wikimedia.org>

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

Reply via email to