[mock][PATCH] fix handling of submodules
by Adrian Freihofer
In case another branch than master is checked out from a git
repository referring to submodules the submodules need to be
checked out at the corresponding revision as well.
Signed-off-by: Adrian Freihofer <adrian.freihofer(a)gmail.com>
---
py/mockbuild/scm.py | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/py/mockbuild/scm.py b/py/mockbuild/scm.py
index c8323ef..a35165d 100644
--- a/py/mockbuild/scm.py
+++ b/py/mockbuild/scm.py
@@ -37,14 +37,16 @@ class scmWorker(object):
sys.exit(5)
self.branch = None
- self.postget = None
+ self.postget = []
if 'branch' in opts:
self.branch = opts['branch']
if self.branch:
if self.method == "cvs":
self.get = self.get.replace("SCM_BRN", "-r " + self.branch)
elif self.method == "git":
- self.postget = "git checkout " + self.branch
+ self.postget = ["git checkout " + self.branch]
+ if "--recursive" in self.get or "--recurse-submodules" in self.get:
+ self.postget.append("git submodule update --init --recursive")
elif self.method == "svn":
self.get = self.get.replace("SCM_BRN", self.branch)
else:
@@ -71,7 +73,8 @@ class scmWorker(object):
self.git_timestamps = opts['git_timestamps']
self.log.debug("SCM checkout command: %s", self.get)
- self.log.debug("SCM checkout post command: %s", self.postget)
+ for command in self.postget:
+ self.log.debug("SCM checkout post command: %s", command)
@traceLog()
def get_sources(self):
@@ -79,8 +82,8 @@ class scmWorker(object):
self.src_dir = self.wrk_dir + "/" + self.pkg
self.log.debug("SCM checkout directory: %s", self.wrk_dir)
util.do(shlex.split(self.get), shell=False, cwd=self.wrk_dir, env=os.environ)
- if self.postget:
- util.do(shlex.split(self.postget), shell=False, cwd=self.src_dir, env=os.environ)
+ for command in self.postget:
+ util.do(shlex.split(command), shell=False, cwd=self.src_dir, env=os.environ)
self.log.debug("Fetched sources from SCM")
@traceLog()
--
2.5.5
7 years, 5 months
[PATCH] mock: Bug 1327594 - Build always fails when using --nocheck
by no.such.process@gmail.com
Hello, this is patch againt master. It fixes https://bugzilla.redhat.com/show_bug.cgi?id=1327594.
Tested on Fedora 23 x86_64.
fix #1327594: enclose macro variable with quotes
diff --git a/py/mockbuild/backend.py b/py/mockbuild/backend.py
index ef3eedd..23f3dc2 100644
--- a/py/mockbuild/backend.py
+++ b/py/mockbuild/backend.py
@@ -416,7 +416,7 @@ class Commands(object):
if not check:
# this is because EL5/6 does not know --nocheck
# when EL5/6 targets are not supported, replace it with --nocheck
- check_opt += ["--define", "__spec_check_template exit 0; "]
+ check_opt += ["--define", "'__spec_check_template exit 0; '"]
mode = ['-bb']
sc = self.config.get('short_circuit')
7 years, 5 months
[PATCH] util: Escape the escape sequences in PROMPT_COMMAND, improve prompt
by Todd Zullinger
The escape sequences do not properly make it to the PROMPT_COMMAND
environment variable in the mock shell.
Additionally, printing <mock-chroot> via the PROMPT_COMMAND causes
spurious line editing issues, as noted in [RHBZ#1126235]. Use PS1 to
set the visible '<mock-chroot>' string to fix those issues.
Old output:
$ mock -r fedora-rawhide-x86_64 --chroot -- sh -i -c env |& egrep '^(PROMPT_COMMAND|PS1)'
PROMPT_COMMAND=printf "<mock-chroot>"
$ mock -r fedora-rawhide-x86_64 --shell
...
<mock-chroot>sh-4.3#
New output:
$ mock -r fedora-rawhide-x86_64 --chroot -- sh -i -c env |& egrep '^(PROMPT_COMMAND|PS1)'
PS1=<mock-chroot> \s-\v\$
PROMPT_COMMAND=printf "\033]0;<mock-chroot>\007"
$ mock -r fedora-rawhide-x86_64 --shell
...
<mock-chroot> sh-4.3#
The resulting prompt is identical (not counting the space between
'<mock-chroot>' and 'sh-4.3#' which improves readability slightly). The
terminal title is also set. As can be seen, the PROMPT_COMMAND variable
now shows the desired printf command with the escape sequences intact.
This fix is also applied to the systemd-nspawn chroot.
---
Hi,
This is against master. This seemed like a patch which fixes a minor
issue and would thus be suitable for an eventual maintenance release.
I can rebase it against devel if that's preferred though.
I've been setting config_opts['environment']['PROMPT_COMMAND'] and
config_opts['environment']['PS1'] in ~/.mock/user/cfg for a while now,
after cursing the way the default PROMPT_COMMAND causes various line
editing issues. After looking deeper and following the previous
commits handling PROMPT_COMMAND, I can see it's bitten others. :)
I set PS1 to the bash default (\s-\v\$) to keep behavior changes to a
minimum. It might be worth a follow-up patch to set PS1 to something
nicer. In my user.cfg, I add the value of config_opts['root'] to both
PROMPT_COMMAND and PS1 so I can easily see what chroot I am using. I
didn't test whether that would work as a default value in util.py.
Thanks,
Todd
etc/mock/site-defaults.cfg | 3 ++-
py/mockbuild/util.py | 10 +++++++---
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/etc/mock/site-defaults.cfg b/etc/mock/site-defaults.cfg
index 5e1c9fa..454abb1 100644
--- a/etc/mock/site-defaults.cfg
+++ b/etc/mock/site-defaults.cfg
@@ -202,7 +202,8 @@
# config_opts['environment']['HOME'] = '/builddir'
# config_opts['environment']['HOSTNAME'] = 'mock'
# config_opts['environment']['PATH'] = '/usr/bin:/bin:/usr/sbin:/sbin'
-# config_opts['environment']['PROMPT_COMMAND'] = 'printf "\033]0;<mock-chroot>\007<mock-chroot>"'
+# config_opts['environment']['PROMPT_COMMAND'] = 'printf "\\033]0;<mock-chroot>\\007"'
+# config_opts['environment']['PS1'] = '<mock-chroot> \\s-\\v\\$ '
# config_opts['environment']['LANG'] = os.environ.setdefault('LANG', 'en_US.UTF-8')
# config_opts['environment']['TZ'] = os.environ.setdefault('TZ', 'EST5EDT')
diff --git a/py/mockbuild/util.py b/py/mockbuild/util.py
index 26fa557..d8aa55a 100644
--- a/py/mockbuild/util.py
+++ b/py/mockbuild/util.py
@@ -604,7 +604,8 @@ def _prepare_nspawn_command(chrootPath, user, cmd, private_network=False, env=No
nspawn_argv.append('--private-network')
if env:
# BZ 1312384 workaround
- env['PROMPT_COMMAND'] = 'printf "<mock-chroot>"'
+ env['PROMPT_COMMAND'] = 'printf "\\033]0;<mock-chroot>\\007"'
+ env['PS1'] = '<mock-chroot> \\s-\\v\\$ '
for k, v in env.items():
nspawn_argv.append('--setenv={0}={1}'.format(k, v))
cmd = nspawn_argv + cmd
@@ -621,7 +622,9 @@ def doshell(chrootPath=None, environ=None, uid=None, gid=None, user=None, cmd=No
if environ is None:
environ = clean_env()
if 'PROMPT_COMMAND' not in environ:
- environ['PROMPT_COMMAND'] = 'printf "\033]0;<mock-chroot>\007<mock-chroot>"'
+ environ['PROMPT_COMMAND'] = 'printf "\\033]0;<mock-chroot>\\007"'
+ if 'PS1' not in environ:
+ environ['PS1'] = '<mock-chroot> \\s-\\v\\$ '
if 'SHELL' not in environ:
environ['SHELL'] = '/bin/sh'
log.debug("doshell environment: %s", environ)
@@ -793,7 +796,8 @@ def setup_default_config_opts(unprivUid, version, pkgpythondir):
'HOME': '/builddir',
'HOSTNAME': 'mock',
'PATH': '/usr/bin:/bin:/usr/sbin:/sbin',
- 'PROMPT_COMMAND': 'printf "\033]0;<mock-chroot>\007<mock-chroot>"',
+ 'PROMPT_COMMAND': 'printf "\\033]0;<mock-chroot>\\007"',
+ 'PS1': '<mock-chroot> \\s-\\v\\$ ',
'LANG': os.environ.setdefault('LANG', 'en_US.UTF-8'),
}
--
2.8.1
7 years, 5 months
[PATCH] Use root name instead config name for backups dir.
by Sérgio Basto
(#1238875)
Backup dir currently use config name , and we may have various config names for
the same root name , so it is better use root name which is always the same.
Signed-off-by: Sérgio M. Basto <sergio(a)serjux.com>
---
py/mockbuild/backend.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/py/mockbuild/backend.py b/py/mockbuild/backend.py
index ef3eedd..c83edc5 100644
--- a/py/mockbuild/backend.py
+++ b/py/mockbuild/backend.py
@@ -57,7 +57,7 @@ class Commands(object):
srcdir = os.path.join(self.buildroot.basedir, "result")
if not os.path.exists(srcdir):
return
- dstdir = os.path.join(self.backup_base_dir, self.config_name)
+ dstdir = os.path.join(self.backup_base_dir, self.config['root'])
util.mkdirIfAbsent(dstdir)
rpms = glob.glob(os.path.join(srcdir, "*rpm"))
if len(rpms) == 0:
--
2.5.5
7 years, 5 months