debbuilder: Support layer-specific repo in sbuild
In [1], a mechanism was proposed to create layer-specific aptly binary repositories in addition to the existing `deb-local-binary`, to better separate the binary dependencies of each layer. For this new mechanism to work, new repositories must be dynamically taken into account by `sbuild`, by adding a new `--extra-repository` argument referring to the layer of the package being built, which is precisely what this change does. [1] https://review.opendev.org/c/starlingx/root/+/893095 Test Plan: PASS - Build packages of different layers successfully Story: 2010797 Task: 48698 Change-Id: Ib09ddf042584bc418c6a07773e920901961938ee Signed-off-by: Luan Nunes Utimura <LuanNunes.Utimura@windriver.com> (cherry picked from commit 25c1d0807b6142955f828469c06425ace43e317d)
This commit is contained in:
parent
7c44e4c2c7
commit
9694971db1
@ -442,7 +442,7 @@ class Debbuilder:
|
|||||||
response['msg'] = 'All idle chroots are refreshed'
|
response['msg'] = 'All idle chroots are refreshed'
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def assemble_extra_repo(self, snapshot_idx):
|
def assemble_extra_repo(self, snapshot_idx, repo=""):
|
||||||
repomgr_url = None
|
repomgr_url = None
|
||||||
if not os.path.exists(STX_LOCALRC):
|
if not os.path.exists(STX_LOCALRC):
|
||||||
self.logger.warning('stx-localrc does not exist')
|
self.logger.warning('stx-localrc does not exist')
|
||||||
@ -459,17 +459,21 @@ class Debbuilder:
|
|||||||
break
|
break
|
||||||
|
|
||||||
if repomgr_url:
|
if repomgr_url:
|
||||||
repomgr_url = ' '.join(['deb [trusted=yes]', repomgr_url + REPO_BUILD + '-' + snapshot_idx, self.attrs['dist'], 'main'])
|
if repo:
|
||||||
|
repomgr_url = f"deb [trusted=yes] {repomgr_url}{repo} {self.attrs['dist']} main"
|
||||||
|
else:
|
||||||
|
repomgr_url = ' '.join(['deb [trusted=yes]', repomgr_url + REPO_BUILD + '-' + snapshot_idx, self.attrs['dist'], 'main'])
|
||||||
self.logger.warning("The extra repository URL is %s", repomgr_url)
|
self.logger.warning("The extra repository URL is %s", repomgr_url)
|
||||||
return repomgr_url
|
return repomgr_url
|
||||||
|
|
||||||
def add_task(self, request_form):
|
def add_task(self, request_form):
|
||||||
response = check_request(request_form,
|
response = check_request(request_form,
|
||||||
['user', 'project', 'type', 'dsc', 'snapshot_idx'])
|
['user', 'project', 'type', 'dsc', 'snapshot_idx', 'layer'])
|
||||||
if response:
|
if response:
|
||||||
return response
|
return response
|
||||||
user = request_form['user']
|
user = request_form['user']
|
||||||
snapshot_index = request_form['snapshot_idx']
|
snapshot_index = request_form['snapshot_idx']
|
||||||
|
layer = request_form['layer']
|
||||||
|
|
||||||
chroot = '-'.join([self.attrs['dist'], self.attrs['arch'], user])
|
chroot = '-'.join([self.attrs['dist'], self.attrs['arch'], user])
|
||||||
if not self.has_chroot(chroot):
|
if not self.has_chroot(chroot):
|
||||||
@ -506,7 +510,12 @@ class Debbuilder:
|
|||||||
repo_url = self.assemble_extra_repo(snapshot_index)
|
repo_url = self.assemble_extra_repo(snapshot_index)
|
||||||
extra_repo = '--extra-repository=\'%s\'' % (repo_url)
|
extra_repo = '--extra-repository=\'%s\'' % (repo_url)
|
||||||
|
|
||||||
bcommand = ' '.join([bcommand, jobs, '-c', chroot, extra_repo,
|
layer_url = self.assemble_extra_repo(
|
||||||
|
snapshot_index, repo=f"deb-local-binary-{layer}"
|
||||||
|
)
|
||||||
|
layer_repo = '--extra-repository=\'%s\'' % (layer_url)
|
||||||
|
|
||||||
|
bcommand = ' '.join([bcommand, jobs, '-c', chroot, layer_repo, extra_repo,
|
||||||
'--build-dir', dsc_build_dir, dsc])
|
'--build-dir', dsc_build_dir, dsc])
|
||||||
self.logger.debug("Build command: %s" % (bcommand))
|
self.logger.debug("Build command: %s" % (bcommand))
|
||||||
self.attrs['state'] = 'works'
|
self.attrs['state'] = 'works'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user