From: "Owen W. Taylor" <otaylor(a)fishsoup.net>
Configure pagure to allow a flatpaks/ namespace, and koji and MBS
to allow building from it.
When we sync package ownership to Koji, the f29-flatpaks tag (which has
the Flatpak containers) tag gets everything in the flatpaks/ namespace,
while the f29-modular tag gets everything in modules/ *and* flatpaks/,
since modules can be built from either.
Signed-off-by: Owen W. Taylor <otaylor(a)fishsoup.net>
---
.../backend/files/koji-sync-listener.py | 2 +-
roles/bodhi2/backend/tasks/main.yml | 2 +-
.../backend/templates/owner-sync-pagure.j2 | 55 +++++++++++--------
roles/distgit/pagure/templates/pagure.cfg | 3 +-
roles/koji_builder/templates/kojid.conf | 2 +
roles/mbs/common/templates/config.py | 10 +++-
6 files changed, 45 insertions(+), 29 deletions(-)
diff --git a/roles/bodhi2/backend/files/koji-sync-listener.py b/roles/bodhi2/backend/files/koji-sync-listener.py
index 02b0e3f18..cbcbd280f 100644
--- a/roles/bodhi2/backend/files/koji-sync-listener.py
+++ b/roles/bodhi2/backend/files/koji-sync-listener.py
@@ -23,7 +23,7 @@ def handle(content):
sys.stdout.flush()
# XXX If you modify this taglist. Please also modify the other copy in
# bodhi2/backend/tasks/main.yml
- taglist = 'f30 f30-container f30-modular f29 f28 f29-container f28-container f28-docker f29-modular f28-modular epel7 dist-6E-epel module-package-list modular'
+ taglist = 'f30 f30-container f30-modular f29 f28 f29-container f29-flatpak f28-container f28-docker f29-modular f28-modular epel7 dist-6E-epel module-package-list modular'
cmd = [
'/usr/local/bin/owner-sync-pagure',
'--package', package,
diff --git a/roles/bodhi2/backend/tasks/main.yml b/roles/bodhi2/backend/tasks/main.yml
index 114c113d5..e65feb417 100644
--- a/roles/bodhi2/backend/tasks/main.yml
+++ b/roles/bodhi2/backend/tasks/main.yml
@@ -166,7 +166,7 @@
# bodhi2/backend/files/koji-sync-listener.py
# This cronjob runs only once a day. The listener script runs reactively.
cron: name="owner-sync" minute="15" hour="4" user="root"
- job="/usr/local/bin/lock-wrapper owner-sync '/usr/local/bin/owner-sync-pagure f30 f30-container f30-modular f29 f28 f29-container f28-container f28-docker f29-modular f28-modular epel7 dist-6E-epel module-package-list modular'"
+ job="/usr/local/bin/lock-wrapper owner-sync '/usr/local/bin/owner-sync-pagure f30 f30-container f30-modular f29 f28 f29-container f29-flatpak f28-container f28-docker f29-modular f28-modular epel7 dist-6E-epel module-package-list modular'"
cron_file=update-koji-owner
when: inventory_hostname.startswith('bodhi-backend01') and env == "production"
tags:
diff --git a/roles/bodhi2/backend/templates/owner-sync-pagure.j2 b/roles/bodhi2/backend/templates/owner-sync-pagure.j2
index 89d7a371c..e558a26b9 100755
--- a/roles/bodhi2/backend/templates/owner-sync-pagure.j2
+++ b/roles/bodhi2/backend/templates/owner-sync-pagure.j2
@@ -65,6 +65,7 @@ if not PDC_URL.endswith('/'):
PDC_TYPES = {
'rpms': 'rpm',
'modules': 'module',
+ 'flatpaks': 'flatpak',
'container': 'container',
}
@@ -118,26 +119,29 @@ def get_options():
return opts
-def get_namespace_and_version_from_tag(tag):
+def get_namespaces_and_version_from_tag(tag):
if 'container' in tag:
- namespace = 'container'
+ namespaces = ['container']
version = tag.split('-')[0].split('f')[1]
elif 'docker' in tag:
- namespace = 'container'
+ namespaces = ['container']
version = tag.split('-')[0].split('f')[1]
elif 'modular' in tag:
- namespace = 'modules'
+ namespaces = ['flatpaks', 'modules']
try:
version = tag.split('-')[0].split('f')[1]
except IndexError:
version = RAWHIDE
+ elif 'flatpak' in tag:
+ namespaces = ['flatpaks']
+ version = tag.split('-')[0].split('f')[1]
elif tag == 'module-package-list':
# See https://pagure.io/releng/issue/6663
# and https://pagure.io/fm-orchestrator/issue/333
- namespace = 'rpms'
+ namespaces = ['rpms']
version = RAWHIDE
else:
- namespace = 'rpms'
+ namespaces = ['rpms']
if tag.startswith('epel'):
version = tag.split('epel')[1]
elif tag.startswith('f'):
@@ -378,15 +382,15 @@ if __name__ == '__main__':
unique_namespaces = set()
tag_info = {}
for tag in tags:
- namespace, version = get_namespace_and_version_from_tag(tag)
+ namespaces, version = get_namespaces_and_version_from_tag(tag)
branch, arches = get_branch_and_arches(tag, version)
tag_info[tag] = {
- 'namespace': namespace,
+ 'namespaces': namespaces,
'version': version,
'branch': branch,
'arches': arches
}
- unique_namespaces.add(namespace)
+ unique_namespaces.update(namespaces)
# Get all the project to branch mappings for every namespace
namespace_to_projects = {}
@@ -401,24 +405,27 @@ if __name__ == '__main__':
if verbose:
print('Determining which projects have the namespace "{0}" and '
'branch "{1}"'.format(namespace, tag))
- namespace = info['namespace']
+ namespaces = info['namespace']
pkgs = []
- for pkg, branches in namespace_to_projects[namespace].items():
- if info['branch'] in branches or tag == ('f' + RAWHIDE):
- # The tag and branch names are the same for "old-style" branches
- pkgs.append(pkg)
- elif namespace == 'modules':
- # Add modules to f27-modular-updates even if their only branch is '2.4'
- pkgs.append(pkg)
-
- # This is a special project, not in dist-git, but which needs to be in
- # the package list.
- if namespace == 'rpms':
- pkgs.append('module-build-macros')
+ for namespace in namespaces:
+ for pkg, branches in namespace_to_projects[namespace].items():
+ if info['branch'] in branches or tag == ('f' + RAWHIDE):
+ # The tag and branch names are the same for "old-style" branches
+ pkgs.append(pkg)
+ elif namespace in ('modules', 'flatpaks'):
+ # Add modules to f27-modular-updates even if their only branch is '2.4'
+ # Similarly, flatpaks will be built into f29-flatpak-updates-candidate
+ # if they use the f29 runtime, even from master or stream branches.
+ pkgs.append(pkg)
+
+ # This is a special project, not in dist-git, but which needs to be in
+ # the package list.
+ if namespace == 'rpms':
+ pkgs.append('module-build-macros')
if verbose:
print('Setting the Koji ownership and package list on packages in '
- 'the tag "{0}" and namespace "{1}" and for arches "{2}"'
- .format(tag, namespace, ', '.join(info['arches'])))
+ 'the tag "{0}" and namespaces "{1}" and for arches "{2}"'
+ .format(tag, namespaces, ', '.join(info['arches'])))
set_koji_ownership(tag, pkgs, info['arches'], verbose=verbose)
diff --git a/roles/distgit/pagure/templates/pagure.cfg b/roles/distgit/pagure/templates/pagure.cfg
index 4b8e00b1b..46173b9b6 100644
--- a/roles/distgit/pagure/templates/pagure.cfg
+++ b/roles/distgit/pagure/templates/pagure.cfg
@@ -211,7 +211,7 @@ LOGGING = {
# Configuration item that are specific for this odd pagure instance
ENABLE_UI_NEW_PROJECTS = False
-ALLOWED_PREFIX = ['rpms', 'modules', 'container', 'tests']
+ALLOWED_PREFIX = ['rpms', 'modules', 'flatpaks', 'container', 'tests']
EXCLUDE_GROUP_INDEX = ['packager']
PRIVATE_PROJECTS = False
FEDMSG_NOTIFICATIONS = True
@@ -235,6 +235,7 @@ ACLS = {
REQUIRED_GROUPS = {
'container/*': ['packager'],
+ 'flatpaks/*': ['packager'],
'modules/*': ['packager'],
'rpms/*': ['packager'],
}
diff --git a/roles/koji_builder/templates/kojid.conf b/roles/koji_builder/templates/kojid.conf
index 9fbb8216a..a1eb32338 100644
--- a/roles/koji_builder/templates/kojid.conf
+++ b/roles/koji_builder/templates/kojid.conf
@@ -81,6 +81,7 @@ allowed_scms=
!src.stg.fedoraproject.org:/forks/*
!src.stg.fedoraproject.org:/cgit/*
src.stg.fedoraproject.org:/container/*:false
+ src.stg.fedoraproject.org:/flatpaks/*:false
src.stg.fedoraproject.org:/git/rpms/*:false:fedpkg,sources
!src.stg.fedoraproject.org:/git/*
!pkgs.stg.fedoraproject.org:/fork/*
@@ -88,6 +89,7 @@ allowed_scms=
!pkgs.stg.fedoraproject.org:/cgit/*
!pkgs.stg.fedoraproject.org:/git/*
pkgs.stg.fedoraproject.org:/container/*:false
+ pkgs.stg.fedoraproject.org:/flatpaks/*:false
pkgs.stg.fedoraproject.org:/rpms/*:false:fedpkg,sources
pkgs.stg.fedoraproject.org:/*:false:fedpkg,sources
src.stg.fedoraproject.org:/*:false:fedpkg,sources
diff --git a/roles/mbs/common/templates/config.py b/roles/mbs/common/templates/config.py
index 47f3ad790..4ed7a9ef2 100644
--- a/roles/mbs/common/templates/config.py
+++ b/roles/mbs/common/templates/config.py
@@ -140,7 +140,10 @@ class ProdConfiguration(BaseConfiguration):
PDC_URL = 'https://pdc.stg.fedoraproject.org/rest_api/v1'
SCMURLS = ['git+https://src.stg.fedoraproject.org/modules/',
'https://src.stg.fedoraproject.org/modules/',
- 'https://src.stg.fedoraproject.org/git/modules/']
+ 'https://src.stg.fedoraproject.org/git/modules/',
+ 'git+https://src.stg.fedoraproject.org/flatpaks/',
+ 'https://src.stg.fedoraproject.org/flatpaks/',
+ 'https://src.stg.fedoraproject.org/git/flatpaks/']
{% else %}
KOJI_PROFILE = 'production'
@@ -155,7 +158,10 @@ class ProdConfiguration(BaseConfiguration):
PDC_URL = 'https://pdc.fedoraproject.org/rest_api/v1'
SCMURLS = ['git+https://src.fedoraproject.org/modules/',
'https://src.fedoraproject.org/modules/',
- 'https://src.fedoraproject.org/git/modules/']
+ 'https://src.fedoraproject.org/git/modules/',
+ 'git+https://src.fedoraproject.org/flatpaks/',
+ 'https://src.fedoraproject.org/flatpaks/',
+ 'https://src.fedoraproject.org/git/flatpaks/']
{% endif %}
RESOLVER = "db"
--
2.20.1