On 2026/09/07 16:25, George Koehler wrote:
> I attach a port of archivers/7zip 26.03 with extra features.  This
> port is a work in progress.  It can't be imported as is, because it
> replaces p7zip, but I didn't make the diff to add a quirk and change
> deps from p7zip to 7zip.
> 
> I am running it on amd64 and macppc, but "7z b" is claiming 8 cpus on
> my 4-core amd64, so I might want to fix that.
> 
> On Wed, 2 Sep 2026 15:56:39 +0100
> Stuart Henderson <[email protected]> wrote:
> 
> > On 2026/09/01 22:33, George Koehler wrote:
> > > My port of 24.08 also downloaded the linux-arm binary to install its
> > > HTML manual.  (The HTML came with the binaries, but not with the
> > > source.)  This is less than useful, because browsers like firefox
> > > don't unveil /usr/local/share/doc/7zip/MANUAL/ (but I was reading it
> > > with emacs M-x eww).  A manpage would be more useful.
> > 
> > they generally do have /usr/local/share unveiled read-only?
> 
> I didn't know that.  It just works to paste
> /usr/local/share/doc/7zip/MANUAL/start.htm into my firefox-esr.
> 
> The extra features in this port (versus the port of 26.02) are:
>  - Change version to 26.03, released last week.
>  - Set MAINTAINER to me.
>  - Change the build from standalone 7zz to modular 7z.
>  - Move RAR decompression to a module in the 7zip-rar subpackage.
>  - Add 7zCon.sfx for self-extracting archives.
>  - Add patches for pledge(), adapted from our p7zip patches.
>  - Add the HTML manual.
>  - Add a new 7z.1 manual.
> 
> The hard part is the RAR decompression.  I want to decompress .rar,
> but other people want to avoid the unRAR license restriction.  Other
> distros in repology like to build 7zip with DISABLE_RAR_COMPRESS=1
> which disables the unRAR code: you can list a .rar file, and you might
> extract a file if it wasn't compressed, but you can't decompress.
> 
> The .rar handler can decompress with codecs from an external module.
> p7zip built Rar.so, and we put it in our p7zip-rar subpackage.  Debian
> patched 7zip to add a makefile for Rar.so, and put it in their
> 7zip-rar package.  I tried to follow Debian's example, but my Rar.so
> (for 7zip 24.08) failed to extract my old .rar file.  It got,
> "ERROR: Unsupported Method", while writing a partly correct extract.
> 
> Last Friday, I found the problem.  I forgot CRC.o.  My Rar.so had the
> files from DISABLE_RAR_COMPRESS=1, plus some .o files to fill in
> undefined symbols, but missed CRC.o.  It needs CRC.o to run a C++
> global constructor to initialize crc32.  Some .rar files don't need
> crc32, but mine did.  CRC.o fixed it.  (I checked by extracting the
> same .rar with archivers/unrar and archivers/libarchive.)
> 
> Upstream defines 4 variants of 7z:
> 
>    7z    modular
>    7zz   standalone, all formats
>    7za   standalone, fewer formats
>    7zr   standalone, fewest formats
> 
> Debian builds all 4, though their 7zz can't decompress .rar because
> it doesn't load Rar.so.  My port builds only 7z, and symlinks 7z[zar]
> to 7z.  I build 7z so Rar.so can be a module.  If I didn't want a
> module, I would build 7zz and link 7z to 7zz.  Either way, this
> port would replace p7zip, as this 7z replaces p7zip's 7z.
> 
> The port now fetches 2 files, 7z2603-src.tar.xz and
> 7z2603-linux-arm.tar.xz; there is no DIST_SUBDIR.  It installs the
> HTML manual from linux-arm.  I also wrote a new 7z.1, just so I can
> "man 7z" instead of opening the HTML; but my 7z.1 lists fewer than
> half of 7z's many flags.
> 
> --gkoehler


pkg/PLIST-main:
needs @conflict p7zip-*

pkg/PLIST-rar:
@pkgpath should be archivers/p7zip,-rar
I believe it needs @conflict p7zip-rar-* for the upgrade path to work

files/CodecRar_makefile.gcc:
wrong perms, shouldn't be executable

${WRKSRC}/../../CPP/Windows/System.cpp:
try _SC_NPROCESSORS_ONLN instead of _SC_NPROCESSORS_CONF (line 197)

I don't really like DISTNAME-htm, it makes it look a bit like DISTNAME
is a subpackaged variable with a nonexistent package name, I'd prefer
something more obviously separate like DIST_HTML. I'd prefer to allow
that file to be extracted normally (i.e. don't do EXTRACT_ONLY)
to allow patching those files if needed - could use EXTRACT_CASES
to only extract the MANUALS dir if wanted (can be cribbed from
sysutils/firmware/bwfm/Makefile)

Reply via email to