-
-
Notifications
You must be signed in to change notification settings - Fork 376
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
makeself "--posix" argument in tar for increased compatibility actually broke compatibility in Alpine Linux (BusyBox) #240
Comments
Yikes. Okay, I'm remembering #238 and looking at these...
...and I'm wondering what The Right Thing to do is. |
This is not the first time the limitations of busybox tools have affected makeself. Readers will recall the problem with busybox |
@megastep this can probably be fixed this like you did in #228; i.e., testing that Edit: changed |
Upon further investigation, it seems even previous versions are incompatible with busybox' |
@ntx-ben you are correct. I guess it would be more appropriate to say makeself on Alpine remains broken since d22a2da because I note that the |
For those wondering why we append rather than create:
--- https://pubs.opengroup.org/onlinepubs/9699919799/utilities/xargs.html#tag_20_158_03 tldr; the command length limit is allowed to force multiple |
If we never really had it working properly on Busybox, I'd be OK with keeping the increased POSIX compatibility instead as it is more important. Also this is mostly for generating the archives - it's not a big ask to create the archives on something else than Busybox, as long as they can be extracted there. |
I'm still debugging, but this also appears to have broken extraction on Solaris 10 and 11 |
I'd be surprised if it broke extraction rather than just the creation of archives? Can you confirm? Solaris support is a must for me. |
Testing with the following example from #238 executed in the root of the makeself git repo:
I see the following result on a vanilla Solaris 11 x86 system:
|
Was the archive also created on the Solaris system? |
No, it's created on an OS X system, 10.15.7:
|
I'm seeing the same fundamental result when generating the same |
Mmmh I wonder if some of the other formats might be more compatible, such as ustar, cpio or shar |
I've extracted the original tarball (generated on OS X) on Solaris, and have been experimenting with it. It lists just fine, although there are obvious extensions, like the
Each file goes on like that, it looks like Solaris doesn't support those type extensions. With the exception of the extra directory the files look fine, but tar's exit code is 1, signifying that it failed. This triggers the failure branch in the |
I've tested with |
@rbcrwd What's the tar being used on the Solaris host doing the extraction? |
The last time I went looking, iirc, there's no easy way to get a generic Recent GNU and FreeBSD
The OpenSolaris References: |
On the extraction side, my test Solaris VMs are using whatever's first in the default
[edit] |
Any thoughts on how to proceed? I've a modified local version that suffices for now, but am curious what next steps are, and how I can help. I recognize that the purpose behind the |
The goal is to have Makeself produce archives that are as cross-platform as possible. So if POSIX doesn't achieve that goal, we might need to investigate what works better in practice, like maybe |
Understood on the goal and compatibility, I'm just curious what OSes were targeted (if any particular ones) with the |
@rbcrwd the OS in question was FreeBSD --- that story is told here: #238 tldr; IMHO, busybox has a demonstrated history (ahem, #228) of twiddling commands into POSIX non-compliance. I'm sure there's good reasons for doing so, but the result is fundamentally at odds with the goals of the Makeself project. @megastep please correct me here if I'm overreaching. |
Correct; to be fair we can always find some way to work around weird command syntax in the scripts, however it's more of a problem if the raw tar data is not handled by the OS. So that's the limitation we need to work around here so we can produce tar archives that can be extracted on the wide variety of Unix/Linux/BSD systems targeted, ideally without requiring third-party tools to be installed (such as GNU tar) |
Thanks for the context. What about using Given that the Finally, sorry for apparently hijacking a BusyBox ticket. I allowed myself to rush too much. |
@rbcrwd how do you feel about a |
I could work with specifying the tar format, but unless you have outside context, the details in #238 don't seem to support the assertion that a For that matter, since at least 2003 GNU tar has defaulted to the GNU format. That seems to imply that Linux->BSD All that to say: sure, I'm good with a |
@rbcrwd point taken; I'm also going to put the test units through my FreeBSD VM --- I'd be similarly surprised if the libarchive |
As a side note, we might be able to run CI tests on FreeBSD via this action: https://github.com/marketplace/actions/freebsd-vm One of the things I'd like to test for is portability between OSes, so maybe export a test archive as an artifact on Linux and try to extract it on a FreeBSD VM. |
Using makeself v2.4.3 in Alpine Linux 3.12:
Reverting to v2.4.2 for use in Alpine Linux.
The text was updated successfully, but these errors were encountered: