From: Paul Sokolovsky Date: Fri, 24 Feb 2012 01:21:00 +0000 (+0200) Subject: Patch before running prebuild commands. X-Git-Tag: 0.1~916^2 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=e1c85dfc21a481c8b29d17b9dfa347cf9558782a;p=fdroidserver.git Patch before running prebuild commands. Sometimes an application provides a script to initialize its build environment, and it may be required to patch such a script before running it (typical case is hardcoding developer's local paths). More generally, "declaritive" ways of changing code (e.g., forceversion, patch, etc.) should be preferred to prebuild, which should be used as the last resort (as it is too generic and thus verbose). So, it's right ordering in that respect either. --- diff --git a/common.py b/common.py index 48be88eb..b071470a 100644 --- a/common.py +++ b/common.py @@ -829,6 +829,15 @@ def prepare_source(vcs, app, build, build_dir, extlib_dir, sdk_path, ndk_path, j if os.path.exists(badpath): shutil.rmtree(badpath) + # Apply patches if any + if 'patch' in build: + for patch in build['patch'].split(';'): + print "Applying " + patch + patch_path = os.path.join('metadata', app['id'], patch) + if subprocess.call(['patch', '-p1', + '-i', os.path.abspath(patch_path)], cwd=build_dir) != 0: + raise BuildException("Failed to apply patch %s" % patch_path) + # Run a pre-build command if one is required... if build.has_key('prebuild'): prebuild = build['prebuild'] @@ -839,15 +848,6 @@ def prepare_source(vcs, app, build, build_dir, extlib_dir, sdk_path, ndk_path, j if subprocess.call(prebuild, cwd=root_dir, shell=True) != 0: raise BuildException("Error running pre-build command") - # Apply patches if any - if 'patch' in build: - for patch in build['patch'].split(';'): - print "Applying " + patch - patch_path = os.path.join('metadata', app['id'], patch) - if subprocess.call(['patch', '-p1', - '-i', os.path.abspath(patch_path)], cwd=build_dir) != 0: - raise BuildException("Failed to apply patch %s" % patch_path) - # Special case init functions for funambol... if build.get('initfun', 'no') == "yes":