#3205 Implant releasever into kiwi description
Merged 6 months ago by tkopecek. Opened 6 months ago by tkopecek.
tkopecek/koji issue3194  into  master

file modified
+2 -2
@@ -258,8 +258,8 @@ 

  

  .. code-block:: shell

  

-    $ koji add-group kiwi-build-tag kiwi

-    $ koji add-group-pkg kiwi-build-tag kiwi kiwi-cli

+    $ koji add-group kiwi-build-tag kiwi-build

+    $ koji add-group-pkg kiwi-build-tag kiwi-build kiwi-cli kiwi-systemdeps

  

  Another thing we need to ensure is that we're building in chroot and not in

  container.

file modified
+14 -3
@@ -1,11 +1,12 @@ 

+ PYVER_MAJOR := $(shell $(PYTHON) -c 'import sys; print(".".join(sys.version.split(".")[:1]))')

  PKGDIR = $(shell $(PYTHON) -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")/$(PACKAGE)

  

  CLIPLUGINDIR = $(PKGDIR)/koji_cli_plugins

  HUBPLUGINDIR = /usr/lib/koji-hub-plugins

  BUILDERPLUGINDIR = /usr/lib/koji-builder-plugins

- CLIFILES = $(wildcard cli/*.py)

- HUBFILES = $(wildcard hub/*.py)

- BUILDERFILES = $(wildcard builder/*.py)

+ CLIFILES_ALL = $(wildcard cli/*.py)

+ HUBFILES_ALL = $(wildcard hub/*.py)

+ BUILDERFILES_ALL = $(wildcard builder/*.py)

  CLICONFDIR = /etc/koji/plugins

  HUBCONFDIR = /etc/koji-hub/plugins

  BUILDERCONFDIR = /etc/kojid/plugins
@@ -13,6 +14,16 @@ 

  HUBCONFFILES = $(wildcard hub/*.conf)

  BUILDERCONFFILES = $(wildcard builder/*.conf)

  

+ ifeq ($(PYVER_MAJOR),2)

+ 	HUBFILES=$(filter-out hub/kiwi.py,$(HUBFILES_ALL))

+ 	BUILDERFILES=$(filter-out builder/kiwi.py,$(BUILDERFILES_ALL))

+ 	CLIFILES=$(filter-out cli/kiwi.py,$(CLIFILES_ALL))

+ else

+ 	HUBFILES=$(HUBFILES_ALL)

+ 	BUILDERFILES=$(BUILDERFILES_ALL)

+ 	CLIFILES=$(CLIFILES_ALL)

+ endif

+ 	

  _default:

  	@echo "nothing to make.  try make install"

  

file modified
+41 -44
@@ -1,11 +1,9 @@ 

  import glob

- # import json

  import os

  import xml.dom.minidom

  from fnmatch import fnmatch

  

  import koji

- from koji.util import joinpath, to_list

  from koji.tasks import ServerExit

  from __main__ import BaseBuildTask, BuildImageTask, BuildRoot, SCM

  
@@ -15,7 +13,6 @@ 

      _taskWeight = 4.0

  

      def get_nvrp(self, desc_path):

-         # TODO: update release in desc

          kiwi_files = glob.glob('%s/*.kiwi' % desc_path)

          if len(kiwi_files) != 1:

              raise koji.GenericError("Repo must contain only one .kiwi file.")
@@ -27,16 +24,11 @@ 

  

          name = image.getAttribute('name')

          version = None

-         release = None

          for preferences in image.getElementsByTagName('preferences'):

              try:

                  version = preferences.getElementsByTagName('version')[0].childNodes[0].data

              except Exception:

                  pass

-             try:

-                 release = preferences.getElementsByTagName('release')[0].childNodes[0].data

-             except Exception:

-                 release = None

          profile = None

          try:

              for p in image.getElementsByTagName('profiles')[0].getElementsByTagName('profile'):
@@ -47,7 +39,7 @@ 

              pass

          if not version:

              raise koji.BuildError("Description file doesn't contain preferences/version")

-         return name, version, release, profile

+         return name, version, profile

  

      def handler(self, target, arches, desc_url, desc_path, opts=None):

          target_info = self.session.getBuildTarget(target, strict=True)
@@ -100,18 +92,20 @@ 

  

          path = os.path.join(scmsrcdir, desc_path)

  

-         name, version, release, default_profile = self.get_nvrp(path)

+         name, version, default_profile = self.get_nvrp(path)

          if opts.get('profile') or default_profile:

              # package name is a combination of name + profile

              # in case profiles are not used, let's use the standalone name

              name = "%s-%s" % (name, opts.get('profile', default_profile))

  

          bld_info = {}

+         if opts.get('release'):

+             release = opts['release']

+         else:

+             release = self.session.getNextRelease({'name': name, 'version': version})

          if not opts['scratch']:

              bld_info = self.initImageBuild(name, version, release, target_info, opts)

              release = bld_info['release']

-         elif not release:

-             release = self.session.getNextRelease({'name': name, 'version': version})

  

          try:

              subtasks = {}
@@ -128,7 +122,7 @@ 

                      canfail.append(subtasks[arch])

              self.logger.debug("Got image subtasks: %r" % (subtasks))

              self.logger.debug("Waiting on image subtasks (%s can fail)..." % canfail)

-             results = self.wait(to_list(subtasks.values()), all=True,

+             results = self.wait(list(subtasks.values()), all=True,

                                  failany=True, canfail=canfail)

  

              # if everything failed, fail even if all subtasks are in canfail
@@ -190,8 +184,7 @@ 

      Methods = ['createKiwiImage']

      _taskWeight = 2.0

  

-     def prepareDescription(self, desc_path, name, release, repos):

-         # TODO: update release in desc

+     def prepareDescription(self, desc_path, name, version, repos):

          kiwi_files = glob.glob('%s/*.kiwi' % desc_path)

          if len(kiwi_files) != 1:

              raise koji.GenericError("Repo must contain only one .kiwi file.")
@@ -226,14 +219,14 @@ 

              image.appendChild(repo_node)

  

          image.setAttribute('name', name)

-         # TODO: release is part of version (major.minor.release)

-         # preferences = image.getElementsByTagName('preferences')[0]

-         # try:

-         #    preferences.getElementsByTagName('release')[0].childNodes[0].data = release

-         # except Exception:

-         #    rel_node = newxml.createElement('release')

-         #    rel_node.data = release

-         #    preferences.appendChild(rel_node)

+         preferences = image.getElementsByTagName('preferences')[0]

+         try:

+             preferences.getElementsByTagName('release-version')[0].childNodes[0].data = version

+         except IndexError:

+             releasever_node = newxml.createElement('release-version')

+             text = newxml.createTextNode(version)

+             releasever_node.appendChild(text)

+             preferences.appendChild(releasever_node)

  

          types = []

          for pref in image.getElementsByTagName('preferences'):
@@ -307,7 +300,7 @@ 

                            arch=arch,

                            task_id=self.id,

                            repo_id=repo_info['id'],

-                           install_group='kiwi',

+                           install_group='kiwi-build',

                            setup_dns=True,

                            bind_opts={'dirs': {'/dev': '/dev', }})

          broot.workdir = self.workdir
@@ -351,8 +344,14 @@ 

          self.logger.debug('BASEURL: %s' % baseurl)

          repos.append(baseurl)

  

+         if opts.get('make_prep'):

+             cmd = ['make', 'prep']

+             rv = broot.mock(['--cwd', os.path.join(broot.tmpdir(within=True), os.path.basename(scmsrcdir), desc_path), '--chroot', '--'] + cmd)

+             if rv:

+                 raise koji.GenericError("Preparation step failed")

+ 

          path = os.path.join(scmsrcdir, desc_path)

-         desc, types = self.prepareDescription(path, name, release, repos)

+         desc, types = self.prepareDescription(path, name, version, repos)

          self.uploadFile(desc)

  

          cmd = ['kiwi-ng']
@@ -368,11 +367,15 @@ 

          if rv:

              raise koji.GenericError("Kiwi failed")

  

-         # result = json.load(open(joinpath(broot.rootdir(), target_dir[1:], 'kiwi.result'), 'rb'))

-         # nosec comment - we will replace it with json ASAP

-         import pickle

-         result = pickle.load(open(joinpath(broot.rootdir(), target_dir[1:],  # nosec

-                                            'kiwi.result'), 'rb'))

+         # rename artifacts accordingly to release

+         bundle_dir = '/builddir/result/bundle'

+         cmd = ['kiwi-ng', 'result', 'bundle',

+                '--target-dir', target_dir,

+                '--bundle-dir', bundle_dir,

+                '--id', release]

+         rv = broot.mock(['--cwd', broot.tmpdir(within=True), '--chroot', '--'] + cmd)

+         if rv:

+             raise koji.GenericError("Kiwi failed")

  

          imgdata = {

              'arch': arch,
@@ -393,24 +396,18 @@ 

          if os.path.exists(root_log_path):

              self.uploadFile(root_log_path, remoteName="image-root.log")

  

-         # for type in types:

-         #     img_file = '%s.%s-%s.%s' % (name, version, arch, type)

-         #     self.uploadFile(os.path.join(broot.rootdir()), remoteName=img_file)

-         #     imgdata['files'].append(img_file)

-         for ftype in ('disk_format_image', 'installation_image'):

-             fdata = result.result_files.get(ftype)

-             if not fdata:

-                 continue

-             fpath = os.path.join(broot.rootdir(), fdata.filename[1:])

-             img_file = os.path.basename(fpath)

-             self.uploadFile(fpath, remoteName=os.path.basename(img_file))

-             imgdata['files'].append(img_file)

+         bundle_path = os.path.join(broot.rootdir(), bundle_dir[1:])

+         for fname in os.listdir(bundle_path):

+             self.uploadFile(os.path.join(bundle_path, fname), remoteName=fname)

+             imgdata['files'].append(fname)

  

          if not self.opts.get('scratch'):

              if False:

                  # should be used after kiwi update

-                 fpath = os.path.join(broot.rootdir(),

-                                      result['result_files']['image_packages'].filename[1:])

+                 fpath = os.path.join(

+                     bundle_path,

+                     next(f for f in imgdata['files'] if f.endswith('.packages')),

+                 )

                  hdrlist = self.getImagePackages(fpath)

              else:

                  cachepath = os.path.join(broot.rootdir(), 'var/cache/kiwi/dnf')

file modified
+6
@@ -18,6 +18,7 @@ 

      parser = OptionParser(usage=usage)

      parser.add_option("--scratch", action="store_true", default=False,

                        help="Perform a scratch build")

+     parser.add_option("--release", help="Release of the output image")

      parser.add_option("--repo", action="append",

                        help="Specify a repo that will override the repo used to install "

                             "RPMs in the image. May be used multiple times. The "
@@ -26,6 +27,8 @@ 

                        help="Do not display progress of the upload")

      parser.add_option("--kiwi-profile", action="store", default=None,

                        help="Select profile from description file")

+     parser.add_option("--make-prep", action="store_true", default=False,

+                       help="Run 'make prep' in checkout before starting the build")

      parser.add_option("--can-fail", action="store", dest="optional_arches",

                        metavar="ARCH1,ARCH2,...", default="",

                        help="List of archs which are not blocking for build "
@@ -50,6 +53,8 @@ 

                              for arch in options.optional_arches.split(',')

                              if arch],

          'profile': options.kiwi_profile,

+         'release': options.release,

+         'make_prep': options.make_prep,

      }

  

      arches = []
@@ -61,6 +66,7 @@ 

          arches=arches,

          desc_url=scm,

          desc_path=path,

+         repos=options.repo,

          **kwargs)

  

      if not goptions.quiet:

file modified
+4 -1
@@ -16,7 +16,7 @@ 

  

  @export

  def kiwiBuild(target, arches, desc_url, desc_path, optional_arches=None, profile=None,

-               scratch=False, priority=None):

+               scratch=False, priority=None, make_prep=False, repos=None, release=None):

      context.session.assertPerm('image')

      taskOpts = {

          'channel': 'image',
@@ -32,6 +32,9 @@ 

          'optional_arches': optional_arches,

          'profile': profile,

          'scratch': scratch,

+         'release': release,

+         'repos': repos or [],

+         'make_prep': make_prep,

      }

      return kojihub.make_task('kiwiBuild',

                               [target, arches, desc_url, desc_path, opts],

@ngompa So, release-version is same as version now. Is it ok or do you need to set it to something different (so have --releasever CLI option)?

/for testing it with the latest kiwi, I've included also json PR commits here - they'll not be a part of final PR/

Is that how it works for livecd, appliance, livemedia, and image tasks?

I want the final description and image to be versioned <version>.<datestamp>.<buildcount> while release-version is set to <version> where <version> is the Fedora release version and <datestamp> is that extra datestamp to indicate when it was built and <buildcount> is an incrementing integer for the day.

So, for example, a F36 image built today would get the following XML:

<version>36.20220105.1</version>
<release-version>36</version>

Does that make sense?

Is that how it works for livecd, appliance, livemedia, and image tasks?
Yes, for livemedia it is that iso name is <name>-<arch>-<version>-<release>.iso, while livemedia-creator is being run with same --releasever <version> and it is used only for bootloader modification (https://weldr.io/lorax/livemedia-creator.html).

Other tools don't modify this value as they're not doing bootstrapping and run installation directly.

More general problem is the absence of release field in kiwi descriptions. Current code path will just use autoincrement always. We can "set a standard" that version in input file would be "36-20220105.1", so it could be split to version-release or add release tag support to kiwi descriptions. In such case, releasever could be just version part. Other option is to supply --release via CLI which would mean that we can have more releases based on the same commit which is not that nice. Any other idea?

1 new commit added

  • kiwi: use separate --release
6 months ago

@ngompa I've updated code to use 'result bundle' command. It has following sideeffects:
1) You can use --release (or autoincrement) as for other image types
2) release is not reflected in description file, just in build
3) It overrides behaviour of #3198 as only files with use_for_bundle: true are renamed to NVR, so only subset of files which were in results are copied there. Anyway, it should be configurable on profile level. (@ignatenkobrain)

@tkopecek ad. 3 - please make sure that something like https://pagure.io/koji/pull-request/3200 is included so that we don't have issue with having different image types.

kiwi and kiwi-cli are the same package. I would just use kiwi-cli and kiwi-systemdeps here.

kiwi and kiwi-cli are the same package. I would just use kiwi-cli and kiwi-systemdeps here.

kiwi is here name of build group not the package. I'll rename it to kiwi-build so it is in consistence with 'rpm-build', 'image-build', etc.

rebased onto 12a1061

6 months ago

Metadata Update from @tkopecek:
- Pull-request tagged with: testing-ready

6 months ago

6 new commits added

  • fix packaging
  • kiwi: use separate --release
  • kiwi: Implant releasever into the kiwi description
  • Store disk_image type of kiwi files
  • Add support for kiwi.result.json
  • update kiwi deps
6 months ago

From the logs:

DEBUG util.py:542:  Executing command: ['kiwi-ng', 'result', 'bundle', '--target-dir', '/builddir/result/image', '--bundle-dir', '/builddir/result/bundle', '--id', '1'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;<mock-chroot>\\007"', 'PS1': '<mock-chroot> \\s-\\v\\$ ', 'LANG': 'C.UTF-8'} and shell False
DEBUG util.py:446:  [ INFO    ]: 10:57:54 | Reading runtime config file: '/etc/kiwi.yml'
DEBUG util.py:446:  [ INFO    ]: 10:57:54 | Bundle build results from /builddir/result/image
DEBUG util.py:446:  [ INFO    ]: 10:57:54 | Creating gdc-c9s-PrivateCloud.x86_64-0.0.0-1.raw
DEBUG util.py:446:  [ INFO    ]: 10:57:55 | --> XZ compressing
DEBUG util.py:446:  [ INFO    ]: 10:58:20 | --> Creating SHA 256 sum
DEBUG util.py:446:  [ INFO    ]: 10:58:21 | Creating gdc-c9s-PrivateCloud.x86_64-0.0.0-1.changes
DEBUG util.py:446:  [ INFO    ]: 10:58:21 | --> XZ compressing
DEBUG util.py:446:  [ INFO    ]: 10:58:21 | Creating gdc-c9s-PrivateCloud.x86_64-0.0.0-1.packages
DEBUG util.py:446:  [ INFO    ]: 10:58:21 | Creating gdc-c9s-PrivateCloud.x86_64-0.0.0-1.verified
DEBUG util.py:598:  Child return code was: 0
brain@powerful-box ~/P/g/g/gdc-c9s (c9s)> ll out/
total 915M
drwxr-xr-x. 1 root root   48 Jan 15 14:44 build/
-rw-r--r--. 1 root root 2.0M Jan 15 14:46 gdc-c9s.x86_64-0.0.0.changes
-rw-r--r--. 1 root root  18K Jan 15 14:46 gdc-c9s.x86_64-0.0.0.packages
-rw-r--r--. 1 root root 1.2G Jan 15 14:46 gdc-c9s.x86_64-0.0.0.raw
-rw-r--r--. 1 root root  644 Jan 15 14:46 gdc-c9s.x86_64-0.0.0.verified
-rw-r--r--. 1 root root  11K Jan 15 14:46 kiwi.result
-rw-r--r--. 1 root root  869 Jan 15 14:46 kiwi.result.json
brain@powerful-box ~/P/g/g/gdc-c9s (c9s)> ll bundle/
total 213M
-rw-r--r--. 1 root root 221K Jan 15 14:49 gdc-c9s.x86_64-0.0.0-1.changes.xz
-rw-r--r--. 1 root root  18K Jan 15 14:49 gdc-c9s.x86_64-0.0.0-1.packages
-rw-r--r--. 1 root root 212M Jan 15 14:49 gdc-c9s.x86_64-0.0.0-1.raw.xz
-rw-r--r--. 1 root root   96 Jan 15 14:49 gdc-c9s.x86_64-0.0.0-1.raw.xz.sha256
-rw-r--r--. 1 root root  644 Jan 15 14:49 gdc-c9s.x86_64-0.0.0-1.verified

I suppose in case of bundle we should just upload all files from the bundle's directory and not even think about parsing JSONs, etc.

What do you think?

That probably makes sense.

1 new commit added

  • kiwi: Collect all files from bundle directory
6 months ago

FTR I'm using this patchset and so far I haven't found any issues (though I did not go further than the scratch builds).

One thing that would be useful is to be able to run some a-la make tarball before kiwi is executed. I have 2 use-cases for it:

  1. Kiwi has support for injecting files into the image (it automatically adds root folder in there and you can load any tar file via the <archive name="…"/>). Sadly the second case really requires having tar file… which one does not normally want to commit to a git and use rather uncompressed/unarchived form of it. That's where make … would be useful.
  2. Whilst having automatically appended release number (-1, -2, …) is nice, I'd like to have date inside the name of the image without having to explicitly pass --release 20220117.123 in the command-line (I suppose I have to have it unique myself or it will fail).

And may be, 3rd one: Koji is wiping completely contents of the <repositories> section while I have a use-case where I want to have it there (with some more attributes like includeimage="true" profiles="Cloud" which is not possible to easily (at all) set via the command line. So basically running some make … after repos preparation that could modify a kiwi file could be handy.

And may be, 3rd one: Koji is wiping completely contents of the <repositories> section while I have a use-case where I want to have it there (with some more attributes like includeimage="true" profiles="Cloud" which is not possible to easily (at all) set via the command line. So basically running some make … after repos preparation that could modify a kiwi file could be handy.

You should probably not use the kiwi config for repos and build a repos package instead.

Kiwi has support for injecting files into the image (it automatically adds root folder in there and you can load any tar file via the <archive name="…"/>). Sadly the second case really requires having tar file… which one does not normally want to commit to a git and use rather uncompressed/unarchived form of it. That's where make … would be useful.

It can also unpack a root.tar.gz if it exists instead of a root directory.

@ngompa

It can also unpack a root.tar.gz if it exists instead of a root directory.

I know, but I want exactly opposite, for different profiles, use different root directory.

You should probably not use the kiwi config for repos and build a repos package instead.

Yes, that however does not help with the image-build-time repositories (which I want different per profile).

Yes, that however does not help with the image-build-time repositories (which I want different per profile).

Would that even work correctly, given that Koji constructs a repo to use as input for the build based on what you want anyway and internet access wouldn't be available inside the execution environment for non-Koji external repos anyway...

1 new commit added

  • remove unused code
6 months ago

FTR I'm using this patchset and so far I haven't found any issues (though I did not go further than the scratch builds).

One thing that would be useful is to be able to run some a-la make tarball before kiwi is executed. I have 2 use-cases for it:

  1. Kiwi has support for injecting files into the image (it automatically adds root folder in there and you can load any tar file via the <archive name="…"/>). Sadly the second case really requires having tar file… which one does not normally want to commit to a git and use rather uncompressed/unarchived form of it. That's where make … would be useful.

Hmm, it is interesting. Maybe it makes more sense to extend kiwi here? To allow also direct inclusion of directory? But it has some caveats (e.g. random ownership). So, maybe adding something like "make prep" makes sense (e.g. for modifying description file also not only creatign tarballs).

  1. Whilst having automatically appended release number (-1, -2, …) is nice, I'd like to have date inside the name of the image without having to explicitly pass --release 20220117.123 in the command-line (I suppose I have to have it unique myself or it will fail).

I would be different from other image commands. It needs to be unique. On the other hand you can run it without release after first one that day and it will be correctly autoincremented (same as for other images). So, if last builds has release "20220117.123" new one without explicit release will be "20220117.124". I would like to have this behaving the same way as other images.

And may be, 3rd one: Koji is wiping completely contents of the <repositories> section while I have a use-case where I want to have it there (with some more attributes like includeimage="true" profiles="Cloud" which is not possible to easily (at all) set via the command line. So basically running some make … after repos preparation that could modify a kiwi file could be handy.

Isn't CLIs --repo option enough here?

@tkopecek

So, maybe adding something like "make prep" makes sense (e.g. for modifying description file also not only creatign tarballs).

yep, that's what I was thinking about. It could cover any cases that I could come up with myself.

I would be different from other image commands. It needs to be unique. On the other hand you can run it without release after first one that day and it will be correctly autoincremented (same as for other images). So, if last builds has release "20220117.123" new one without explicit release will be "20220117.124". I would like to have this behaving the same way as other images.

So if I call --release 20220118 for the first time, it will be as-is and then if I call it again with same arguments, it will get .1?

Isn't CLIs --repo option enough here?

I don't think it can set includeimage="true" profiles="Cloud" kind of things. It is just a URL, without any properties. Probably if we allow passing those extra XML attributes, then it would be good… Or I'd even like to have some special option in XML like x-koji-keep="true" which won't remove it when rewriting those repositories, this would be probably ideal.

I don't think it can set includeimage="true" profiles="Cloud" kind of things. It is just a URL, without any properties. Probably if we allow passing those extra XML attributes, then it would be good… Or I'd even like to have some special option in XML like x-koji-keep="true" which won't remove it when rewriting those repositories, this would be probably ideal.

This, however, can be covered completely by the make prep :)

I would be different from other image commands. It needs to be unique. On the other hand you can run it without release after first one that day and it will be correctly autoincremented (same as for other images). So, if last builds has release "20220117.123" new one without explicit release will be "20220117.124". I would like to have this behaving the same way as other images.

So if I call --release 20220118 for the first time, it will be as-is and then if I call it again with same arguments, it will get .1?

Not in this case - such release is treated as an integer, so next one would be 20220119 (see https://pagure.io/koji/blob/master/f/hub/kojihub.py#_4415 getNextRelease logic)

Isn't CLIs --repo option enough here?

I don't think it can set includeimage="true" profiles="Cloud" kind of things. It is just a URL, without any properties. Probably if we allow passing those extra XML attributes, then it would be good… Or I'd even like to have some special option in XML like x-koji-keep="true" which won't remove it when rewriting those repositories, this would be probably ideal.

Ok, I'll give it a thought.

I don't think it can set includeimage="true" profiles="Cloud" kind of things. It is just a URL, without any properties. Probably if we allow passing those extra XML attributes, then it would be good… Or I'd even like to have some special option in XML like x-koji-keep="true" which won't remove it when rewriting those repositories, this would be probably ideal.

This, however, can be covered completely by the make prep :)

If I implement "make prep" I still would like to modify description after that. So, weeping repos would still happen.

If I implement "make prep" I still would like to modify description after that. So, weeping repos would still happen.

Can we have then make prep-pre and make prep-post or just execute make prep after we modify description?

1 new commit added

  • optional "make prep"
6 months ago

Metadata Update from @tkopecek:
- Pull-request untagged with: testing-ready

6 months ago

should not this be either executed within a desc_path (inside a buildroot) or at least get this info somehow inside?

Metadata Update from @mfilip:
- Pull-request tagged with: testing-ready

6 months ago

1 new commit added

  • fix working dir path
6 months ago

Commit facfdb0 fixes this pull-request

Pull-Request has been merged by tkopecek

6 months ago

Metadata Update from @mfilip:
- Pull-request tagged with: testing-done

6 months ago