Hi Paul,
On Tue, Jan 19, 2021 at 04:26:06PM +0000, Paul Barker wrote:
> If a path is specified for the internal wic working directory using
> the -w/--workdir argument then it must not already exist. Re-using a
> previous workdir could easily result in rootfs and intermediate files
> from a previous build being added to the current image.
>
> Signed-off-by: Paul Barker <[email protected]>
> ---
> scripts/lib/wic/plugins/imager/direct.py | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/scripts/lib/wic/plugins/imager/direct.py
> b/scripts/lib/wic/plugins/imager/direct.py
> index b329568c7a..f107e60089 100644
> --- a/scripts/lib/wic/plugins/imager/direct.py
> +++ b/scripts/lib/wic/plugins/imager/direct.py
> @@ -62,7 +62,7 @@ class DirectPlugin(ImagerPlugin):
>
> self.name = "%s-%s" %
> (os.path.splitext(os.path.basename(wks_file))[0],
> strftime("%Y%m%d%H%M"))
> - self.workdir = options.workdir or tempfile.mkdtemp(dir=self.outdir,
> prefix='tmp.wic.')
> + self.workdir = self.setup_workdir(options.workdir)
> self._image = None
> self.ptable_format = self.ks.bootloader.ptable
> self.parts = self.ks.partitions
> @@ -78,6 +78,16 @@ class DirectPlugin(ImagerPlugin):
> self._image = PartitionedImage(image_path, self.ptable_format,
> self.parts, self.native_sysroot)
>
> + def setup_workdir(self, workdir):
> + if workdir:
> + if os.path.exists(workdir):
> + raise WicError("Internal workdir '%s' specified in wic
> arguments already exists!" % (workdir))
> +
> + os.makedirs(workdir)
> + return workdir
os.makedirs already raises a FileExistsError if the directory exists, so
probably:
try:
os.makedirs(workdir)
return workdir
except FileExistsError:
raise WicError("Internal workdir '%s' specified in wic arguments already
exists!" % (workdir))
That being said, you could even not catch the exception? Don't know how
"normal" exceptions are handled by Yocto and the loggers though.
c.f. https://docs.python.org/3/library/os.html#os.makedirs the exist_ok
parameter.
> + else:
> + return tempfile.mkdtemp(dir=self.outdir, prefix='tmp.wic.')
> +
Since the if condition returns in all cases, the indentation here is not
needed.
All nitpicks so not a blocker.
Cheers,
Quentin
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#146999):
https://lists.openembedded.org/g/openembedded-core/message/146999
Mute This Topic: https://lists.openembedded.org/mt/79955372/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-