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