After merging #251 and trying to update the 7zip package in #396 we have experienced that the approach of bootstrapping is complex and difficult to understand for not experienced Conan users.
In a more practical way, we think the most pragmatic approach for this would be to host the 7zip sources in a different format (.tgz for example) and upload them to a generic repository so those are publicly available and use that in the 7zip recipe.
I think it avoids "duplicating" the recipe and having an artificial build require inside a build require that basically have the same executables.
We already did something similar when the server hosting the bzip2 sources went off and the creation of packages was broken. Sources were hosted temporarily in https://bintray.com/conan/Sources
cc/ @madebr
Sources can be uploaded to a generic repository in Artifactory or we could use this mirror https://github.com/kornelski/7z
for now, let's recompress 7z sources into tar.bzip2 format and upload to the bintray. it's simple and harmless solution for now.
let's also add some FAQ entry describing why and how to do it.
why not .zip which is the most universal and easy to unzip format?
IMO tar is huge winner over zip, as it correctly preserves permissions, file metadata (e.g. date/time), symbolic links. it's also standard compare to zip having compatibility issues across different implementations. there are other zip limitations as well (maximum file size, maximum file name length, maximum number of entries, etc.).
Is the duplication of the command to build 7zip really a problem?
lzma and 7zDec.I prefer using the original sources more then an alternative archive.
It is simply a matter of trust.
Your example of bzip2 is different because there, it was a matter of hosting the same sources (with same hashes) on an alternative server.
The actual Linux port of 7zip for Linux is p7zip.
Of which the most recent version is lagging behind: it's on 16.02
Thanks for sharing your thoughts. Instead of uploading the sources we can use the mirror as it seems to be a reasonable alternative and accepted by the community. We can get the zip files from the github repo:
We will add a comment in the recipe & conandata explaining this issue. Thanks!
To be honest, I don't understand what were are actually discussing here. The pull request #396 seems to only contain responses from experienced Conan users. Where is the statement
we have experienced that the approach of bootstrapping is complex and difficult to understand for not experienced Conan users
Where is this coming from?
And I strongly agree with @madebr. We should only mirror sources if absolutely necessary. Mostly because of trust, but also slightly because of continuous maintenance.
lzma_sdk is published by the 7-zip project as an own thing: https://7-zip.org/sdk.html
So it might be useful that we have it packaged. And if we have it packaged why not just use it for bootstrapping?
yeah, further studying, it seems like there is no duplication. there is a compression algorithm (lzma), and there is archive format (7z), both requiring its own library to decode/extract.
it's analogous to DEFLATE (compression method) and zip (file format), or gzip and tar which used in conjunction. or playing multimedia analogy, codec (e.g. h264) and container (e.g. MP4).
also, cross-building is not a simple thing on its own and may appear to be complex for not experienced users (even for experienced), that's true. it may seem strange that the same package may appear twice (or more times) with different settings during the cross-building, and you have to bootstrap the things. but it's the only way to do things correctly, unfortunately. e.g. to build GCC you need to build it twice, and it's an official recommendation (e.g. cited by LFS project).
therefore, packaging 7zip and lzma as two packages makes total sense for me.
Taking a look at this issue again, it seems that the lzma_sdk has entity as a library on its own. So let's stick to the build require approach instead of using the mirror for 7zip. Thanks everyone for the feedback!
Most helpful comment
Is the duplication of the command to build 7zip really a problem?
396 will create 2 binaries in the bin directory:
lzmaand7zDec.I prefer using the original sources more then an alternative archive.
It is simply a matter of trust.
Your example of bzip2 is different because there, it was a matter of hosting the same sources (with same hashes) on an alternative server.
The actual Linux port of 7zip for Linux is p7zip.
Of which the most recent version is lagging behind: it's on 16.02