|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
#!/usr/bin/python
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
import os
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
import sys
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
import shutil
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
import optparse
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
def prep_dirs(base_dir):
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
for i in ["BUILD", "INSTALL", "RPMS", "SOURCES", "SPECS", "SRPMS"]:
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
new_dir = os.path.join(base_dir, i)
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
if not os.path.exists(new_dir):
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
os.makedirs(new_dir)
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
def prep_source(base_dir):
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
source_dir = os.path.join(base_dir, "_build", "SOURCES")
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
for file in os.listdir(base_dir):
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
if file == "_build":
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
continue
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
full_name = os.path.join(base_dir, file)
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
if not os.path.isfile(full_name):
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
continue
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
shutil.copy(full_name, os.path.join(source_dir, file))
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
def prepare_condor_tarball(build_dir, source_dir, branch):
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
cur_dir = os.getcwd()
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
tarball_dir = os.path.join(build_dir, "SOURCES")
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
fd = open(os.path.join(tarball_dir, "condor.tar.gz"), "w")
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
fdnum = fd.fileno()
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
try:
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
os.chdir(source_dir)
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
pid = os.fork()
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
if not pid:
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
try:
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
os.dup2(fdnum, 1)
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
os.execvp("/bin/sh", ["sh", "-c", "git archive %s | gzip -7" % branch])
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
finally:
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
os._exit(1)
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
else:
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
(pid, status) = os.waitpid(pid, 0)
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
if status:
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
raise Exception("git archive failed")
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
finally:
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
os.chdir(cur_dir)
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
def get_rpmbuild_defines(results_dir):
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
results_dir = os.path.abspath(results_dir)
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
defines = []
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
defines += ["--define=_topdir %s" % results_dir]
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
return defines
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
def parse_opts():
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
parser = optparse.OptionParser()
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
parser.add_option("-s", "--source-dir", help="Location of the Condor git repo clone.", dest="source_dir", default="~/projects/condor")
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
parser.add_option("-b", "--branch", help="Name of the git branch to use for the condor build.", dest="branch", default="master")
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
opts, args = parser.parse_args()
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
opts.source_dir = os.path.expanduser(opts.source_dir)
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
return args, opts
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
def main():
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
args, opts = parse_opts()
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
if len(args) != 2:
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
print "Usage: hcc_make_condor <action> <directory>"
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
print "Valid commands are 'build', 'prep', and 'srpm'"
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
print "<directory> should point at the fedpkg-condor-hcc clone."
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
return 1
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
build_dir = os.path.join(args[1], "_build")
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
prep_dirs(build_dir)
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
defines = get_rpmbuild_defines(build_dir)
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
prep_source(args[1])
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
prepare_condor_tarball(build_dir, opts.source_dir, opts.branch)
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
if args[0] == 'build':
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
os.execvp("rpmbuild", ["rpmbuild"] + defines + ["-ba", "condor.spec"])
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
elif args[0] == 'srpm':
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
os.execvp("rpmbuild", ["rpmbuild"] + defines + ["-bs", "condor.spec"])
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
elif args[0] == "prep":
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
os.execvp("rpmbuild", ["rpmbuild"] + defines + ["-bp", "condor.spec"])
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
else:
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
print "Unknown action: %s" % args[0]
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
return 1
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
if __name__ == '__main__':
|
|
![](https://seccdn.libravatar.org/avatar/7953a9093903b1598d828463f294c39ff77c20e7530429a55b48be9a3c3c0f35?s=16&d=retro) |
a7cfd51 |
sys.exit(main())
|