summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrédéric Péters <fpeters@entrouvert.com>2021-01-11 18:07:33 (GMT)
committerFrédéric Péters <fpeters@entrouvert.com>2021-01-11 18:07:33 (GMT)
commitd37357188d49b5f7db11bc8e487caf620a666a85 (patch)
treeb8f70e949db68c9aa3fa318939d4931ecdd656b6
parentf3ad730d9e42c49423d37521aedb2524e64d8eaa (diff)
downloadeobuilder-d37357188d49b5f7db11bc8e487caf620a666a85.zip
eobuilder-d37357188d49b5f7db11bc8e487caf620a666a85.tar.gz
eobuilder-d37357188d49b5f7db11bc8e487caf620a666a85.tar.bz2
trivial: apply black
-rwxr-xr-xeobuildall35
-rwxr-xr-xeobuilder-ctl332
-rw-r--r--eobuilder/__init__.py1
-rw-r--r--eobuilder/changelog.py34
-rw-r--r--eobuilder/cmdline.py154
-rw-r--r--eobuilder/settings.py37
-rwxr-xr-xsetup.py36
7 files changed, 351 insertions, 278 deletions
diff --git a/eobuildall b/eobuildall
index 0fe0724..0cc9ad9 100755
--- a/eobuildall
+++ b/eobuildall
@@ -9,17 +9,26 @@ import time
from eobuilder import settings, init as eobuilder_init
+
def init():
eobuilder_init()
gitolite_admin_path = os.path.join(settings.GIT_PATH, 'gitolite-admin')
if not os.path.exists(gitolite_admin_path):
- p = subprocess.Popen(['git', 'clone', 'git@repos.entrouvert.org:gitolite-admin.git'],
- close_fds=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
- cwd=settings.GIT_PATH)
+ p = subprocess.Popen(
+ ['git', 'clone', 'git@repos.entrouvert.org:gitolite-admin.git'],
+ close_fds=True,
+ stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE,
+ cwd=settings.GIT_PATH,
+ )
else:
- p = subprocess.Popen(['git', 'pull'],
- close_fds=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
- cwd=gitolite_admin_path)
+ p = subprocess.Popen(
+ ['git', 'pull'],
+ close_fds=True,
+ stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE,
+ cwd=gitolite_admin_path,
+ )
stdout, stderr = p.communicate()
if p.returncode != 0:
# abort if there's an error in this git call, we could try going on
@@ -36,18 +45,17 @@ def get_modules():
modules.append(line.split()[-1])
return modules
+
def build_module(config, module):
try:
dists = config.get('dists', module)
except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
dists = 'jessie,stretch,buster'
- rc = os.system('/usr/local/bin/eobuilder -d %(dists)s %(module)s' % {
- 'dists': dists,
- 'module': module})
+ rc = os.system('/usr/local/bin/eobuilder -d %(dists)s %(module)s' % {'dists': dists, 'module': module})
if rc == 0:
return 'ok'
elif rc % 256 != 0:
- return 'fail' # killed by a signal
+ return 'fail' # killed by a signal
else:
exit_code = rc / 256
if exit_code == 2:
@@ -55,6 +63,7 @@ def build_module(config, module):
else:
return 'fail'
+
if __name__ == '__main__':
init()
cfg_file = os.path.expanduser('~/.config/eobuilder')
@@ -77,13 +86,13 @@ if __name__ == '__main__':
if blacklisted:
continue
t0 = time.time()
- print('='*60)
+ print('=' * 60)
print(module)
- print('='*60)
+ print('=' * 60)
sys.stdout.flush()
results[module] = build_module(config, module)
print('\n')
- print('(%1.2f seconds)' % (time.time()-t0))
+ print('(%1.2f seconds)' % (time.time() - t0))
print('\n')
sys.stdout.flush()
diff --git a/eobuilder-ctl b/eobuilder-ctl
index 979dcaf..97f3ec6 100755
--- a/eobuilder-ctl
+++ b/eobuilder-ctl
@@ -20,6 +20,7 @@ from eobuilder.cmdline import parse_cmdline, error, cat, touch, call, output, se
if 'git+ssh' not in urllib.parse.uses_relative:
urllib.parse.uses_relative.append('git+ssh')
+
def rm_recursive(path):
if os.path.exists(path):
shutil.rmtree(path)
@@ -37,12 +38,12 @@ def smart_cleaning(files_path):
for project in project_files.iterkeys():
nb_versions = len(project_files[project])
if nb_versions > settings.MIN_PACKAGE_VERSIONS:
- project_files[project] = \
- sorted(project_files[project],
- key=lambda x: os.stat(x).st_mtime)
+ project_files[project] = sorted(project_files[project], key=lambda x: os.stat(x).st_mtime)
for filename in project_files[project]:
- if nb_versions > settings.MIN_PACKAGE_VERSIONS and \
- os.stat(filename).st_mtime < now - settings.MIN_AGE * 86400:
+ if (
+ nb_versions > settings.MIN_PACKAGE_VERSIONS
+ and os.stat(filename).st_mtime < now - settings.MIN_AGE * 86400
+ ):
os.remove(filename)
nb_versions -= 1
@@ -64,8 +65,7 @@ def clean(method):
shutil.rmtree(settings.LOCK_PATH)
elif method == "smart":
results_files = []
- origin_files = [os.path.join(settings.ORIGIN_PATH, f) \
- for f in os.listdir(settings.ORIGIN_PATH)]
+ origin_files = [os.path.join(settings.ORIGIN_PATH, f) for f in os.listdir(settings.ORIGIN_PATH)]
for root, dirs, files in os.walk(settings.PBUILDER_RESULT):
for fname in files:
results_files.append(os.path.join(root, fname))
@@ -76,26 +76,25 @@ def clean(method):
for fname in files:
fname = os.path.join(root, fname)
ext = os.path.splitext(fname)
- if ext == "build" and \
- os.stat(fname).st_mtime < now - 365 * 86400:
+ if ext == "build" and os.stat(fname).st_mtime < now - 365 * 86400:
os.remove(fname)
else:
error("Cleanning: unknow '%s' option" % method)
+
def get_project_infos(git_project_path, cmd_options):
- """ return a dict with project informations
- """
+ """return a dict with project informations"""
os.chdir(git_project_path)
results = {
- 'name': '',
- 'version': '',
- 'fullname': '',
- 'ac_version': '',
- 'build_dir': '',
- 'build_branch': cmd_options.branch,
- 'commit_number': '',
- 'git_path': git_project_path,
- }
+ 'name': '',
+ 'version': '',
+ 'fullname': '',
+ 'ac_version': '',
+ 'build_dir': '',
+ 'build_branch': cmd_options.branch,
+ 'commit_number': '',
+ 'git_path': git_project_path,
+ }
if os.path.exists("setup.py"):
# Hack to support setup_requires
setup_py("--help")
@@ -105,12 +104,8 @@ def get_project_infos(git_project_path, cmd_options):
elif os.path.exists("configure.ac"):
call("./autogen.sh")
call('make all')
- results['name'] = output(
- "./configure --version | head -n1 | sed 's/ configure.*//'"
- )[:-1]
- results['ac_version'] = output(
- "./configure --version | head -n1 | sed 's/.* configure //'"
- )[:-1]
+ results['name'] = output("./configure --version | head -n1 | sed 's/ configure.*//'")[:-1]
+ results['ac_version'] = output("./configure --version | head -n1 | sed 's/.* configure //'")[:-1]
results['version'] = results['ac_version'].replace('-', '.')
results['fullname'] = results['name']
elif os.path.exists("Makefile"):
@@ -121,15 +116,12 @@ def get_project_infos(git_project_path, cmd_options):
error("Unsupported project type", exit_code=2)
results['build_dir'] = os.path.join(
- settings.EOBUILDER_TMP, '%s-%d' % (results['name'], random.randint(0, 1000000))
- )
+ settings.EOBUILDER_TMP, '%s-%d' % (results['name'], random.randint(0, 1000000))
+ )
atexit.register(rm_recursive, results['build_dir'])
results['commit_number'] = output("git rev-parse HEAD")[:-1]
- results['lock_path'] = os.path.join(settings.LOCK_PATH,
- results['name'])
- current_tag = output(
- "git describe --abbrev=0 --tags --match=v*",
- exit_on_error=False)
+ results['lock_path'] = os.path.join(settings.LOCK_PATH, results['name'])
+ current_tag = output("git describe --abbrev=0 --tags --match=v*", exit_on_error=False)
if current_tag:
results['current_tag'] = current_tag[1:-1]
else:
@@ -143,12 +135,12 @@ def prepare_build(dist, project, cmd_options, new):
Create origin archive, update git and Debian changelog
"""
package = {
- 'repository': settings.DEFAULT_UNSTABLE_REPOSITORIES[dist],
- 'copy_in_testing': True,
- 'version': '',
- 'source_name': '',
- 'names': []
- }
+ 'repository': settings.DEFAULT_UNSTABLE_REPOSITORIES[dist],
+ 'copy_in_testing': True,
+ 'version': '',
+ 'source_name': '',
+ 'names': [],
+ }
if cmd_options.hotfix:
package['repository'] = settings.HOTFIX_REPOSITORIES[dist]
os.chdir(project['git_path'])
@@ -183,14 +175,12 @@ def prepare_build(dist, project, cmd_options, new):
# get package source name
control_file = os.path.join(debian_folder, 'control')
package['names'] = re.findall(r"Package\s*:\s*(.*?)\n", cat(control_file))
- package['source_name'] = re.search(r"^Source\s*:\s*(.*?)\n",
- cat(control_file),
- re.MULTILINE
- ).group(1)
+ package['source_name'] = re.search(r"^Source\s*:\s*(.*?)\n", cat(control_file), re.MULTILINE).group(1)
# build tarball
- origin_archive = os.path.join(settings.ORIGIN_PATH,
- "%s_%s.orig.tar.bz2" % (package['source_name'], project['version']))
+ origin_archive = os.path.join(
+ settings.ORIGIN_PATH, "%s_%s.orig.tar.bz2" % (package['source_name'], project['version'])
+ )
if not os.path.exists(origin_archive):
print("+ Generating origin tarball ...")
os.chdir(project['git_path'])
@@ -201,27 +191,24 @@ def prepare_build(dist, project, cmd_options, new):
shutil.move("dist/%s.tar.bz2" % project['fullname'], origin_archive)
elif os.path.exists('./configure.ac'):
call("make dist-bzip2")
- shutil.move("%s-%s.tar.bz2" % \
- (project['name'], project['ac_version']),
- origin_archive)
+ shutil.move("%s-%s.tar.bz2" % (project['name'], project['ac_version']), origin_archive)
elif os.path.exists('Makefile'):
call("make dist-bzip2")
shutil.move("sdist/%s.tar.bz2" % project['fullname'], origin_archive)
else:
error('Unsupported project type', project['build_dir'], exit_code=2)
- last_version_file = os.path.join(project['lock_path'],
- "%s_%s_%s.last_version" % (project['name'],
- package['repository'],
- build_branch.replace('/', '_'))
- )
+ last_version_file = os.path.join(
+ project['lock_path'],
+ "%s_%s_%s.last_version" % (project['name'], package['repository'], build_branch.replace('/', '_')),
+ )
debian_changelog = os.path.join(debian_folder, 'changelog')
if os.path.exists(last_version_file):
last_debian_package_version = cat(last_version_file)
else:
- last_debian_package_version = re.search(r"^Version:\s(.*?)$",
- output("dpkg-parsechangelog -l%s" % debian_changelog),
- re.MULTILINE).group(1)
+ last_debian_package_version = re.search(
+ r"^Version:\s(.*?)$", output("dpkg-parsechangelog -l%s" % debian_changelog), re.MULTILINE
+ ).group(1)
last_version = last_debian_package_version.split('-')[0]
package['version'] = last_debian_package_version
@@ -230,28 +217,32 @@ def prepare_build(dist, project, cmd_options, new):
else:
debian_revision_number = '-1'
- if last_version == project['version'] and new \
- and "~eob" in last_debian_package_version:
+ if last_version == project['version'] and new and "~eob" in last_debian_package_version:
new_inc = int(last_debian_package_version.rsplit('+', 1)[-1]) + 1
- version_suffix = "%s~eob%s+%s" % (debian_revision_number,
- settings.DEBIAN_VERSIONS[dist],
- new_inc)
+ version_suffix = "%s~eob%s+%s" % (debian_revision_number, settings.DEBIAN_VERSIONS[dist], new_inc)
else:
- version_suffix = "%s~eob%s+1" % (debian_revision_number,
- settings.DEBIAN_VERSIONS[dist])
+ version_suffix = "%s~eob%s+1" % (debian_revision_number, settings.DEBIAN_VERSIONS[dist])
call("git checkout --quiet %s" % build_branch)
- changelog = '\n'.join(changelog_from_git(package['source_name'],
- version_suffix, project['git_path'], package['repository'],
- epoch=cmd_options.epoch))
+ changelog = '\n'.join(
+ changelog_from_git(
+ package['source_name'],
+ version_suffix,
+ project['git_path'],
+ package['repository'],
+ epoch=cmd_options.epoch,
+ )
+ )
if changelog:
if not os.path.isdir(debian_folder):
call("git checkout --quiet %s" % debian_branch)
debian_generated_changelog_filename = debian_changelog + '.generated'
with open(debian_generated_changelog_filename, 'w+') as f:
f.write(changelog)
- package['version'] = re.search(r"^Version:\s(.*?)$",
- output("dpkg-parsechangelog -l%s" % debian_generated_changelog_filename),
- re.MULTILINE).group(1)
+ package['version'] = re.search(
+ r"^Version:\s(.*?)$",
+ output("dpkg-parsechangelog -l%s" % debian_generated_changelog_filename),
+ re.MULTILINE,
+ ).group(1)
os.unlink(debian_generated_changelog_filename)
else:
# changelog couldn't be generated, this happens with checkouts from
@@ -269,11 +260,17 @@ def prepare_build(dist, project, cmd_options, new):
# wrong version number, in that case we add an arbitrary new entry
# to the existing changelog
package['version'] = '%s%s' % (project['version'], version_suffix)
- call('dch "Eobuilder version" -v %s --distribution %s \
- --force-bad-version --force-distribution --changelog %s' % \
- ('%s:%s' % (cmd_options.epoch, package['version']) if cmd_options.epoch else package['version'],
- package["repository"],
- debian_changelog))
+ call(
+ 'dch "Eobuilder version" -v %s --distribution %s \
+ --force-bad-version --force-distribution --changelog %s'
+ % (
+ '%s:%s' % (cmd_options.epoch, package['version'])
+ if cmd_options.epoch
+ else package['version'],
+ package["repository"],
+ debian_changelog,
+ )
+ )
good_changelog_contents = open(debian_changelog).read()
if cmd_options.hotfix:
@@ -281,12 +278,11 @@ def prepare_build(dist, project, cmd_options, new):
if not project['version'].startswith(version_part):
return error("Invalid name for hotfix branch (must start with version number)", exit_code=2)
- build_file = os.path.join(project['lock_path'],
- "%s_%s_%s_%s.build" % (project['name'],
- package['version'],
- package['repository'],
- build_branch.replace('/', '_'))
- )
+ build_file = os.path.join(
+ project['lock_path'],
+ "%s_%s_%s_%s.build"
+ % (project['name'], package['version'], package['repository'], build_branch.replace('/', '_')),
+ )
if os.path.exists(build_file):
print("+ Already built for %s !" % dist)
return package
@@ -295,44 +291,47 @@ def prepare_build(dist, project, cmd_options, new):
if debian_branch:
call("git checkout --quiet %s" % debian_branch)
os.chdir(project['build_dir'])
- project_build_path = os.path.join(project['build_dir'],
- "%s-%s" % (project['name'], project['version']))
+ project_build_path = os.path.join(project['build_dir'], "%s-%s" % (project['name'], project['version']))
shutil.copy(origin_archive, project['build_dir'])
- tar = tarfile.open('%s_%s.orig.tar.bz2' % \
- (package['source_name'], project['version']),
- 'r:bz2')
+ tar = tarfile.open('%s_%s.orig.tar.bz2' % (package['source_name'], project['version']), 'r:bz2')
tar.extractall()
tar.close()
if os.path.exists("%s/debian" % project_build_path):
shutil.rmtree("%s/debian" % project_build_path)
- shutil.copytree(os.path.join(project['git_path'], debian_folder),
- "%s/debian" % project_build_path)
+ shutil.copytree(os.path.join(project['git_path'], debian_folder), "%s/debian" % project_build_path)
with open(os.path.join(project_build_path, 'debian', 'changelog'), 'w') as f:
f.write(good_changelog_contents)
return package
+
def build_project(dist, arch, project, package, new):
- pbuilder_project_result = os.path.join(settings.PBUILDER_RESULT,
- '%s-%s' % (dist, arch))
- project_build_path = os.path.join(project['build_dir'],
- "%s-%s" % (project['name'], project['version']))
+ pbuilder_project_result = os.path.join(settings.PBUILDER_RESULT, '%s-%s' % (dist, arch))
+ project_build_path = os.path.join(project['build_dir'], "%s-%s" % (project['name'], project['version']))
if not os.path.exists(pbuilder_project_result):
os.makedirs(pbuilder_project_result, 0o755)
os.chdir(project['lock_path'])
- source_build = os.path.join(project['lock_path'],
- "%s_%s_%s_%s_source.build" % (project['name'],
- project['version'],
- package['repository'],
- project['build_branch'].replace('/', '_'))
- )
- bin_build = os.path.join(project['lock_path'],
- "%s_%s_%s_%s_%s.build" % (project['name'],
- package['version'],
- package['repository'],
- project['build_branch'].replace('/', '_'),
- arch)
- )
+ source_build = os.path.join(
+ project['lock_path'],
+ "%s_%s_%s_%s_source.build"
+ % (
+ project['name'],
+ project['version'],
+ package['repository'],
+ project['build_branch'].replace('/', '_'),
+ ),
+ )
+ bin_build = os.path.join(
+ project['lock_path'],
+ "%s_%s_%s_%s_%s.build"
+ % (
+ project['name'],
+ package['version'],
+ package['repository'],
+ project['build_branch'].replace('/', '_'),
+ arch,
+ ),
+ )
print('SOURCE_BUILD:', source_build)
if os.path.exists(source_build):
source_opt = '-b'
@@ -342,46 +341,53 @@ def build_project(dist, arch, project, package, new):
print("+ Already build !")
return
os.chdir(project_build_path)
- print("+ Building %s %s %s %s" % \
- (project['name'], project['version'], dist, arch))
- call('DIST=%s ARCH=%s pdebuild --use-pdebuild-internal --architecture %s --debbuildopts "%s"' % \
- (dist, arch, arch, source_opt))
+ print("+ Building %s %s %s %s" % (project['name'], project['version'], dist, arch))
+ call(
+ 'DIST=%s ARCH=%s pdebuild --use-pdebuild-internal --architecture %s --debbuildopts "%s"'
+ % (dist, arch, arch, source_opt)
+ )
print("+ Lock build")
touch(bin_build)
if not os.path.exists(source_build):
touch(source_build)
+
def send_packages(dist, arch, project, package, last_tag):
- stamp_file = os.path.join(project['lock_path'], '%s_%s_%s_%s_%s.upload' % (
- project['name'], package['version'],
- package['repository'], arch, project['build_branch'].replace('/', '_')))
+ stamp_file = os.path.join(
+ project['lock_path'],
+ '%s_%s_%s_%s_%s.upload'
+ % (
+ project['name'],
+ package['version'],
+ package['repository'],
+ arch,
+ project['build_branch'].replace('/', '_'),
+ ),
+ )
if os.path.exists(stamp_file):
print('+ Already uploaded')
return
- pbuilder_project_result = os.path.join(settings.PBUILDER_RESULT,
- '%s-%s' % (dist, arch))
+ pbuilder_project_result = os.path.join(settings.PBUILDER_RESULT, '%s-%s' % (dist, arch))
print("+ Updating local repository...")
- subprocess.check_call('apt-ftparchive packages . | gzip > Packages.gz', cwd=pbuilder_project_result, shell=True)
+ subprocess.check_call(
+ 'apt-ftparchive packages . | gzip > Packages.gz', cwd=pbuilder_project_result, shell=True
+ )
print("+ Sending package...")
os.chdir(pbuilder_project_result)
- call("dput -u %s %s_%s_%s.changes" % \
- (package['repository'],
- package['source_name'],
- package['version'].split(':', 1)[-1],
- arch)
- )
+ call(
+ "dput -u %s %s_%s_%s.changes"
+ % (package['repository'], package['source_name'], package['version'].split(':', 1)[-1], arch)
+ )
print("+ Updating repository ...")
- call('ssh root@%s "/etc/cron.hourly/process-incoming"' % \
- settings.REPOSITORY_URL)
+ call('ssh root@%s "/etc/cron.hourly/process-incoming"' % settings.REPOSITORY_URL)
old_version = tuple(int(d) for d in last_tag.split('.'))
new_version = tuple(int(d) for d in project['current_tag'].split('.'))
- if new_version > old_version and \
- project['current_tag'] == project['version']:
+ if new_version > old_version and project['current_tag'] == project['version']:
print("New tag detected : %s" % project['current_tag'])
if package['source_name'] in settings.MANUAL_TESTING_REPOSITORIES:
package_repos = settings.MANUAL_TESTING_REPOSITORIES[package['source_name']]
@@ -392,23 +398,21 @@ def send_packages(dist, arch, project, package, last_tag):
if dist in package_repos and package['copy_in_testing']:
for repo in package_repos[dist]:
print("+ Copy %s packages to %s repository (%s)" % (package['source_name'], repo, dist))
- call('ssh root@%s "/usr/bin/reprepro -b /var/vhosts/deb.entrouvert.org copy %s %s %s"'\
- % (settings.REPOSITORY_URL, repo,
- package['repository'], packages))
- call('ssh root@%s /usr/local/bin/update-deb-repo-html' % \
- settings.REPOSITORY_URL)
+ call(
+ 'ssh root@%s "/usr/bin/reprepro -b /var/vhosts/deb.entrouvert.org copy %s %s %s"'
+ % (settings.REPOSITORY_URL, repo, package['repository'], packages)
+ )
+ call('ssh root@%s /usr/local/bin/update-deb-repo-html' % settings.REPOSITORY_URL)
open(stamp_file, 'w').close()
+
def clean_git_on_exit(git_project_path):
if not os.path.exists(git_project_path):
return
os.chdir(git_project_path)
call("git stash --quiet")
- changelog_tmp = os.path.join(
- git_project_path,
- "debian", "changelog.git"
- )
+ changelog_tmp = os.path.join(git_project_path, "debian", "changelog.git")
if os.path.exists(changelog_tmp):
os.remove(changelog_tmp)
@@ -428,10 +432,12 @@ def get_git_branch_name(project_reference):
git_project_path = get_git_project_path(project_reference)
for branch_name in ('main', 'master'):
try:
- subprocess.check_call(['git', 'rev-parse', branch_name],
- stdout=subprocess.DEVNULL,
- stderr=subprocess.DEVNULL,
- cwd=git_project_path)
+ subprocess.check_call(
+ ['git', 'rev-parse', branch_name],
+ stdout=subprocess.DEVNULL,
+ stderr=subprocess.DEVNULL,
+ cwd=git_project_path,
+ )
except subprocess.CalledProcessError:
continue
return branch_name
@@ -449,10 +455,8 @@ def setup_git_tree(project_reference, options):
branch_name = options.branch or get_git_branch_name(project_reference)
try:
subprocess.check_call(['git', 'fetch'], cwd=git_project_path)
- subprocess.check_call(['git', 'checkout', '--quiet', branch_name],
- cwd=git_project_path)
- subprocess.check_call(['git', 'reset', '--hard', 'origin/%s' % branch_name],
- cwd=git_project_path)
+ subprocess.check_call(['git', 'checkout', '--quiet', branch_name], cwd=git_project_path)
+ subprocess.check_call(['git', 'reset', '--hard', 'origin/%s' % branch_name], cwd=git_project_path)
except subprocess.CalledProcessError as e:
print(e, file=sys.stderr)
shutil.rmtree(git_project_path)
@@ -470,8 +474,7 @@ def setup_git_tree(project_reference, options):
project_url = project_reference
call("git clone %s" % project_url)
if options.branch:
- subprocess.check_call(['git', 'checkout', '--quiet', options.branch],
- cwd=git_project_path)
+ subprocess.check_call(['git', 'checkout', '--quiet', options.branch], cwd=git_project_path)
branch_name = get_git_branch_name(project_reference)
if not options.branch:
@@ -505,12 +508,11 @@ def main():
atexit.register(clean_git_on_exit, git_project_path)
if options.branch and options.branch.startswith('origin/'):
# normalize without origin/
- options.branch = options.branch[len('origin/'):]
+ options.branch = options.branch[len('origin/') :]
existing_tree = os.path.exists(git_project_path)
if existing_tree:
os.chdir(git_project_path)
- last_tag = output("git describe --abbrev=0 --tags --match=v*",
- exit_on_error=False)
+ last_tag = output("git describe --abbrev=0 --tags --match=v*", exit_on_error=False)
if last_tag:
last_tag = last_tag[1:-1]
else:
@@ -528,10 +530,8 @@ def main():
current_revision = output("git rev-parse HEAD", True).strip()
branch_name = get_git_branch_name(project_reference)
last_branch_revision_file_path = os.path.join(
- project['lock_path'],
- "%s_%s.last_revision" % (
- project['name'],
- branch_name.replace('/', '_')))
+ project['lock_path'], "%s_%s.last_revision" % (project['name'], branch_name.replace('/', '_'))
+ )
try:
with open(last_branch_revision_file_path) as f:
last_branch_revision = f.read().strip()
@@ -557,18 +557,24 @@ def main():
else:
print("+ Package not sent to repository (--no-dput used).")
print("+ Add a build file to lock new build for %s" % dist)
- touch(os.path.join(project['lock_path'],
- "%s_%s_%s_%s.build" % (project['name'],
- package['version'],
- package['repository'],
- branch_name.replace('/', '_'))
- ))
-
- last_version_file = os.path.join(project['lock_path'],
- "%s_%s_%s.last_version" % (project['name'],
- package['repository'],
- branch_name.replace('/', '_'))
- )
+ touch(
+ os.path.join(
+ project['lock_path'],
+ "%s_%s_%s_%s.build"
+ % (
+ project['name'],
+ package['version'],
+ package['repository'],
+ branch_name.replace('/', '_'),
+ ),
+ )
+ )
+
+ last_version_file = os.path.join(
+ project['lock_path'],
+ "%s_%s_%s.last_version"
+ % (project['name'], package['repository'], branch_name.replace('/', '_')),
+ )
with open(last_version_file, 'w+') as f:
f.write(package['version'])
@@ -576,6 +582,6 @@ def main():
with open(last_branch_revision_file_path, 'w+') as f:
f.write(current_revision)
+
if __name__ == "__main__":
main()
-
diff --git a/eobuilder/__init__.py b/eobuilder/__init__.py
index 5908d78..ca73ca6 100644
--- a/eobuilder/__init__.py
+++ b/eobuilder/__init__.py
@@ -2,6 +2,7 @@ import os
VERSION = '7'
+
def init():
print("+ Init EO Builder")
if not os.path.exists(settings.GIT_PATH):
diff --git a/eobuilder/changelog.py b/eobuilder/changelog.py
index f4f0dbe..14cca08 100644
--- a/eobuilder/changelog.py
+++ b/eobuilder/changelog.py
@@ -13,6 +13,7 @@ from git.objects.commit import Commit
from . import cmdline
+
def get_commit_from_tag(repo, tag_ref):
ref = repo.tags[tag_ref]
while ref.object.type == 'tag':
@@ -35,11 +36,15 @@ def is_pep0440_project(path):
return False
-def changelog_from_git(project, version_suffix, path,
- repository='eobuilder',
- maintainer_name='eobuilder',
- maintainer_email='eobuilder@entrouvert.com',
- epoch=''):
+def changelog_from_git(
+ project,
+ version_suffix,
+ path,
+ repository='eobuilder',
+ maintainer_name='eobuilder',
+ maintainer_email='eobuilder@entrouvert.com',
+ epoch='',
+):
repo = git.repo.Repo(path)
is_pep0440 = is_pep0440_project(path)
@@ -56,7 +61,7 @@ def changelog_from_git(project, version_suffix, path,
versions.append((last_tag, get_commit_from_tag(repo, last_tag)))
while True:
try:
- last_tag = repo.git.describe(last_tag+'~', abbrev=0)
+ last_tag = repo.git.describe(last_tag + '~', abbrev=0)
except GitCommandError:
break
else:
@@ -64,12 +69,14 @@ def changelog_from_git(project, version_suffix, path,
n = len(versions)
for i in range(n):
name, commit = versions[i]
- if i == n-1:
+ if i == n - 1:
logs = [commit] + list(commit.iter_parents())
else:
+
def encode_hex(value):
return codecs.encode(value, 'hex').decode('ascii')
- reflog = '%s..%s' % (encode_hex(versions[i+1][1].binsha), encode_hex(commit.binsha))
+
+ reflog = '%s..%s' % (encode_hex(versions[i + 1][1].binsha), encode_hex(commit.binsha))
logs = list(Commit.iter_items(repo, reflog))
if not logs:
continue
@@ -89,15 +96,20 @@ def changelog_from_git(project, version_suffix, path,
except LookupError as e:
t = '(%s) %s' % (l.hexsha[:6], e)
lines = textwrap.wrap(t, 80)
- for prefix, suffix in zip([' * '] + [' ']*(len(lines)-1), lines):
+ for prefix, suffix in zip([' * '] + [' '] * (len(lines) - 1), lines):
yield (prefix + suffix)
paris = pytz.timezone('Europe/Paris')
- date = datetime.datetime.fromtimestamp(logs[0].committed_date + logs[0].committer_tz_offset).replace(
- tzinfo=pytz.UTC).astimezone(paris).strftime('%a, %d %b %Y %H:%M:%S %z')
+ date = (
+ datetime.datetime.fromtimestamp(logs[0].committed_date + logs[0].committer_tz_offset)
+ .replace(tzinfo=pytz.UTC)
+ .astimezone(paris)
+ .strftime('%a, %d %b %Y %H:%M:%S %z')
+ )
yield ''
yield ' -- %s <%s> %s' % (maintainer_name, maintainer_email, date)
yield ''
+
if __name__ == '__main__':
project = sys.argv[1]
version_suffix = sys.argv[2]
diff --git a/eobuilder/cmdline.py b/eobuilder/cmdline.py
index 31ed548..04fa403 100644
--- a/eobuilder/cmdline.py
+++ b/eobuilder/cmdline.py
@@ -1,4 +1,3 @@
-
import os
import shutil
import subprocess
@@ -7,6 +6,7 @@ import sys
from optparse import OptionParser
from optparse import Option
+
class MultipleOption(Option):
ACTIONS = Option.ACTIONS + ("extend",)
@@ -21,58 +21,98 @@ class MultipleOption(Option):
if not lvalue in values_list:
values_list.append(lvalue)
else:
- Option.take_action(
- self, action, dest, opt, value, values, parser)
+ Option.take_action(self, action, dest, opt, value, values, parser)
def parse_cmdline():
- parser = OptionParser(option_class=MultipleOption,
- usage='usage: %prog [OPTIONS] -d [buster|,stretch|,jessie|,wheezy|,squeeze] GIT_REPOSITORY_NAME')
- parser.add_option("-a", "--architectures",
- action="extend", type="string",
- dest="architectures", metavar='ARCHITECTURES',
- default=[],
- help="ARCHITECTURES: amd64 and / or i368 (Default: amd64)")
- parser.add_option("-d", "--distribution",
- action="extend", type="string",
- dest="distrib", metavar='DISTRIBUTIONS',
- default=[],
- help="DISTRIBUTIONS: buster, stretch, jessie, wheezy and / or squeeze")
- parser.add_option("-f", "--force", action="store_true",
- dest="force", default=False,
- help="force a new build")
- parser.add_option("-n", "--native", action="store_true",
- dest="native", default=False,
- help="build native package")
- parser.add_option("-b", "--branch",
- action="store", type="string",
- dest="branch", metavar='NAME',
- help="branch to build (Default: main, or master)")
- parser.add_option("--epoch",
- action="store", type="string",
- dest="epoch", metavar='EPOCH',
- default="",
- help="version number epoch (default: none)")
- parser.add_option("-D", "--debian-folder",
- action="store", type="string",
- dest="debian_folder", metavar='NAME',
- default="debian",
- help="debian folder to use for build (Default: debian-DIST or debian)")
- parser.add_option("-c", "--clean",
- action="extend", type="string",
- dest="cleaning", metavar='CLEANING_METHODS',
- default=[],
- help="CLEANING_METHODS: git, deb, archives, smart and / or all")
- parser.add_option("--hotfix", action="store_true",
- dest="hotfix", default=False,
- help="upload to hotfix repository")
- parser.add_option("-r", "--repository",
- action="extend", type="string",
- default=[],
- dest="repositories", metavar='DISTRIBUTION:REPOSITORY, DISTRIBUTION:REPOSITORY',
- help="DISTRIBUTION:REPOSITORY: strech:stretch-eobuilder, jessie:jessie-eobuilder, wheezy:wheezy-eobuilder")
- parser.add_option("--no-dput", dest='dput', action="store_false", default=True,
- help='do not send package to repository with dput')
+ parser = OptionParser(
+ option_class=MultipleOption,
+ usage='usage: %prog [OPTIONS] -d [buster|,stretch|,jessie|,wheezy|,squeeze] GIT_REPOSITORY_NAME',
+ )
+ parser.add_option(
+ "-a",
+ "--architectures",
+ action="extend",
+ type="string",
+ dest="architectures",
+ metavar='ARCHITECTURES',
+ default=[],
+ help="ARCHITECTURES: amd64 and / or i368 (Default: amd64)",
+ )
+ parser.add_option(
+ "-d",
+ "--distribution",
+ action="extend",
+ type="string",
+ dest="distrib",
+ metavar='DISTRIBUTIONS',
+ default=[],
+ help="DISTRIBUTIONS: buster, stretch, jessie, wheezy and / or squeeze",
+ )
+ parser.add_option(
+ "-f", "--force", action="store_true", dest="force", default=False, help="force a new build"
+ )
+ parser.add_option(
+ "-n", "--native", action="store_true", dest="native", default=False, help="build native package"
+ )
+ parser.add_option(
+ "-b",
+ "--branch",
+ action="store",
+ type="string",
+ dest="branch",
+ metavar='NAME',
+ help="branch to build (Default: main, or master)",
+ )
+ parser.add_option(
+ "--epoch",
+ action="store",
+ type="string",
+ dest="epoch",
+ metavar='EPOCH',
+ default="",
+ help="version number epoch (default: none)",
+ )
+ parser.add_option(
+ "-D",
+ "--debian-folder",
+ action="store",
+ type="string",
+ dest="debian_folder",
+ metavar='NAME',
+ default="debian",
+ help="debian folder to use for build (Default: debian-DIST or debian)",
+ )
+ parser.add_option(
+ "-c",
+ "--clean",
+ action="extend",
+ type="string",
+ dest="cleaning",
+ metavar='CLEANING_METHODS',
+ default=[],
+ help="CLEANING_METHODS: git, deb, archives, smart and / or all",
+ )
+ parser.add_option(
+ "--hotfix", action="store_true", dest="hotfix", default=False, help="upload to hotfix repository"
+ )
+ parser.add_option(
+ "-r",
+ "--repository",
+ action="extend",
+ type="string",
+ default=[],
+ dest="repositories",
+ metavar='DISTRIBUTION:REPOSITORY, DISTRIBUTION:REPOSITORY',
+ help="DISTRIBUTION:REPOSITORY: strech:stretch-eobuilder, jessie:jessie-eobuilder, wheezy:wheezy-eobuilder",
+ )
+ parser.add_option(
+ "--no-dput",
+ dest='dput',
+ action="store_false",
+ default=True,
+ help='do not send package to repository with dput',
+ )
(options, args) = parser.parse_args()
@@ -94,40 +134,42 @@ def parse_cmdline():
options.architectures = ["amd64"]
return options, args
+
def cat(file_path):
with open(file_path, 'r') as f:
content = f.read()
return content
+
def touch(fname):
print('TOUCH:', fname)
with open(fname, 'a'):
os.utime(fname, None)
+
def error(msg, build_dir=None, exit_code=1):
if build_dir and os.path.exists(build_dir):
shutil.rmtree(build_dir)
sys.stderr.write("ERROR: %s\n" % msg)
sys.exit(exit_code)
+
def call(cmd):
- """ cmd: command line
- """
+ """cmd: command line"""
print('CALL:', cmd)
rcode = subprocess.call(cmd, shell=True)
if rcode != 0:
error(cmd)
+
def output(cmd, print_output=False, exit_on_error=True):
- """ cmd: command line
+ """cmd: command line
print_output: print stdout and stderr
return outputs (stderr + stdout) as byte string
"""
output = None
try:
- output = subprocess.check_output(cmd,
- stderr=subprocess.STDOUT,
- shell=True)
+ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
except subprocess.CalledProcessError as e:
if e.output:
sys.stderr.write(e.output.decode('utf-8'))
diff --git a/eobuilder/settings.py b/eobuilder/settings.py
index 00ed214..c8afd0d 100644
--- a/eobuilder/settings.py
+++ b/eobuilder/settings.py
@@ -15,32 +15,32 @@ DEBIAN_VERSIONS = {
"jessie": "80",
"wheezy": "70",
"squeeze": "60",
- "lenny": "50"
+ "lenny": "50",
}
DEFAULT_UNSTABLE_REPOSITORIES = {
- "buster" : "buster-eobuilder",
- "stretch" : "stretch-eobuilder",
- "jessie" : "jessie-eobuilder",
- "wheezy" : "wheezy-eobuilder",
- "squeeze": "squeeze-eobuilder"
- }
+ "buster": "buster-eobuilder",
+ "stretch": "stretch-eobuilder",
+ "jessie": "jessie-eobuilder",
+ "wheezy": "wheezy-eobuilder",
+ "squeeze": "squeeze-eobuilder",
+}
# Paste new tag into repositories
# Automatically add new tag in this repositories
DEFAULT_TESTING_REPOSITORIES = {
- "buster": ["buster-testing"],
- "stretch": ["stretch-testing"],
- "jessie": ["jessie-testing"],
- "wheezy": ["wheezy-testing"],
- "squeeze": ["squeeze-testing"]
- }
+ "buster": ["buster-testing"],
+ "stretch": ["stretch-testing"],
+ "jessie": ["jessie-testing"],
+ "wheezy": ["wheezy-testing"],
+ "squeeze": ["squeeze-testing"],
+}
# Hotfix repositories
HOTFIX_REPOSITORIES = {
- "buster": "buster-hotfix",
- "stretch": "stretch-hotfix",
- "jessie": "jessie-hotfix",
+ "buster": "buster-hotfix",
+ "stretch": "stretch-hotfix",
+ "jessie": "jessie-hotfix",
}
# Specify the testing repository by source package name
@@ -53,7 +53,8 @@ MIN_PACKAGE_VERSIONS = 10
MIN_AGE = 60
-local_settings_file = os.environ.get('EOBUILDER_SETTINGS_FILE',
- os.path.join(os.path.dirname(__file__), 'local_settings.py'))
+local_settings_file = os.environ.get(
+ 'EOBUILDER_SETTINGS_FILE', os.path.join(os.path.dirname(__file__), 'local_settings.py')
+)
if os.path.exists(local_settings_file):
exec(open(local_settings_file).read())
diff --git a/setup.py b/setup.py
index d71b882..b086de0 100755
--- a/setup.py
+++ b/setup.py
@@ -21,9 +21,9 @@ class eo_sdist(sdist):
def get_version():
- '''Use the VERSION, if absent generates a version with git describe, if not
- tag exists, take 0.0- and add the length of the commit log.
- '''
+ """Use the VERSION, if absent generates a version with git describe, if not
+ tag exists, take 0.0- and add the length of the commit log.
+ """
if os.path.exists('VERSION'):
with open('VERSION', 'r') as v:
return v.read()
@@ -47,17 +47,19 @@ def get_version():
return '0.0'
-setup(name="eobuilder",
- version=get_version(),
- license="AGPLv3 or later",
- description="Entr'ouvert Package Builder",
- author="Entr'ouvert",
- author_email="info@entrouvert.org",
- maintainer="Jerome Schneider",
- maintainer_email="info@entrouvert.com",
- install_requires=['pytz', 'GitPython'],
- include_package_data=True,
- url='https://dev.entrouvert.org/projects/eobuilder',
- packages=find_packages(),
- scripts=('eobuilder-ctl', 'eobuildall'),
- cmdclass={'sdist': eo_sdist})
+setup(
+ name="eobuilder",
+ version=get_version(),
+ license="AGPLv3 or later",
+ description="Entr'ouvert Package Builder",
+ author="Entr'ouvert",
+ author_email="info@entrouvert.org",
+ maintainer="Jerome Schneider",
+ maintainer_email="info@entrouvert.com",
+ install_requires=['pytz', 'GitPython'],
+ include_package_data=True,
+ url='https://dev.entrouvert.org/projects/eobuilder',
+ packages=find_packages(),
+ scripts=('eobuilder-ctl', 'eobuildall'),
+ cmdclass={'sdist': eo_sdist},
+)