system/acefile: Added (extract ACE 1.0 and 2.0 archives)

Signed-off-by: bedlam <dave@slackbuilds.org>

Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
B. Watson 2023-04-21 00:26:17 +01:00 committed by Willy Sudiarto Raharjo
parent ab8ebf14fc
commit 62347d01d3
No known key found for this signature in database
GPG key ID: 3F617144D7238786
6 changed files with 340 additions and 0 deletions

17
system/acefile/README Normal file
View file

@ -0,0 +1,17 @@
acefile (extract ACE 1.0 and 2.0 archives)
This single-file, pure python 3, no-dependencies implementation is
intended to be used as a library, but also provides a stand-alone
unace utility. As a mostly pure-python implementation, it is
significantly slower than native implementations, but more robust
against vulnerabilities.
This implementation supports up to version 2.0 of the ACE archive
format, including the EXE, DELTA, PIC and SOUND modes of ACE 2.0,
password protected archives and multi-volume archives. It does not
support writing to archives. It is an implementation from scratch,
based on the 1998 document titled "Technical information of the
archiver ACE v1.2" by Marcel Lemke, using unace 2.5 and WinAce 2.69 by
Marcel Lemke as reference implementations.
Unlike the standard unace, this is Free Software (BSD-licensed).

View file

@ -0,0 +1,107 @@
.\" Man page generated from reStructuredText.
.
.
.nr rst2man-indent-level 0
.
.de1 rstReportMargin
\\$1 \\n[an-margin]
level \\n[rst2man-indent-level]
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
-
\\n[rst2man-indent0]
\\n[rst2man-indent1]
\\n[rst2man-indent2]
..
.de1 INDENT
.\" .rstReportMargin pre:
. RS \\$1
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
. nr rst2man-indent-level +1
.\" .rstReportMargin post:
..
.de UNINDENT
. RE
.\" indent \\n[an-margin]
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
.nr rst2man-indent-level -1
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "ACEFILE-UNACE" 1 "2023-04-18" "0.6.12" "SlackBuilds.org"
.SH NAME
acefile-unace \- extract/view/test ACE archives
.\" RST source for acefile-unace(1) man page. Convert with:
.
.\" rst2man.py acefile-unace.rst > acefile-unace.1
.
.SH SYNOPSIS
.sp
\fBacefile\-unace\fP [\fB\-h\fP] [\fB\-V\fP] [\fB\-x\fP | \fB\-t\fP | \fB\-l\fP |
\fB\-\-extract\fP | \fB\-\-test\fP | \fB\-\-list\fP | \fB\-\-headers\fP] [\fB\-d\fP
\fIdirectory\fP] [\fB\-p\fP \fIpassword\fP] [\fB\-r\fP | \fB\-\-restore\fP] [\fB\-b\fP |
\fB\-batch\fP] [\fB\-\-debug\fP] \fBace\-file\fP [\fBfile(s)\fP]
.SH DESCRIPTION
.sp
\fBacefile\-unace\fP extracts, views, or tests \fBACE\fP archives, such
as those created by WinACE. It does not allow creating or writing to
archives.
.sp
\fBacefile\-unace\fP supports up to version 2.0 of the ACE archive
format, including the EXE, DELTA, PIC and SOUND modes of ACE 2.0,
password protected archives, and multi\-volume archives.
.sp
The \fBace\-file\fP argument is required. With no options, the default is to
extract all files within \fBace\-file\fP to the current directory.
.SH OPTIONS
.INDENT 0.0
.TP
.B \-h\fP,\fB \-\-help
Show built\-in help message and exit.
.TP
.B \-V\fP,\fB \-\-version
Show version number and exit.
.TP
.B \-\-extract\fP,\fB \-x
Extract files in archive (default).
.TP
.B \-\-test\fP,\fB \-t
Test archive integrity.
.TP
.B \-\-list\fP,\fB \-l
List files in archive.
.TP
.B \-\-headers
Dump archive headers.
.TP
.BI \-d \ directory\fR,\fB \ \-\-basedir \ directory
Base directory for extraction (default: current directory).
.TP
.BI \-p \ password\fR,\fB \ \-\-password \ password
Password for decryption.
.TP
.B \-r\fP,\fB \-\-restore
Restore mtime/atime, attribs and ntsecurity on extraction.
.TP
.B \-b\fP,\fB \-\-batch
Suppress all interactive input.
.TP
.B \-v\fP,\fB \-\-verbose
Be more verbose.
.TP
.B \-\-debug
Show mode transitions and expose internal exceptions.
.UNINDENT
.SH COPYRIGHT
.sp
See the file /usr/doc/acefile\-unace\-0.6.12/LICENSE.md for license information.
.SH AUTHORS
.sp
\fBacefile\-unace\fP was written by Daniel Roethlisberger.
.sp
This man page written for the SlackBuilds.org project
by B. Watson, and is licensed under the WTFPL.
.SH SEE ALSO
.sp
The acefile\-unace homepage: \fI\%https://pypi.org/project/acefile/\fP
.\" Generated by docutils manpage writer.
.

View file

