aboutsummaryrefslogtreecommitdiffhomepage
path: root/gbp
diff options
context:
space:
mode:
Diffstat (limited to 'gbp')
-rw-r--r--gbp/config.py1
-rwxr-xr-xgbp/scripts/buildpackage.py13
-rw-r--r--gbp/scripts/buildpackage_rpm.py13
3 files changed, 25 insertions, 2 deletions
diff --git a/gbp/config.py b/gbp/config.py
index 76a850de..50411802 100644
--- a/gbp/config.py
+++ b/gbp/config.py
@@ -163,6 +163,7 @@ class GbpOptionParser(OptionParser):
'posttag': '',
'pq-from': 'DEBIAN',
'prebuild': '',
+ 'preexport': '',
'pristine-tar': 'False',
'pristine-tar-commit': 'False',
'purge': 'True',
diff --git a/gbp/scripts/buildpackage.py b/gbp/scripts/buildpackage.py
index d345b468..d3a3222e 100755
--- a/gbp/scripts/buildpackage.py
+++ b/gbp/scripts/buildpackage.py
@@ -277,7 +277,7 @@ def mangle_export_wc_opts(options):
def disable_hooks(options):
"""Disable all hooks (except for builder)"""
- for hook in ['cleaner', 'postexport', 'prebuild', 'postbuild', 'posttag']:
+ for hook in ['cleaner', 'preexport', 'postexport', 'prebuild', 'postbuild', 'posttag']:
if getattr(options, hook):
gbp.log.info("Disabling '%s' hook" % hook)
setattr(options, hook, '')
@@ -406,6 +406,9 @@ def build_parser(name, prefix=None):
cmd_group.add_config_file_option(option_name="prebuild", dest="prebuild",
help="hook to run before a build, "
"default is '%(prebuild)s'")
+ cmd_group.add_config_file_option(option_name="preexport", dest="preexport",
+ help="hook to run before exporting the source tree, "
+ "default is '%(preexport)s'")
cmd_group.add_config_file_option(option_name="postexport", dest="postexport",
help="hook to run after exporting the source tree, "
"default is '%(postexport)s'")
@@ -505,6 +508,14 @@ def main(argv):
build_dir = export_dir if options.export_dir else repo.path
changes_file = changes_file_name(source, build_dir, options.builder, dpkg_args)
+ # Run preexport hook
+ if options.export_dir and options.preexport:
+ Hook('Preexport', options.preexport,
+ extra_env=Hook.md(hook_env,
+ {'GBP_GIT_DIR': repo.git_dir,
+ 'GBP_BUILD_DIR': build_dir})
+ )()
+
# Get/build the upstream tarball if necessary. We delay this in
# case of a postexport hook so the hook gets a chance to modify the
# sources and create different tarballs (#640382)
diff --git a/gbp/scripts/buildpackage_rpm.py b/gbp/scripts/buildpackage_rpm.py
index 16b5eb56..952ff247 100644
--- a/gbp/scripts/buildpackage_rpm.py
+++ b/gbp/scripts/buildpackage_rpm.py
@@ -296,7 +296,7 @@ def create_packaging_tag(repo, commit, name, version, options):
def disable_hooks(options):
"""Disable all hooks (except for builder)"""
- for hook in ['cleaner', 'postexport', 'prebuild', 'postbuild', 'posttag']:
+ for hook in ['cleaner', 'preexport', 'postexport', 'prebuild', 'postbuild', 'posttag']:
if getattr(options, hook):
gbp.log.info("Disabling '%s' hook" % hook)
setattr(options, hook, '')
@@ -395,6 +395,10 @@ def build_parser(name, prefix=None, git_treeish=None):
cmd_group.add_config_file_option(option_name="prebuild", dest="prebuild",
help="command to run before a build, default is "
"'%(prebuild)s'")
+ cmd_group.add_config_file_option(option_name="preexport",
+ dest="preexport",
+ help="command to run before exporting the source tree, "
+ "default is '%(preexport)s'")
cmd_group.add_config_file_option(option_name="postexport",
dest="postexport",
help="command to run after exporting the source tree, "
@@ -532,6 +536,13 @@ def main(argv):
options.export_sourcedir))
spec_dir = makedir(os.path.join(export_dir, options.export_specdir))
+ # Run preexport hook
+ if options.preexport:
+ RunAtCommand(options.preexport, shell=True,
+ extra_env={'GBP_GIT_DIR': repo.git_dir,
+ 'GBP_BUILD_DIR': export_dir}
+ )()
+
# Move packaging files to final export dir
gbp.log.debug("Exporting packaging files from '%s' to '%s'" %
(dump_dir, export_dir))