mirror of
https://github.com/clearlinux/common.git
synced 2026-06-16 19:16:00 +00:00
Compare commits
47 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 865997ad69 | |||
| 70bfbe8c17 | |||
| 3b1e4e5558 | |||
| 2465219907 | |||
| 77775f060c | |||
| 67406f7be2 | |||
| 9bece241c0 | |||
| 602cc9563f | |||
| 02b5ad93e3 | |||
| fb40533923 | |||
| 06dd86a3b9 | |||
| 9db26c3041 | |||
| ade6194a0c | |||
| a8d18b2f92 | |||
| c2d637b438 | |||
| 48d06e458d | |||
| 0ba3b95dad | |||
| 9749d00c56 | |||
| 7841d4dd5c | |||
| 91c89fe47d | |||
| 9d696fee5a | |||
| 54aea8a696 | |||
| a4545eb4b0 | |||
| 35d4f2c00f | |||
| 15c22ac4eb | |||
| 1c672f7638 | |||
| d0832c89f4 | |||
| 3a87e928c5 | |||
| 5ba1a7e1e3 | |||
| ba02bc2a4f | |||
| 0ef90a4704 | |||
| 0b39553aa6 | |||
| 7cd52ed2fd | |||
| a379bdd1e5 | |||
| b8eaa3c103 | |||
| 0664274e0a | |||
| 69cee2fcd7 | |||
| 19d7dfcc56 | |||
| 25e60b8d7f | |||
| c6749e0569 | |||
| 79b17335fa | |||
| 18503d7ff9 | |||
| d4a14d4b51 | |||
| 67f9a85781 | |||
| 2ab93bc546 | |||
| 0697a48265 | |||
| 3488d9df0b |
@@ -143,6 +143,10 @@ pullrebase:
|
||||
echo "No commits exist in remote. Continuing."; \
|
||||
exit 0; \
|
||||
fi; \
|
||||
if [ "$$(git rev-list FETCH_HEAD | head -n 1)" = "$$(git rev-list HEAD | head -n 1)" ]; then \
|
||||
echo "Current branch up-to-date. Continuing."; \
|
||||
exit 0; \
|
||||
fi; \
|
||||
echo "Rebasing to origin/master"; \
|
||||
if git status --porcelain | grep -q '^.[^?]'; \
|
||||
then \
|
||||
@@ -187,6 +191,7 @@ autospec: preautospec-checks pullrebase localreponotice clean-old-content
|
||||
git commit --amend --no-edit Change* ; \
|
||||
fi
|
||||
@$(MAKE) -s for-review.txt
|
||||
diffstat for-review.txt
|
||||
@printf "\n**\n"
|
||||
@printf "** NOTICE: A patch with changes is available in the file for-review.txt\n"
|
||||
@printf "** To recreate (e.g., after git commit --amend), run make for-review.txt\n"
|
||||
@@ -279,6 +284,7 @@ sources:
|
||||
@$(MAKE) generateupstream; \
|
||||
[ $$? -eq 0 ] && exit 0; \
|
||||
nvr="$$(rpmspec --srpm -q --qf '%{NAME}\t%{VERSION}\t%{RELEASE}\n' $(SPECFILE))"; \
|
||||
git -C $(TOPLVL)/projects/common fetch --tags >/dev/null 2>&1; \
|
||||
latest_builds=$$(git -C $(TOPLVL)/projects/common tag -l | sort -rn); \
|
||||
for b in $$latest_builds; do \
|
||||
url="$(DOWNLOAD_MIRROR)/releases/$$b/clear/source/package-sources"; \
|
||||
@@ -502,6 +508,9 @@ cloc: $(SRPMFILE)
|
||||
@$(MOCK) --clean --scrub=chroot --uniqueext=$(PKG_NAME)
|
||||
cat results/cloc.txt
|
||||
|
||||
# Define LTS-specific targets in a separate makefile
|
||||
-include $(TOPLVL)/projects/common/Makefile.common.lts
|
||||
|
||||
# Define site local common targets in a separate makefile
|
||||
-include $(TOPLVL)/projects/common/Makefile.common.site_local
|
||||
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
#-*-makefile-*-
|
||||
|
||||
LTSUTILS = python $(TOPLVL)/projects/common/lts/main.py $(PKG_NAME)
|
||||
|
||||
#help lts-show: Display a summary of active LTS branches.
|
||||
lts-show:
|
||||
@$(LTSUTILS) sanity-check
|
||||
@while read b; do \
|
||||
if git show-ref $$b > /dev/null; then \
|
||||
echo $$b $$(git log --oneline -1 $$b); \
|
||||
else \
|
||||
echo $$b Not found; \
|
||||
fi; \
|
||||
done < $(TOPLVL)/projects/common/lts/active-branches
|
||||
|
||||
#help lts-backport: Fast-forward the previous active branch to the current
|
||||
#help branch.
|
||||
lts-backport:
|
||||
@$(LTSUTILS) sanity-check
|
||||
@newer=$$(git symbolic-ref HEAD); \
|
||||
newer=$${newer#refs/heads/}; \
|
||||
if ! $(LTSUTILS) prev-branch --checkout; then \
|
||||
echo Could not check out previous active branch.; \
|
||||
exit 0; \
|
||||
fi; \
|
||||
if $(LTSUTILS) is-same-version $$newer; then \
|
||||
$(LTSUTILS) fast-forward $$newer; \
|
||||
else \
|
||||
echo Most likely a patch needs to be manually re-applied for this version.; \
|
||||
echo Alternatively, use \"git merge --ff-only $$newer\" to upgrade the package version.; \
|
||||
fi
|
||||
|
||||
#help lts-build: Build RPM in Koji, or reuse existing build from older LTS
|
||||
#help branch.
|
||||
lts-build:
|
||||
@$(LTSUTILS) sanity-check
|
||||
@tag=$$(git tag --points-at); \
|
||||
if [[ -z $$tag ]]; then \
|
||||
echo This commit does not have a tag.; \
|
||||
echo Proceeding to run \"make lts-koji\".; \
|
||||
$(LTSUTILS) prompt || exit; \
|
||||
$(MAKE) lts-koji; \
|
||||
exit; \
|
||||
fi; \
|
||||
older=$$($(LTSUTILS) prev-branch); \
|
||||
if [[ -z $$older ]]; then \
|
||||
echo Could not determine previous active branch.; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
current=$$($(LTSUTILS) current-branch); \
|
||||
if [[ $$(git rev-parse $$older) != $$(git rev-parse $$current) ]]; then \
|
||||
echo Previous branch and current branch have different commits.; \
|
||||
for b in $$older $$current; do echo $$b $$(git log --oneline -1 $$b); done; \
|
||||
echo Proceeding to run \"make lts-koji\".; \
|
||||
$(LTSUTILS) prompt || exit; \
|
||||
$(MAKE) lts-koji; \
|
||||
exit; \
|
||||
fi; \
|
||||
if $(LTSUTILS) can-reuse-binary $$older; then \
|
||||
echo Reusing binary from $$older.; \
|
||||
$(KOJI_CMD) tag-build $$current $(SRPMVERS); \
|
||||
else \
|
||||
echo Could not reuse binary from $$older.; \
|
||||
echo Proceeding to run \"make bump lts-koji\".; \
|
||||
$(LTSUTILS) prompt || exit; \
|
||||
$(MAKE) bump lts-koji; \
|
||||
fi
|
||||
@$(LTSUTILS) next-branch --checkout
|
||||
|
||||
#help lts-koji: Same as "koji" but for working on LTS branches. Should not
|
||||
#help be called directly, use lts-build instead.
|
||||
lts-koji: prekoji-checks kojidef
|
||||
@$(LTSUTILS) sanity-check
|
||||
@$(MAKE) spdxcheck
|
||||
@$(MAKE) checkblacklist
|
||||
@current=$$($(LTSUTILS) current-branch); \
|
||||
if ! grep $$current $(TOPLVL)/projects/common/lts/active-branches; then \
|
||||
echo "Error: Must be on an active branch to submit to koji" >&2; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
if ! git diff --quiet HEAD ${SPECFILE}; then \
|
||||
echo "Error: All changes to ${SPECFILE} must be committed first" >&2; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
if git rev-parse --verify --quiet origin/$$current > /dev/null; then \
|
||||
git pull --rebase; \
|
||||
fi
|
||||
git tag $(SRPMVERS)-lts
|
||||
git push origin $$($(LTSUTILS) current-branch) refs/tags/$(SRPMVERS)-lts
|
||||
$(KOJI_CMD) build $$KOJI_NOWAIT $$($(LTSUTILS) current-branch) $(PKG_BASE_URL)/$(PKG_NAME)?#$(SRPMVERS)-lts
|
||||
+4
-5
@@ -11,6 +11,7 @@ SHELL = /bin/bash
|
||||
|
||||
PKGS = $(shell cat $(PACKAGES_FILE))
|
||||
PKGS_LOCAL = $(sort $(filter ${PKGS},$(subst packages/,,$(wildcard packages/*))))
|
||||
PKGS_ORPHANED = $(sort $(filter-out common ${PKGS},$(subst packages/,,$(wildcard packages/*))))
|
||||
|
||||
proj_PKGS = $(addprefix proj_,$(PROJ_PKGS))
|
||||
clone_PKGS = $(addprefix clone_,$(PKGS))
|
||||
@@ -128,11 +129,9 @@ pull: ${PULL_PKGS}
|
||||
#help clean-pkgs-dir: For packages that are no longer present in the distro,
|
||||
#help removes the associated package repos from the ./packages tree
|
||||
clean-pkgs-dir: $(PACKAGES_FILE)
|
||||
@for p in `ls packages`; do \
|
||||
if ! grep -wq "^$$p$$" "$<" && [ "$$p" != common ]; then \
|
||||
echo "Removing $$p from packages, it is no longer in common/packages."; \
|
||||
rm -rf packages/$$p; \
|
||||
fi \
|
||||
@for p in ${PKGS_ORPHANED}; do \
|
||||
echo "Removing $$p from packages, it is no longer in common/packages."; \
|
||||
rm -rf packages/$$p; \
|
||||
done
|
||||
@echo "packages directory cleaned";
|
||||
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,5 @@
|
||||
TEST = test.test_ltsutils
|
||||
|
||||
.PHONY: test
|
||||
test:
|
||||
PYTHONPATH=. python -m unittest -v -k .Test $(TEST)
|
||||
@@ -0,0 +1,19 @@
|
||||
# LTS package maintenance utility
|
||||
|
||||
This tooling is designed to automate 2 main tasks that are part of
|
||||
the package maintenance workflow of Clear Linux LTS. These tasks are:
|
||||
- Back-porting of a patch (e.g. security fix) to older branches.
|
||||
- Building RPMs with the intent of sharing binaries of older LTS branches to
|
||||
newer branches whenever possible.
|
||||
|
||||
There should be no need to run this tool directly. Instead use the following
|
||||
targets defined in Makefile.common.lts:
|
||||
- lts-show: Show a summary of active LTS branches
|
||||
- lts-backport: Attempt to fast-forward the previous active branch to the current branch
|
||||
- lts-build: Build RPM in Koji, or reuse existing build from older branch
|
||||
|
||||
"Active" branches correspond to LTS releases that currently have support.
|
||||
They are listed in a flat file "active-branches" in "lts" directory, from
|
||||
oldest to newest. New entries are added by Clear Linux LTS developers as
|
||||
new releases become available, and entries removed as releases become
|
||||
obsolete.
|
||||
@@ -0,0 +1,52 @@
|
||||
import pathlib
|
||||
from subprocess import PIPE, CalledProcessError
|
||||
from .shell import Shell
|
||||
|
||||
class PackageRepo:
|
||||
'''Represents a package repository. Most methods are wrappers of git commands.'''
|
||||
class UnknownCurrentBranchException(Exception): pass
|
||||
class InvalidBranchException(Exception): pass
|
||||
|
||||
def __init__(self, name, path):
|
||||
self.name = name
|
||||
self.path = pathlib.Path(path)
|
||||
self.sh = Shell(self.path)
|
||||
|
||||
def getNVR(self, commit='HEAD'):
|
||||
with self.sh.popen(['git', 'show', '{}:{}.spec'.format(commit, self.name)], stdout=PIPE) as specfile:
|
||||
nvr = self.sh.run('rpmspec --srpm -q --queryformat %{NVR} /dev/stdin', stdin=specfile.stdout)
|
||||
return tuple(nvr.stdout.strip().rsplit('-', maxsplit=2))
|
||||
|
||||
def checkoutBranch(self, branch, allow_remote=False):
|
||||
# allow_remote=True allows checking out a new remote-tracking branch
|
||||
if not allow_remote and not self.hasBranch(branch):
|
||||
raise self.InvalidBranchException(branch)
|
||||
self.sh.run_args(['git', 'checkout', branch], capture_output=False)
|
||||
|
||||
def fastForwardBranch(self, old, new):
|
||||
self.checkoutBranch(old)
|
||||
if not self.hasBranch(new):
|
||||
raise self.InvalidBranchException(new)
|
||||
self.sh.run_args(['git', 'merge', '--ff-only', new], capture_output=False)
|
||||
|
||||
def getActiveBranches(self):
|
||||
toplvl = pathlib.Path(self.path) / '../..'
|
||||
common = toplvl / 'projects/common'
|
||||
active_branches = common / 'lts/active-branches'
|
||||
with active_branches.open() as f:
|
||||
return [line.rstrip() for line in f]
|
||||
|
||||
def getCurrentBranch(self):
|
||||
try:
|
||||
head = self.sh.run('git symbolic-ref HEAD').stdout.strip()
|
||||
except CalledProcessError:
|
||||
raise self.UnknownCurrentBranchException
|
||||
|
||||
refs_heads = 'refs/heads/'
|
||||
assert head.startswith(refs_heads)
|
||||
head = head[len(refs_heads):]
|
||||
return head
|
||||
|
||||
def hasBranch(self, branch):
|
||||
p = self.sh.run_args(['git', 'rev-parse', 'refs/heads/'+branch], check=False)
|
||||
return p.returncode == 0
|
||||
@@ -0,0 +1,27 @@
|
||||
import subprocess, shlex
|
||||
|
||||
class Shell:
|
||||
# Default options passed to subprocess.run. May be customized per-instance.
|
||||
cwd = None
|
||||
check = True
|
||||
capture_output = True
|
||||
text = True
|
||||
|
||||
def __init__(self, cwd=None):
|
||||
if cwd: self.cwd = cwd
|
||||
|
||||
def run_args(self, args, **kwargs):
|
||||
kwargs1 = {
|
||||
'check': self.check,
|
||||
'capture_output': self.capture_output,
|
||||
'text': self.text,
|
||||
'cwd': self.cwd
|
||||
}
|
||||
kwargs1.update(kwargs)
|
||||
return subprocess.run(args, **kwargs1)
|
||||
|
||||
def run(self, cmd, **kwargs):
|
||||
return self.run_args(shlex.split(cmd), **kwargs)
|
||||
|
||||
def popen(self, args, **kwargs):
|
||||
return subprocess.Popen(args, cwd=self.cwd, **kwargs)
|
||||
+161
@@ -0,0 +1,161 @@
|
||||
#!/usr/bin/python
|
||||
import sys,argparse
|
||||
|
||||
from ltsutils.package_repo import PackageRepo
|
||||
|
||||
def log(msg, **kwargs):
|
||||
print(msg, file=sys.stderr)
|
||||
|
||||
def init_parser():
|
||||
main = argparse.ArgumentParser()
|
||||
main.add_argument('package_name', nargs=1)
|
||||
subparsers = main.add_subparsers(dest='command', metavar='command', required=True)
|
||||
|
||||
# Package maintenance commands
|
||||
p = subparsers.add_parser('prev-branch',
|
||||
help='show previous branch')
|
||||
p.add_argument('--checkout', action='store_true', help='checkout the branch')
|
||||
p = subparsers.add_parser('next-branch',
|
||||
help='show next branch')
|
||||
p.add_argument('--checkout', action='store_true', help='checkout the branch')
|
||||
p = subparsers.add_parser('current-branch',
|
||||
help='show current branch')
|
||||
p = subparsers.add_parser('is-same-version',
|
||||
help='return true if package version is the same as the given branch')
|
||||
p.add_argument('branch', nargs=1)
|
||||
p = subparsers.add_parser('fast-forward',
|
||||
help='fast-forward current branch to a newer branch')
|
||||
p.add_argument('branch', nargs=1)
|
||||
|
||||
# RPM build commands
|
||||
p = subparsers.add_parser('can-reuse-binary',
|
||||
help='check if binary from another branch can be used in current branch')
|
||||
p.add_argument('branch', nargs=1)
|
||||
|
||||
# Other commands
|
||||
p = subparsers.add_parser('prompt',
|
||||
help='prompt user to continue and return appropriate exit code')
|
||||
p = subparsers.add_parser('sanity-check',
|
||||
help='run sanity checks for data consistency')
|
||||
|
||||
return main
|
||||
|
||||
def prev_branch(args, repo):
|
||||
active_branches = repo.getActiveBranches()
|
||||
current = repo.getCurrentBranch()
|
||||
|
||||
i = active_branches.index(current)
|
||||
if i == 0:
|
||||
log('Already on oldest active branch.')
|
||||
return False
|
||||
|
||||
prev = active_branches[i-1]
|
||||
print(prev)
|
||||
if args.checkout:
|
||||
repo.checkoutBranch(prev, allow_remote=True)
|
||||
|
||||
def next_branch(args, repo):
|
||||
active_branches = repo.getActiveBranches()
|
||||
current = repo.getCurrentBranch()
|
||||
|
||||
i = active_branches.index(current)
|
||||
if i == len(active_branches)-1:
|
||||
log('Already on newest active branch.')
|
||||
return False
|
||||
|
||||
next_ = active_branches[i+1]
|
||||
print(next_)
|
||||
if args.checkout:
|
||||
repo.checkoutBranch(next_, allow_remote=False)
|
||||
|
||||
def current_branch(args, repo):
|
||||
current = repo.getCurrentBranch()
|
||||
print(current)
|
||||
|
||||
def is_same_version(args, other):
|
||||
current = repo.getCurrentBranch()
|
||||
other = args.branch[0]
|
||||
assert repo.hasBranch(other), 'Branch %s not found' % other
|
||||
|
||||
v1, v2 = [repo.getNVR('refs/heads/'+b)[1] for b in (current, other)]
|
||||
if v1 != v2:
|
||||
log('Current version {} does not match version {} on branch {}'.format(v1, v2, other))
|
||||
return v1 == v2
|
||||
|
||||
def fast_forward(args, repo):
|
||||
current = repo.getCurrentBranch()
|
||||
newer = args.branch[0]
|
||||
|
||||
log('Fast-forwarding {} to {}'.format(current, newer))
|
||||
repo.fastForwardBranch(current, newer)
|
||||
|
||||
def sanity_check(args, repo):
|
||||
ok = True
|
||||
# HEAD must point to a branch
|
||||
try:
|
||||
current = repo.getCurrentBranch()
|
||||
except PackageRepo.UnknownCurrentBranchException:
|
||||
log('Unknown current branch. Has a branch been checked out?')
|
||||
current = None
|
||||
ok = False
|
||||
|
||||
# active-branches file must not be empty
|
||||
active_branches = repo.getActiveBranches()
|
||||
if not len(active_branches):
|
||||
log('No active branches defined. Is active-branches file empty?')
|
||||
ok = False
|
||||
# current branch must be an active branch
|
||||
elif current and current not in active_branches:
|
||||
log('%s is not an active LTS branch.' % current)
|
||||
ok = False
|
||||
|
||||
return ok
|
||||
|
||||
def can_reuse_binary(args, repo):
|
||||
# Just compare versions for now
|
||||
# TODO: ABI compatibility testing
|
||||
current = repo.getCurrentBranch()
|
||||
older = args.branch[0]
|
||||
v1, v2 = [repo.getNVR('refs/heads/'+b)[1] for b in (older, current)]
|
||||
return v1 == v2
|
||||
|
||||
def prompt(args, repo):
|
||||
import selectors
|
||||
timeout = 60
|
||||
|
||||
while True:
|
||||
print('Continue? (y/N): ', end='', flush=True)
|
||||
with selectors.DefaultSelector() as sel:
|
||||
sel.register(sys.stdin, selectors.EVENT_READ)
|
||||
events = sel.select(timeout)
|
||||
if not len(events):
|
||||
print('Timed out after {}s.'.format(timeout))
|
||||
return False
|
||||
else:
|
||||
s = sys.stdin.readline().rstrip('\n')
|
||||
if s in ('Y', 'y', 'N', 'n', ''):
|
||||
break
|
||||
|
||||
if s in ('Y', 'y'):
|
||||
return True
|
||||
else:
|
||||
print('Cancelled.')
|
||||
return False
|
||||
|
||||
if __name__=='__main__':
|
||||
args = init_parser().parse_args()
|
||||
repo = PackageRepo(args.package_name[0], '.')
|
||||
|
||||
commands = {
|
||||
'prev-branch': prev_branch,
|
||||
'next-branch': next_branch,
|
||||
'current-branch': current_branch,
|
||||
'is-same-version': is_same_version,
|
||||
'fast-forward': fast_forward,
|
||||
'can-reuse-binary': can_reuse_binary,
|
||||
'prompt': prompt,
|
||||
'sanity-check': sanity_check,
|
||||
}
|
||||
ret = commands[args.command](args, repo)
|
||||
if ret is not None:
|
||||
exit(0 if ret else 1)
|
||||
@@ -0,0 +1,97 @@
|
||||
import unittest
|
||||
import os, pathlib, tempfile, logging
|
||||
import subprocess, functools
|
||||
|
||||
from ltsutils.package_repo import PackageRepo
|
||||
import ltsutils.shell
|
||||
|
||||
run = functools.partial(subprocess.run, check=True)
|
||||
|
||||
class Package:
|
||||
def __init__(self, name):
|
||||
self.name = name
|
||||
self.repo_url = 'https://github.com/clearlinux-pkgs/{}.git'.format(name)
|
||||
|
||||
class LTSUtilsTestCase(unittest.TestCase):
|
||||
toplvl = pathlib.Path('../../..')
|
||||
packages = toplvl / 'packages'
|
||||
|
||||
def cloneOrExtractRepo(self):
|
||||
tmpdir = pathlib.Path('/var/tmp/common-lts-test')
|
||||
tmpdir.mkdir(mode=0o700, exist_ok=True)
|
||||
tarball = tmpdir / '{}.tar.gz'.format(self.package.name)
|
||||
if tarball.exists():
|
||||
run(['tar', 'xf', tarball, '-C', self.workdir])
|
||||
else:
|
||||
run(['git', 'clone', self.package.repo_url, self.workdir])
|
||||
run(['tar', 'czf', tarball, '-C', self.workdir, '.'])
|
||||
|
||||
def setUp(self):
|
||||
self._tmpdir = tempfile.TemporaryDirectory(prefix='test-{}-'.format(self.package.name), dir=self.packages)
|
||||
self.workdir = pathlib.Path(self._tmpdir.name)
|
||||
self.cloneOrExtractRepo()
|
||||
self.repo = PackageRepo(self.package.name, self.workdir)
|
||||
|
||||
self._sh = ltsutils.shell.Shell(self.workdir)
|
||||
self._sh.capture_output = False
|
||||
|
||||
def sh(self, cmd):
|
||||
return self._sh.run(cmd)
|
||||
|
||||
def sh_stdout(self, cmd):
|
||||
return self._sh.run(cmd, capture_output=True).stdout.rstrip()
|
||||
|
||||
def tearDown(self):
|
||||
self._tmpdir.cleanup()
|
||||
|
||||
class PackageRepoTestCase(LTSUtilsTestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.L1 = self.package.L1
|
||||
self.L2 = self.package.L2
|
||||
self.sh('git branch L1 %s' % self.L1)
|
||||
self.sh('git branch L2 %s' % self.L2)
|
||||
|
||||
def testGetNVR(self):
|
||||
raise NotImplementedError
|
||||
|
||||
def testHasBranch(self):
|
||||
self.assertTrue(self.repo.hasBranch('L2'))
|
||||
self.assertFalse(self.repo.hasBranch('L3'))
|
||||
|
||||
def testCheckoutBranch(self):
|
||||
self.repo.checkoutBranch('L2')
|
||||
self.assertEqual(self.sh_stdout('git rev-parse HEAD'), self.L2)
|
||||
|
||||
self.assertRaises(PackageRepo.InvalidBranchException, self.repo.checkoutBranch, 'L3')
|
||||
|
||||
def testFastForward(self):
|
||||
self.repo.fastForwardBranch('L1', 'L2')
|
||||
self.assertEqual(self.sh_stdout('git rev-parse L1'), self.L2)
|
||||
self.assertEqual(self.sh_stdout('git rev-parse L2'), self.L2)
|
||||
|
||||
def testGetCurrentBranch(self):
|
||||
self.repo.checkoutBranch('L2')
|
||||
b = self.repo.getCurrentBranch()
|
||||
self.assertEqual(b, 'L2')
|
||||
|
||||
self.sh('git checkout --detach L2')
|
||||
self.assertRaises(PackageRepo.UnknownCurrentBranchException, self.repo.getCurrentBranch)
|
||||
|
||||
class TestNano(PackageRepoTestCase):
|
||||
package = Package('nano')
|
||||
package.L1 = '3dcfa09f5217eedf6ec7539af7e243655d3abdb6' # 3.2-54
|
||||
package.L2 = 'b8243dd54e8feb16a11474f848b8735f5591cf12' # 3.2-55
|
||||
|
||||
def testGetNVR(self):
|
||||
nvr = self.repo.getNVR(self.L2)
|
||||
self.assertEqual(nvr, ('nano', '3.2', '55'))
|
||||
|
||||
class TestMySQL_Python(PackageRepoTestCase):
|
||||
package = Package('MySQL-python')
|
||||
package.L1 = '386163d8fc9c857c7194c4e958374af4c4f071ed' # 1.2.5-31
|
||||
package.L2 = 'f85bc5ec2141384f45f224d4464a0a44a981a4d4' # 1.2.5-33
|
||||
|
||||
def testGetNVR(self):
|
||||
nvr = self.repo.getNVR(self.L2)
|
||||
self.assertEqual(nvr, ('MySQL-python', '1.2.5', '33'))
|
||||
@@ -8,6 +8,7 @@ Cheetah
|
||||
CherryPy
|
||||
Coin
|
||||
ConfigArgParse
|
||||
CopyQ
|
||||
Counter
|
||||
Cura
|
||||
CuraEngine
|
||||
@@ -22,6 +23,7 @@ FreeCAD
|
||||
FreeRDP
|
||||
GConf
|
||||
GitPython
|
||||
Gradio
|
||||
GtkD
|
||||
HeapDict
|
||||
ImageMagick
|
||||
@@ -152,6 +154,8 @@ R-R.oo
|
||||
R-R.utils
|
||||
R-R2Cuba
|
||||
R-R2HTML
|
||||
R-R2WinBUGS
|
||||
R-R2jags
|
||||
R-R6
|
||||
R-RANN
|
||||
R-RColorBrewer
|
||||
@@ -308,6 +312,7 @@ R-desc
|
||||
R-devtools
|
||||
R-dfoptim
|
||||
R-dichromat
|
||||
R-diffobj
|
||||
R-diffusionMap
|
||||
R-digest
|
||||
R-dimRed
|
||||
@@ -387,6 +392,9 @@ R-fitdistrplus
|
||||
R-flashClust
|
||||
R-flexmix
|
||||
R-flexsurv
|
||||
R-fontBitstreamVera
|
||||
R-fontLiberation
|
||||
R-fontquiver
|
||||
R-forcats
|
||||
R-foreach
|
||||
R-forecast
|
||||
@@ -407,6 +415,7 @@ R-gbm
|
||||
R-gbutils
|
||||
R-gclus
|
||||
R-gdata
|
||||
R-gdtools
|
||||
R-geepack
|
||||
R-geiger
|
||||
R-generics
|
||||
@@ -539,6 +548,7 @@ R-minpack.lm
|
||||
R-minqa
|
||||
R-mirt
|
||||
R-misc3d
|
||||
R-miscF
|
||||
R-miscTools
|
||||
R-mitools
|
||||
R-mixtools
|
||||
@@ -884,9 +894,11 @@ SPIRV-Headers
|
||||
SPIRV-Tools
|
||||
SQLAlchemy
|
||||
SQLAlchemy-Utils
|
||||
Sane
|
||||
Send2Trash
|
||||
Shapely
|
||||
SmartXbar
|
||||
Solaar
|
||||
Sphinx
|
||||
SuiteSparse
|
||||
Tempita
|
||||
@@ -986,6 +998,8 @@ apache-kafka
|
||||
apache-libcloud
|
||||
apache-maven
|
||||
apache-spark
|
||||
apache-tomcat
|
||||
apache-tomcat-dep
|
||||
apache-zookeeper
|
||||
apipkg
|
||||
appdirs
|
||||
@@ -993,6 +1007,7 @@ appstream
|
||||
appstream-glib
|
||||
apr
|
||||
apr-util
|
||||
arandr
|
||||
arc-theme
|
||||
argcomplete
|
||||
argon2
|
||||
@@ -1105,6 +1120,7 @@ boto
|
||||
boto3
|
||||
botocore
|
||||
bovo
|
||||
brasero
|
||||
breathe
|
||||
breeze
|
||||
breeze-gtk
|
||||
@@ -1293,7 +1309,7 @@ compat-icu4c-soname63
|
||||
compat-ilmbase-soname23
|
||||
compat-intel-gmmlib-soname1
|
||||
compat-ipset-soname10
|
||||
compat-ldc-soname84
|
||||
compat-iptables-soname0.1.0
|
||||
compat-libgit2-soname27
|
||||
compat-libical-soname2
|
||||
compat-libidn-soname11
|
||||
@@ -1307,15 +1323,12 @@ compat-llvm-soname6
|
||||
compat-llvm-soname7
|
||||
compat-mariadb-soname18
|
||||
compat-mpfr-soname4
|
||||
compat-nettle-soname6
|
||||
compat-opencv-soname32
|
||||
compat-opencv-soname33
|
||||
compat-opencv-soname34
|
||||
compat-openexr-soname23
|
||||
compat-openssl-soname-10
|
||||
compat-poppler-soname78
|
||||
compat-poppler-soname82
|
||||
compat-poppler-soname83
|
||||
compat-poppler-soname86
|
||||
compat-proj-soname13
|
||||
compat-protobuf-soname14
|
||||
compat-protobuf-soname15
|
||||
@@ -1507,6 +1520,7 @@ dmidecode
|
||||
dmlc-core
|
||||
dnf
|
||||
dnf-plugins-core
|
||||
dns-lexicon
|
||||
dnsmasq
|
||||
dnspython
|
||||
doc8
|
||||
@@ -1638,8 +1652,10 @@ flatpak-builder
|
||||
fldigi
|
||||
flex
|
||||
flink-dep
|
||||
fllog
|
||||
flmsg
|
||||
flnet
|
||||
flrig
|
||||
fltk
|
||||
fluidsynth
|
||||
folks
|
||||
@@ -1648,6 +1664,7 @@ fontconfig
|
||||
fontforge
|
||||
fonttools
|
||||
fossil
|
||||
fox
|
||||
frameworkintegration
|
||||
freedv
|
||||
freeglut
|
||||
@@ -1685,6 +1702,7 @@ gdl
|
||||
gdm
|
||||
geany
|
||||
geany-plugins
|
||||
geary
|
||||
gedit
|
||||
gegl
|
||||
gensim
|
||||
@@ -1785,6 +1803,7 @@ google-api-python-client
|
||||
google-apitools
|
||||
google-auth
|
||||
google-auth-httplib2
|
||||
google-pasta
|
||||
google-reauth
|
||||
googletest
|
||||
gparted
|
||||
@@ -1849,6 +1868,7 @@ hadoop-dep
|
||||
hamlib
|
||||
hammock
|
||||
haproxy
|
||||
hardinfo
|
||||
hardlink
|
||||
harfbuzz
|
||||
haskell-random
|
||||
@@ -1860,6 +1880,7 @@ helloworld
|
||||
helm
|
||||
help2man
|
||||
hexchat
|
||||
hexedit
|
||||
hgtools
|
||||
hicolor-icon-theme
|
||||
hiredis
|
||||
@@ -1908,6 +1929,7 @@ igt-gpu-tools
|
||||
ilmbase
|
||||
image
|
||||
imageio
|
||||
imagescan
|
||||
imagesize
|
||||
imapfilter
|
||||
imlib2
|
||||
@@ -1937,6 +1959,7 @@ ipaddress
|
||||
ipcalc
|
||||
ipdb
|
||||
ipdbplugin
|
||||
ipe
|
||||
iperf
|
||||
ipmctl
|
||||
ipmitool
|
||||
@@ -1968,6 +1991,7 @@ itsdangerous
|
||||
itstool
|
||||
iw
|
||||
ixion
|
||||
jack2
|
||||
jansson
|
||||
jaraco.functools
|
||||
jarn.viewdoc
|
||||
@@ -2081,6 +2105,7 @@ keditbookmarks
|
||||
keepalived
|
||||
keepassxc
|
||||
kemoticons
|
||||
kerberos
|
||||
kernel-config
|
||||
kernel-config-checker
|
||||
kernel-install
|
||||
@@ -2248,6 +2273,7 @@ ldb
|
||||
ldc
|
||||
ledmon
|
||||
lensfun
|
||||
leptonica
|
||||
less
|
||||
leveldb
|
||||
lftp
|
||||
@@ -2324,6 +2350,7 @@ libevent
|
||||
libexif
|
||||
libexttextcat
|
||||
libfabric
|
||||
libfakekey
|
||||
libfastjson
|
||||
libffi
|
||||
libffmpeg-stub
|
||||
@@ -2337,6 +2364,7 @@ libgcrypt
|
||||
libgd
|
||||
libgdata
|
||||
libgee
|
||||
libgeotiff
|
||||
libgepub
|
||||
libgfortran-avx
|
||||
libgfortran-compat-soname3
|
||||
@@ -2427,6 +2455,7 @@ libpeas
|
||||
libpfm
|
||||
libpinyin
|
||||
libpipeline
|
||||
libplacebo
|
||||
libpng
|
||||
libpsl
|
||||
libpthread-stubs
|
||||
@@ -2447,6 +2476,7 @@ libsamplerate
|
||||
libsass
|
||||
libseccomp
|
||||
libsecret
|
||||
libshout
|
||||
libsigc++
|
||||
libsigsegv
|
||||
libsmbios
|
||||
@@ -2471,7 +2501,6 @@ libthai
|
||||
libtheora
|
||||
libtirpc
|
||||
libtk-img
|
||||
libtomcrypt
|
||||
libtool
|
||||
libtorrent-rasterbar
|
||||
libudev0-shim
|
||||
@@ -2539,7 +2568,6 @@ linux-libc-headers
|
||||
linux-lts2017
|
||||
linux-lts2018
|
||||
linux-mainline
|
||||
linux-networktest
|
||||
linux-oracle
|
||||
linux-preempt-rt
|
||||
linux-steam-integration
|
||||
@@ -2591,6 +2619,8 @@ lz4
|
||||
lzlib
|
||||
lzo
|
||||
lzop
|
||||
m17n-db
|
||||
m17n-lib
|
||||
m4
|
||||
mailcommon
|
||||
mailimporter
|
||||
@@ -2604,7 +2634,6 @@ mariadb
|
||||
mash
|
||||
materia-theme
|
||||
matplotlib
|
||||
maven-dep
|
||||
mc
|
||||
mccabe
|
||||
mcelog
|
||||
@@ -2616,6 +2645,7 @@ meld
|
||||
memcached
|
||||
memkind
|
||||
memshrinker
|
||||
memtier_benchmark
|
||||
menu-cache
|
||||
mercurial
|
||||
mesa
|
||||
@@ -2640,6 +2670,7 @@ mkfontdir
|
||||
mkfontscale
|
||||
mkl-dnn
|
||||
mkosi
|
||||
mlocate
|
||||
mlt
|
||||
mobile-broadband-provider-info
|
||||
mock
|
||||
@@ -2692,59 +2723,131 @@ musl
|
||||
mutagen
|
||||
mutt
|
||||
mutter
|
||||
mvn-RoaringBitmap
|
||||
mvn-activation
|
||||
mvn-aether-core
|
||||
mvn-animal-sniffer
|
||||
mvn-antlr
|
||||
mvn-antlr4
|
||||
mvn-aopalliance
|
||||
mvn-apache
|
||||
mvn-apache-jar-resource-bundle
|
||||
mvn-apache-rat
|
||||
mvn-arpack_combined_all
|
||||
mvn-asm
|
||||
mvn-autolink
|
||||
mvn-avalon-framework
|
||||
mvn-avro
|
||||
mvn-backport-util-concurrent
|
||||
mvn-beanshell
|
||||
mvn-biz.aQute.bndlib
|
||||
mvn-bndlib
|
||||
mvn-breeze-macros_2.11
|
||||
mvn-breeze_2.11
|
||||
mvn-build-helper-maven-plugin
|
||||
mvn-buildnumber-maven-plugin
|
||||
mvn-byte-buddy
|
||||
mvn-cdi-api
|
||||
mvn-checker-compat-qual
|
||||
mvn-checkstyle
|
||||
mvn-chill-java
|
||||
mvn-chill_2.11
|
||||
mvn-classworlds
|
||||
mvn-codehaus-jackson
|
||||
mvn-commons-beanutils
|
||||
mvn-commons-chain
|
||||
mvn-commons-cli
|
||||
mvn-commons-codec
|
||||
mvn-commons-collections
|
||||
mvn-commons-compress
|
||||
mvn-commons-configuration
|
||||
mvn-commons-crypto
|
||||
mvn-commons-digester
|
||||
mvn-commons-httpclient
|
||||
mvn-commons-io
|
||||
mvn-commons-jxpath
|
||||
mvn-commons-lang
|
||||
mvn-commons-lang3
|
||||
mvn-commons-logging
|
||||
mvn-commons-math3
|
||||
mvn-commons-parent
|
||||
mvn-commons-validator
|
||||
mvn-compress-lzf
|
||||
mvn-curator
|
||||
mvn-decentxml
|
||||
mvn-dom4j
|
||||
mvn-doxia
|
||||
mvn-doxia-sitetools
|
||||
mvn-doxia-tools
|
||||
mvn-enforcer
|
||||
mvn-error_prone_annotations
|
||||
mvn-extra-enforcer-rules
|
||||
mvn-file-management
|
||||
mvn-flexmark-java
|
||||
mvn-genesis
|
||||
mvn-google
|
||||
mvn-google-collections
|
||||
mvn-httpclient
|
||||
mvn-gson
|
||||
mvn-guava
|
||||
mvn-guice
|
||||
mvn-hamcrest
|
||||
mvn-htrace
|
||||
mvn-httpcomponents-client
|
||||
mvn-httpcomponents-core
|
||||
mvn-icu4j
|
||||
mvn-j2objc-annotations
|
||||
mvn-jackrabbit
|
||||
mvn-jackson-annotations
|
||||
mvn-jackson-core
|
||||
mvn-jackson-databind
|
||||
mvn-jackson-module-paranamer
|
||||
mvn-jackson-module-scala_2.11
|
||||
mvn-jansi
|
||||
mvn-java-boot-classpath-detector
|
||||
mvn-javax-servlet
|
||||
mvn-javax.annotation-api
|
||||
mvn-javax.inject
|
||||
mvn-javax.servlet-api
|
||||
mvn-javax.ws.rs-api
|
||||
mvn-jaxb-api
|
||||
mvn-jaxb-impl
|
||||
mvn-jdom
|
||||
mvn-jersey
|
||||
mvn-jersey-apache-client4
|
||||
mvn-jersey-core
|
||||
mvn-jersey-json
|
||||
mvn-jetty
|
||||
mvn-jetty-parent
|
||||
mvn-jetty-util
|
||||
mvn-jna
|
||||
mvn-jsch
|
||||
mvn-jsch.agentproxy.connector-factory
|
||||
mvn-jsch.agentproxy.core
|
||||
mvn-jsch.agentproxy.pageant
|
||||
mvn-jsch.agentproxy.sshagent
|
||||
mvn-jsch.agentproxy.svnkit-trilead-ssh2
|
||||
mvn-jsch.agentproxy.usocket-jna
|
||||
mvn-jsch.agentproxy.usocket-nc
|
||||
mvn-json4s_2.11
|
||||
mvn-jsoup
|
||||
mvn-jsr250-api
|
||||
mvn-jsr305
|
||||
mvn-jsr311-api
|
||||
mvn-jtransforms
|
||||
mvn-junit
|
||||
mvn-kryo
|
||||
mvn-kxml2
|
||||
mvn-leveldbjni
|
||||
mvn-log4j
|
||||
mvn-logback-classic
|
||||
mvn-logback-core
|
||||
mvn-logkit
|
||||
mvn-lz4-java
|
||||
mvn-machinist_2.11
|
||||
mvn-macro-compat_2.11
|
||||
mvn-maven
|
||||
mvn-maven-aether-provider
|
||||
mvn-maven-archiver
|
||||
mvn-maven-artifact
|
||||
mvn-maven-artifact-manager
|
||||
mvn-maven-builder-support
|
||||
@@ -2753,6 +2856,7 @@ mvn-maven-compat
|
||||
mvn-maven-core
|
||||
mvn-maven-embedder
|
||||
mvn-maven-error-diagnostics
|
||||
mvn-maven-model
|
||||
mvn-maven-model-builder
|
||||
mvn-maven-monitor
|
||||
mvn-maven-parent
|
||||
@@ -2771,57 +2875,92 @@ mvn-maven-repository-metadata
|
||||
mvn-maven-resolver
|
||||
mvn-maven-resolver-provider
|
||||
mvn-maven-scm
|
||||
mvn-maven-scm-provider-svnjava
|
||||
mvn-maven-settings
|
||||
mvn-maven-shared
|
||||
mvn-maven-slf4j-provider
|
||||
mvn-maven-surefire
|
||||
mvn-maven-toolchain
|
||||
mvn-maven-wagon
|
||||
mvn-minlog
|
||||
mvn-mockito-core
|
||||
mvn-modello
|
||||
mvn-mojo-parent
|
||||
mvn-mojo-signature
|
||||
mvn-mvnplugins
|
||||
mvn-nekohtml
|
||||
mvn-netlib-java
|
||||
mvn-nexus-maven-plugins
|
||||
mvn-nexus-public
|
||||
mvn-objenesis
|
||||
mvn-openhtmltopdf-core
|
||||
mvn-openhtmltopdf-jsoup-dom-converter
|
||||
mvn-opencsv
|
||||
mvn-openhtmltopdf-parent
|
||||
mvn-org.apache.felix.bundlerepository
|
||||
mvn-org.eclipse.sisu.inject
|
||||
mvn-org.eclipse.sisu.plexus
|
||||
mvn-org.osgi.compendium
|
||||
mvn-org.osgi.core
|
||||
mvn-oro
|
||||
mvn-osgi-resource-locator
|
||||
mvn-oss-parents
|
||||
mvn-ow2
|
||||
mvn-paranamer
|
||||
mvn-parquet-mr
|
||||
mvn-pdfbox
|
||||
mvn-plexus
|
||||
mvn-plexus-archiver
|
||||
mvn-plexus-build-api
|
||||
mvn-plexus-cipher
|
||||
mvn-plexus-classworlds
|
||||
mvn-plexus-cli
|
||||
mvn-plexus-compiler
|
||||
mvn-plexus-containers
|
||||
mvn-plexus-i18n
|
||||
mvn-plexus-interactivity
|
||||
mvn-plexus-interpolation
|
||||
mvn-plexus-io
|
||||
mvn-plexus-languages
|
||||
mvn-plexus-resources
|
||||
mvn-plexus-utils
|
||||
mvn-plexus-velocity
|
||||
mvn-protobuf-java
|
||||
mvn-py4j
|
||||
mvn-pyrolite
|
||||
mvn-qdox
|
||||
mvn-sequence-library
|
||||
mvn-servlet-api
|
||||
mvn-shapeless_2.11
|
||||
mvn-siesta
|
||||
mvn-sisu
|
||||
mvn-sisu-maven-plugin
|
||||
mvn-slf4j
|
||||
mvn-snakeyaml
|
||||
mvn-snappy
|
||||
mvn-snappy-java
|
||||
mvn-sonatype-aether
|
||||
mvn-sonatype-plexus-sec-dispatcher
|
||||
mvn-spice-zapper
|
||||
mvn-spire_2.11
|
||||
mvn-sqljet
|
||||
mvn-sslext
|
||||
mvn-stream-lib
|
||||
mvn-struts
|
||||
mvn-svnkit
|
||||
mvn-trilead-ssh2
|
||||
mvn-tycho
|
||||
mvn-validation-api
|
||||
mvn-xbean-reflect
|
||||
mvn-velocity
|
||||
mvn-velocity-tools
|
||||
mvn-wagon
|
||||
mvn-weld-api
|
||||
mvn-weld-parent
|
||||
mvn-xbean
|
||||
mvn-xercesImpl
|
||||
mvn-xercesMinimal
|
||||
mvn-xml-apis
|
||||
mvn-xmlenc
|
||||
mvn-xmlunit
|
||||
mvn-xmlunit-core
|
||||
mvn-xz
|
||||
mxnet
|
||||
mycroft-core
|
||||
mypaint-brushes
|
||||
@@ -2918,6 +3057,7 @@ ocl-icd
|
||||
octave
|
||||
offlineimap
|
||||
oiio
|
||||
okteta
|
||||
okular
|
||||
olefile
|
||||
onig
|
||||
@@ -3065,6 +3205,7 @@ perl-AnyEvent-CacheDNS
|
||||
perl-Apache-Htpasswd
|
||||
perl-Apache-Session
|
||||
perl-App-cpanminus
|
||||
perl-AppConfig
|
||||
perl-Archive-Cpio
|
||||
perl-Archive-Extract
|
||||
perl-Archive-Tar-Wrapper
|
||||
@@ -3076,6 +3217,7 @@ perl-Audio-FLAC-Header
|
||||
perl-Audio-Musepack
|
||||
perl-Audio-Scan
|
||||
perl-Audio-Wav
|
||||
perl-Authen-NTLM
|
||||
perl-Authen-SASL
|
||||
perl-B-Hooks-EndOfScope
|
||||
perl-B-Hooks-OP-Check
|
||||
@@ -3131,6 +3273,7 @@ perl-Class-Singleton
|
||||
perl-Class-Std
|
||||
perl-Class-Std-Fast
|
||||
perl-Class-Tiny
|
||||
perl-Class-Trigger
|
||||
perl-Class-Unload
|
||||
perl-Class-XSAccessor
|
||||
perl-Clipboard
|
||||
@@ -3147,8 +3290,10 @@ perl-Config-Std
|
||||
perl-Config-Tiny
|
||||
perl-Context-Preserve
|
||||
perl-Convert-ASN1
|
||||
perl-Convert-Bencode
|
||||
perl-Convert-Binary-C
|
||||
perl-Cookie-Baker
|
||||
perl-Coro
|
||||
perl-Cpanel-JSON-XS
|
||||
perl-Crypt-DH-GMP
|
||||
perl-Crypt-Eksblowfish
|
||||
@@ -3224,6 +3369,7 @@ perl-Digest-CRC
|
||||
perl-Digest-HMAC
|
||||
perl-Digest-JHash
|
||||
perl-Digest-MD5
|
||||
perl-Digest-SHA1
|
||||
perl-Digest-SHA3
|
||||
perl-Dist-CheckConflicts
|
||||
perl-Domain-PublicSuffix
|
||||
@@ -3299,6 +3445,7 @@ perl-Geo-Distance
|
||||
perl-Geo-IP
|
||||
perl-Geo-IPfree
|
||||
perl-Getopt-Euclid
|
||||
perl-Getopt-Long-Descriptive
|
||||
perl-Getopt-Tabular
|
||||
perl-Git-Version-Compare
|
||||
perl-Glib
|
||||
@@ -3366,6 +3513,7 @@ perl-Importer
|
||||
perl-Inline
|
||||
perl-Inline-C
|
||||
perl-JSON
|
||||
perl-JSON-Any
|
||||
perl-JSON-MaybeXS
|
||||
perl-JSON-RPC
|
||||
perl-JSON-XS
|
||||
@@ -3452,12 +3600,17 @@ perl-MooX-Role-Parameterized
|
||||
perl-Moose
|
||||
perl-MooseX-Role-Parameterized
|
||||
perl-MooseX-Role-WithOverloading
|
||||
perl-MooseX-Types
|
||||
perl-MooseX-Types-JSON
|
||||
perl-MooseX-Types-LoadableClass
|
||||
perl-MooseX-Types-Path-Class
|
||||
perl-Mozilla-CA
|
||||
perl-Net-Bluetooth
|
||||
perl-Net-CIDR-Lite
|
||||
perl-Net-DBus
|
||||
perl-Net-DNS
|
||||
perl-Net-DNS-Resolver-Programmable
|
||||
perl-Net-Daemon
|
||||
perl-Net-HTTP
|
||||
perl-Net-IDN-Encode
|
||||
perl-Net-INET6Glue
|
||||
@@ -3470,6 +3623,7 @@ perl-Net-OpenID-Consumer
|
||||
perl-Net-OpenSSH
|
||||
perl-Net-SFTP-Foreign
|
||||
perl-Net-SMTP-SSL
|
||||
perl-Net-SSH2
|
||||
perl-Net-SSLeay
|
||||
perl-Net-Server
|
||||
perl-Net-UPnP
|
||||
@@ -3479,7 +3633,9 @@ perl-Number-Bytes-Human
|
||||
perl-Number-Compare
|
||||
perl-Number-Format
|
||||
perl-Number-WithError
|
||||
perl-Object-Accessor
|
||||
perl-Object-Signature
|
||||
perl-PDF-API2
|
||||
perl-PDF-Table
|
||||
perl-PDF-Writer
|
||||
perl-POD2-Base
|
||||
@@ -3513,6 +3669,7 @@ perl-PerlIO-eol
|
||||
perl-PerlIO-gzip
|
||||
perl-PerlIO-utf8_strict
|
||||
perl-PerlIO-via-Timeout
|
||||
perl-PlRPC
|
||||
perl-Pod-Constants
|
||||
perl-Pod-Coverage
|
||||
perl-Pod-LaTeX
|
||||
@@ -3533,6 +3690,7 @@ perl-Role-Basic
|
||||
perl-Role-Tiny
|
||||
perl-Roman
|
||||
perl-Router-Simple
|
||||
perl-SGLMSpm
|
||||
perl-SMTP-Server
|
||||
perl-SQL-Abstract
|
||||
perl-SQL-Translator
|
||||
@@ -3553,6 +3711,7 @@ perl-Specio
|
||||
perl-Spiffy
|
||||
perl-Statistics-Basic
|
||||
perl-Statistics-CaseResampling
|
||||
perl-Stream-Buffered
|
||||
perl-String-Approx
|
||||
perl-String-CamelCase
|
||||
perl-String-Escape
|
||||
@@ -3562,6 +3721,7 @@ perl-String-Random
|
||||
perl-String-Similarity
|
||||
perl-Struct-Dumb
|
||||
perl-Sub-Exporter
|
||||
perl-Sub-Exporter-ForMethods
|
||||
perl-Sub-Exporter-Progressive
|
||||
perl-Sub-Identify
|
||||
perl-Sub-Info
|
||||
@@ -3577,8 +3737,10 @@ perl-Sys-Mmap
|
||||
perl-Sys-SigAction
|
||||
perl-Sys-Statistics-Linux
|
||||
perl-System-Command
|
||||
perl-TAP-Formatter-HTML
|
||||
perl-TAP-Harness-Archive
|
||||
perl-Taint-Util
|
||||
perl-Template-Toolkit
|
||||
perl-Term-ProgressBar
|
||||
perl-Term-ReadKey
|
||||
perl-Term-ReadLine-Gnu
|
||||
@@ -3605,6 +3767,7 @@ perl-Test-LeakTrace
|
||||
perl-Test-LectroTest
|
||||
perl-Test-LongString
|
||||
perl-Test-Manifest
|
||||
perl-Test-Memory-Cycle
|
||||
perl-Test-MockModule
|
||||
perl-Test-MockTime
|
||||
perl-Test-More-UTF8
|
||||
@@ -3639,6 +3802,7 @@ perl-Text-Brew
|
||||
perl-Text-CSV
|
||||
perl-Text-CSV-Encoded
|
||||
perl-Text-CSV_XS
|
||||
perl-Text-CharWidth
|
||||
perl-Text-Diff
|
||||
perl-Text-FindIndent
|
||||
perl-Text-Format
|
||||
@@ -3648,12 +3812,14 @@ perl-Text-Levenshtein-Damerau
|
||||
perl-Text-Markdown
|
||||
perl-Text-PDF
|
||||
perl-Text-Quoted
|
||||
perl-Text-RecordParser
|
||||
perl-Text-Reform
|
||||
perl-Text-Roman
|
||||
perl-Text-TabularDisplay
|
||||
perl-Text-Template
|
||||
perl-Text-Trim
|
||||
perl-Text-Unidecode
|
||||
perl-Text-WrapI18N
|
||||
perl-Text-Wrapper
|
||||
perl-Tie-Cycle
|
||||
perl-Tie-IxHash
|
||||
@@ -3677,8 +3843,10 @@ perl-URI-Escape-XS
|
||||
perl-URI-Fetch
|
||||
perl-URI-Find
|
||||
perl-UUID-Tiny
|
||||
perl-Unicode-LineBreak
|
||||
perl-Unicode-Map
|
||||
perl-Variable-Magic
|
||||
perl-WWW-Form-UrlEncoded
|
||||
perl-WWW-Form-UrlEncoded-XS
|
||||
perl-WWW-RobotRules
|
||||
perl-X11-IdleTime
|
||||
@@ -3709,6 +3877,7 @@ perl-YAML
|
||||
perl-YAML-LibYAML
|
||||
perl-YAML-Syck
|
||||
perl-YAML-Tiny
|
||||
perl-accessors
|
||||
perl-aliased
|
||||
perl-autobox
|
||||
perl-autovivification
|
||||
@@ -3733,6 +3902,9 @@ phonon
|
||||
phonon-vlc
|
||||
phoronix-test-suite
|
||||
php
|
||||
php-APCu
|
||||
php-gnupg
|
||||
php-igbinary
|
||||
php-imagick
|
||||
php-mailparse
|
||||
php-redis
|
||||
@@ -3776,6 +3948,7 @@ ply
|
||||
plzip
|
||||
pm-graph
|
||||
pmdk
|
||||
po4a
|
||||
polkit
|
||||
polkit-kde-agent
|
||||
polkit-qt
|
||||
@@ -3859,7 +4032,6 @@ pygtk
|
||||
pygtkglext
|
||||
pyhs100
|
||||
pyinotify
|
||||
pykerberos
|
||||
pykwalify
|
||||
pylama
|
||||
pyliblzma
|
||||
@@ -3906,6 +4078,7 @@ python-crfsuite
|
||||
python-dateutil
|
||||
python-dateutil-legacypython
|
||||
python-designateclient
|
||||
python-distutils-extra
|
||||
python-dldt
|
||||
python-editor
|
||||
python-future
|
||||
@@ -3938,6 +4111,7 @@ python-polib
|
||||
python-rpm-legacypython
|
||||
python-saharaclient
|
||||
python-senlinclient
|
||||
python-slip
|
||||
python-slugify
|
||||
python-subunit
|
||||
python-swiftclient
|
||||
@@ -3967,7 +4141,6 @@ qbittorrent
|
||||
qca-qt5
|
||||
qemu
|
||||
qemu-guest-additions
|
||||
qemu-lite
|
||||
qgit
|
||||
qhull
|
||||
qml-box2d
|
||||
@@ -4048,6 +4221,7 @@ repoze.lru
|
||||
repoze.sphinx.autointerface
|
||||
repoze.who
|
||||
requests
|
||||
requests-file
|
||||
requests-kerberos
|
||||
requests-mock
|
||||
requests-ntlm
|
||||
@@ -4136,6 +4310,7 @@ setuptools_scm_git_archive
|
||||
setxkbmap
|
||||
sg3_utils
|
||||
shadow
|
||||
shapelib
|
||||
shared-mime-info
|
||||
sharutils
|
||||
shell
|
||||
@@ -4158,8 +4333,6 @@ snappy
|
||||
snitun
|
||||
snowballstemmer
|
||||
socat
|
||||
sof-crosstool-ng
|
||||
sof-newlib-xtensa
|
||||
solid
|
||||
sonnet
|
||||
sortedcontainers
|
||||
@@ -4221,6 +4394,7 @@ stow
|
||||
strace
|
||||
stress-ng
|
||||
stunnel
|
||||
su-exec
|
||||
subunit
|
||||
subunit2sql
|
||||
subversion
|
||||
@@ -4282,6 +4456,7 @@ terminado
|
||||
terminaltables
|
||||
terminology
|
||||
terminus-font
|
||||
tesseract
|
||||
test-generator
|
||||
testdisk
|
||||
testpath
|
||||
@@ -4315,6 +4490,7 @@ tinyrpc
|
||||
tinyxml2
|
||||
tiptop
|
||||
tk
|
||||
tldextract
|
||||
tmux
|
||||
todoist
|
||||
tokyocabinet
|
||||
@@ -4428,6 +4604,7 @@ wine
|
||||
winpdb
|
||||
wireless-regdb-master
|
||||
wireshark
|
||||
wmctrl
|
||||
woff2
|
||||
wok
|
||||
wol
|
||||
@@ -4534,6 +4711,7 @@ yasm
|
||||
yelp
|
||||
yelp-tools
|
||||
yelp-xsl
|
||||
ytnef
|
||||
yum
|
||||
yum-metadata-parser
|
||||
zVMCloudConnector
|
||||
|
||||
@@ -265,6 +265,7 @@ def main():
|
||||
zap_line_in_file_start(".spec", "%description dev")
|
||||
zap_line_in_file_start(".spec", "%description license")
|
||||
zap_line_in_file_start(".spec", "%package doc")
|
||||
zap_line_in_file_start(".spec", "cp -a ")
|
||||
|
||||
zap_line_in_file_start("b/Makefile", "URL =")
|
||||
zap_line_in_file_start("b/Makefile", "PKG_NAME :=")
|
||||
|
||||
+2
-2
@@ -145,9 +145,9 @@ if [ "$USE_KOJI" ]; then
|
||||
cp "$CLIENTCA" ~/.koji/clientca.crt
|
||||
cp "$SERVERCA" ~/.koji/serverca.crt
|
||||
|
||||
if [ ! -f /etc/koji.conf ]; then
|
||||
if [ ! -f ~/.koji/config ]; then
|
||||
echo "Setting up koji config . . ."
|
||||
sudo cp projects/common/conf/koji.conf /etc
|
||||
cp -f projects/common/conf/koji.conf ~/.koji/config
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user