msys2 / MINGW-packages

Package scripts for MinGW-w64 targets to build under MSYS2.
https://packages.msys2.org
BSD 3-Clause "New" or "Revised" License
2.27k stars 1.22k forks source link

Tar Error #15989

Open everstarone opened 1 year ago

everstarone commented 1 year ago

Description / Steps to reproduce the issue

Performing : $ tar xvJf qemu-7.2.0.tar.xz

Results with this error and exits.

tar: qemu-7.2.0/roms/edk2/EmulatorPkg/Unix/Host/X11IncludeHack: Cannot create symlink to ‘/opt/X11/include’: No such file or directory tar: Exiting with failure status due to previous errors

Expected behavior

Should unpack fully

Actual behavior

Results with this error and exits.

tar: qemu-7.2.0/roms/edk2/EmulatorPkg/Unix/Host/X11IncludeHack: Cannot create symlink to ‘/opt/X11/include’: No such file or directory tar: Exiting with failure status due to previous errors

Verification

Windows Version

Win 11 Pro - Version 10.0.22621 Build 22621

MINGW environments affected

Are you willing to submit a PR?

No response

mmuetzel commented 1 year ago

IIUC, targets for symlinks must exist on Windows before they can be created. (That is different, e.g., on Linux.) That sometimes causes unpacking a tarball to fail if it contains symlinks and it is unpacked in the "wrong" order. It sometimes helps to unpack a tarball twice.

heljkon commented 1 year ago

The complete tar-file content is processed and fully unpacked!

But the qemu tar file creates links to standard linux resources which may be used by linux specific make targets.

As @mmuetzel already stated:

targets for symlinks must exist on Windows before they can be created

tar emits a warning and doesn't exit with return code 0. This is expected for tar: warn, if anything unexpected happens.

In my opinion possible solutions are

sskras commented 1 year ago

I don't think the situation needs an additional package:

Better report this warning to the edk2 project, if you really need this cosmetics;

[2] Running Android games on Windows 10/11 using QEMU+Hyper-V+virglrenderer+Bliss OS [3] https://github.com/tianocore/edk2/commit/459eba01480e14ed15ddb88b515a921c34ee1b0b

sskras commented 1 year ago

@PHdrr commented yesterday:

Could you try with bsdtar?

On my MSYS2 it warns about the same:

x qemu-7.2.0/roms/edk2/EmulatorPkg/Unix/Host/
x qemu-7.2.0/roms/edk2/EmulatorPkg/Unix/Host/X11GraphicsWindow.c
x qemu-7.2.0/roms/edk2/EmulatorPkg/Unix/Host/PosixFileSystem.c
x qemu-7.2.0/roms/edk2/EmulatorPkg/Unix/Host/X11IncludeHack: Can't create 'qemu-7.2.0/roms/edk2/EmulatorPkg/Unix/Host/X11IncludeHack': No such file or directory
x qemu-7.2.0/roms/edk2/EmulatorPkg/Unix/Host/Pthreads.c
x qemu-7.2.0/roms/edk2/EmulatorPkg/Unix/Host/X64/
x qemu-7.2.0/roms/edk2/EmulatorPkg/Unix/Host/X64/Gasket.S
x qemu-7.2.0/roms/edk2/EmulatorPkg/Unix/Host/X64/SwitchStack.S

... Plus, it gives me other warnings:

  ...
x qemu-7.2.0/meson/test cases/frameworks/24 libgcrypt/
x qemu-7.2.0/meson/test cases/frameworks/24 libgcrypt/meson.build
x qemu-7.2.0/meson/test cases/frameworks/24 libgcrypt/libgcrypt_prog.c
x qemu-7.2.0/meson/test cases/frameworks/24 libgcrypt/test.json
x qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/
x qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/meson.build
x qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/
x qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/lib/
x qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/lib/libboost_python.so.0.3.0: Can't create 'qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/lib/libboost_python.so.0.3.0': No such file or directory
x qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/lib/libboost_regex.so.0.3.0: Can't create 'qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/lib/libboost_regex.so.0.3.0': No such file or directory
x qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/lib/boost_python-vc142-mt-gd-x64-0_3.lib: Can't create 'qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/lib/boost_python-vc142-mt-gd-x64-0_3.lib': No such file or directory
x qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/lib/boost_regex-vc142-mt-gd-x64-0_3.lib: Can't create 'qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/lib/boost_regex-vc142-mt-gd-x64-0_3.lib': No such file or directory
x qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/lib/boost_regex-vc142-mt-gd-x32-0_3.lib: Can't create 'qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/lib/boost_regex-vc142-mt-gd-x32-0_3.lib': No such file or directory
x qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/lib/boost_python-vc142-mt-gd-x32-0_3.lib: Can't create 'qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/lib/boost_python-vc142-mt-gd-x32-0_3.lib': No such file or directory
x qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/Cellar/
x qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/Cellar/boost-python/
x qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/Cellar/boost-python/0.3.0/
x qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/Cellar/boost-python/0.3.0/lib/
x qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/Cellar/boost-python/0.3.0/lib/libboost_python.so.0.3.0
x qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/Cellar/boost-python/0.3.0/lib/boost_python-vc142-mt-gd-x64-0_3.lib
x qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/Cellar/boost-python/0.3.0/lib/boost_python-vc142-mt-gd-x32-0_3.lib
  ...
x qemu-7.2.0/subprojects/libvhost-user/libvhost-user.h
x qemu-7.2.0/subprojects/libvhost-user/include/
x qemu-7.2.0/subprojects/libvhost-user/include/atomic.h
x qemu-7.2.0/subprojects/libvhost-user/include/compiler.h
x qemu-7.2.0/subprojects/libvhost-user/libvhost-user-glib.h
x qemu-7.2.0/qemu.nsi
bsdtar: Error exit delayed from previous errors.

... saying: Can't create 'qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/lib/<...>.lib': No such file or directory

While GNU tar is fine with that:

output excerpt with the same items ``` ... qemu-7.2.0/meson/test cases/frameworks/24 libgcrypt/ qemu-7.2.0/meson/test cases/frameworks/24 libgcrypt/meson.build qemu-7.2.0/meson/test cases/frameworks/24 libgcrypt/libgcrypt_prog.c qemu-7.2.0/meson/test cases/frameworks/24 libgcrypt/test.json qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/ qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/meson.build qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/ qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/lib/ qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/lib/libboost_python.so.0.3.0 qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/lib/libboost_regex.so.0.3.0 qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/lib/boost_python-vc142-mt-gd-x64-0_3.lib qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/lib/boost_regex-vc142-mt-gd-x64-0_3.lib qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/lib/boost_regex-vc142-mt-gd-x32-0_3.lib qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/lib/boost_python-vc142-mt-gd-x32-0_3.lib qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/Cellar/ qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/Cellar/boost-python/ qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/Cellar/boost-python/0.3.0/ qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/Cellar/boost-python/0.3.0/lib/ qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/Cellar/boost-python/0.3.0/lib/libboost_python.so.0.3.0 qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/Cellar/boost-python/0.3.0/lib/boost_python-vc142-mt-gd-x64-0_3.lib qemu-7.2.0/meson/test cases/frameworks/35 boost symlinks/boost/Cellar/boost-python/0.3.0/lib/boost_python-vc142-mt-gd-x32-0_3.lib ... ```

This might be actually a bug/issue in MSYS2 or bsdtar. Just not related to the original post.