@ -0,0 +1,97 @@
.. RST source for acefile-unace(1) man page. Convert with:
.. rst2man.py acefile-unace.rst > acefile-unace.1
.. |version| replace:: 0.6.12
.. |date| date::
=============
acefile-unace
=============
------------------------------
extract/view/test ACE archives
------------------------------
:Manual section: 1
:Manual group: SlackBuilds.org
:Date: |date|
:Version: |version|
SYNOPSIS
========
**acefile-unace** [**-h**] [**-V**] [**-x** | **-t** | **-l** |
**--extract** | **--test** | **--list** | **--headers**] [**-d**
*directory*] [**-p** *password*] [**-r** | **--restore**] [**-b** |
**-batch**] [**--debug**] **ace-file** [**file(s)**]
DESCRIPTION
===========
**acefile-unace** extracts, views, or tests **ACE** archives, such
as those created by WinACE. It does not allow creating or writing to
archives.
**acefile-unace** supports up to version 2.0 of the ACE archive
format, including the EXE, DELTA, PIC and SOUND modes of ACE 2.0,
password protected archives, and multi-volume archives.
The **ace-file** argument is required. With no options, the default is to
extract all files within **ace-file** to the current directory.
OPTIONS
=======
-h, --help
Show built-in help message and exit.
-V, --version
Show version number and exit.
--extract, -x
Extract files in archive (default).
--test, -t
Test archive integrity.
--list, -l
List files in archive.
--headers
Dump archive headers.
-d directory, --basedir directory
Base directory for extraction (default: current directory).
-p password, --password password
Password for decryption.
-r, --restore
Restore mtime/atime, attribs and ntsecurity on extraction.
-b, --batch
Suppress all interactive input.
-v, --verbose
Be more verbose.
--debug
Show mode transitions and expose internal exceptions.
COPYRIGHT
=========
See the file /usr/doc/acefile-unace-|version|/LICENSE.md for license information.
AUTHORS
=======
**acefile-unace** was written by Daniel Roethlisberger.
This man page written for the SlackBuilds.org project
by B. Watson, and is licensed under the WTFPL.
SEE ALSO
========
The acefile-unace homepage: https://pypi.org/project/acefile/

View file

@ -0,0 +1,90 @@
#!/bin/bash
# Slackware build script for acefile
# Written by B. Watson (urchlay@slackware.uk)
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
# Note: the only ACE archives I could actually find in the wild to
# test this with are the Windows and MS-DOS ACE self-extracting exes,
# found here:
# https://web.archive.org/web/20170619234433/http://www.winace.com/files/wace269i.exe
# linked to from https://web.archive.org/web/20170619234433fw_/http://www.winace.com/news.html
# https://web.archive.org/web/2005if_/http://www.winace.com:80/files/ace26.exe
# $ file wace269i.exe
# wace269i.exe: PE32 executable (GUI) Intel 80386, for MS Windows, Petite compressed, ACE self-extracting archive
# $ file ace26.exe
# ace26.exe: MS-DOS executable, LE executable for MS-DOS, PMODE/W DOS extender, UPX compressed, ACE self-extracting archive
# acefile-unace extracts both of the exes just fine.
# Also, I used dosbox to run the ms-dos ace.exe and created an .ace
# archive with 2 small images in it, and it worked fine, too. Although
# only if the files were small (probably a limitation of the shareware
# ms-dos ace). With large files, acefile-unace and regular unace
# both show CRC errors... but sometimes regular unace will segfault
# instead.
# ...it seems to work just fine. As the README says, it's a bit slow to
# extract, but AFAICT the results are correct.
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=acefile
VERSION=${VERSION:-0.6.12}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
fi
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
# No CFLAGS or LIBDIRSUFFIX needed here. It uses -O3 for the native code,
# and I don't see a way to change it.
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
\! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
python3 setup.py install --root=$PKG
strip $PKG/usr/lib*/python*/site-packages/*.so
# man page by SlackBuild author.
mkdir -p $PKG/usr/man/man1
gzip -9c < $CWD/acefile-unace.1 > $PKG/usr/man/man1/acefile-unace.1.gz
PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
mkdir -p $PKGDOC
cp -a *.md $PKGDOC
cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE

View file

@ -0,0 +1,10 @@
PRGNAM="acefile"
VERSION="0.6.12"
HOMEPAGE="https://pypi.org/project/acefile/"
DOWNLOAD="https://files.pythonhosted.org/packages/source/a/acefile/acefile-0.6.12.tar.gz"
MD5SUM="a1bb0e5e711e876c12833a305664917a"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
EMAIL="urchlay@slackware.uk"

19
system/acefile/slack-desc Normal file
View file

@ -0,0 +1,19 @@
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description.
# Line up the first '|' above the ':' following the base package name, and
# the '|' on the right side marks the last column you can put a character in.
# You must make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
acefile: acefile (extract ACE 1.0 and 2.0 archives)
acefile:
acefile: This single-file, pure python 3, no-dependencies implementation is
acefile: intended to be used as a library, but also provides a stand-alone
acefile: unace utility. As a mostly pure-python implementation, it is
acefile: significantly slower than native implementations, but more robust
acefile: against vulnerabilities.
acefile:
acefile:
acefile:
acefile: