diff options
author | Hunter Sezen <orbea@fredslev.dk> | 2018-11-26 21:13:11 +0000 |
---|---|---|
committer | Willy Sudiarto Raharjo <willysr@slackbuilds.org> | 2018-12-01 07:27:46 +0700 |
commit | d0a86a675fcde2c2eceb4734a379eb886b2fef0b (patch) | |
tree | 659f4f75a962ea16407dc633bc2e681e7415170e | |
parent | 42b072662123ff0dd58a4fcccf53d3bb63be4498 (diff) |
system/maxcso: Added (Fast cso compressor).
Signed-off-by: David Spencer <idlemoor@slackbuilds.org>
-rw-r--r-- | system/maxcso/README | 2 | ||||
-rw-r--r-- | system/maxcso/flags.patch | 76 | ||||
-rw-r--r-- | system/maxcso/install.patch | 35 | ||||
-rw-r--r-- | system/maxcso/man.patch | 204 | ||||
-rw-r--r-- | system/maxcso/maxcso.SlackBuild | 110 | ||||
-rw-r--r-- | system/maxcso/maxcso.info | 10 | ||||
-rw-r--r-- | system/maxcso/slack-desc | 19 |
7 files changed, 456 insertions, 0 deletions
diff --git a/system/maxcso/README b/system/maxcso/README new file mode 100644 index 0000000000000..b6085f8a9edca --- /dev/null +++ b/system/maxcso/README @@ -0,0 +1,2 @@ +A fast ISO to CSO compression program for use with PSP and PS2 +emulators, which uses multiple algorithms for best compression ratio. diff --git a/system/maxcso/flags.patch b/system/maxcso/flags.patch new file mode 100644 index 0000000000000..3360c2de295c7 --- /dev/null +++ b/system/maxcso/flags.patch @@ -0,0 +1,76 @@ +From 7b269754c70f6512fef7beb8a11f19a2fc1067fa Mon Sep 17 00:00:00 2001 +From: "Unknown W. Brackets" <checkins@unknownbrackets.org> +Date: Sat, 24 Nov 2018 11:38:01 -0800 +Subject: [PATCH] Allow CFLAGS/CXXFLAGS to be overridden. + +--- + 7zip/Makefile | 11 +++++++---- + Makefile | 13 ++++++++----- + 2 files changed, 15 insertions(+), 9 deletions(-) + +diff --git a/7zip/Makefile b/7zip/Makefile +index 986b1488..3909487c 100644 +--- a/7zip/Makefile ++++ b/7zip/Makefile +@@ -2,8 +2,11 @@ CC ?= gcc + CXX ?= g++ + AR ?= ar + +-CFLAGS += -W -Wall -Wextra -O2 +-CXXFLAGS += -W -Wall -Wextra -std=c++11 -O2 -ICPP ++SRC_CFLAGS = -W -Wall -Wextra ++SRC_CXXFLAGS = -W -Wall -Wextra -std=c++11 -ICPP ++ ++CFLAGS ?= -O2 ++CXXFLAGS ?= $(CFLAGS) + + 7ZIP_CXX_SRC = CPP/7zip/Archive/Common/ParseProperties.cpp \ + CPP/7zip/Archive/DeflateProps.cpp \ +@@ -33,10 +36,10 @@ CXXFLAGS += -W -Wall -Wextra -std=c++11 -O2 -ICPP + 7ZIP_C_OBJ = $(7ZIP_C_SRC:.c=.o) + + %.o: %.cpp +- $(CXX) -c $(CXXFLAGS) -o $@ $< ++ $(CXX) -c $(SRC_CXXFLAGS) $(CXXFLAGS) -o $@ $< + + %.o: %.c +- $(CC) -c $(CFLAGS) -o $@ $< ++ $(CC) -c $(SRC_CFLAGS) $(CFLAGS) -o $@ $< + + 7zip.a: $(7ZIP_CXX_OBJ) $(7ZIP_C_OBJ) + $(AR) rcs $@ $^ +diff --git a/Makefile b/Makefile +index 70870e23..5368d4d6 100644 +--- a/Makefile ++++ b/Makefile +@@ -5,8 +5,11 @@ MANDIR ?= $(PREFIX)/share/man + CC ?= gcc + CXX ?= g++ + +-CFLAGS += -W -Wall -Wextra -O2 -Wno-implicit-function-declaration -DNDEBUG=1 +-CXXFLAGS += -W -Wall -Wextra -std=c++11 -O2 -Izopfli/src -I7zip -DNDEBUG=1 \ ++CFLAGS ?= -O2 ++CXXFLAGS ?= $(CFLAGS) ++ ++SRC_CFLAGS += -W -Wall -Wextra -Wno-implicit-function-declaration -DNDEBUG=1 ++SRC_CXXFLAGS += -W -Wall -Wextra -std=c++11 -Izopfli/src -I7zip -DNDEBUG=1 \ + -Wno-unused-parameter -pthread + + SRC_CXX_SRC = $(wildcard src/*.cpp) +@@ -22,13 +25,13 @@ ZOPFLI_C_SRC = zopfli/src/zopfli/blocksplitter.c zopfli/src/zopfli/cache.c \ + ZOPFLI_C_OBJ = $(ZOPFLI_C_SRC:.c=.o) + + %.o: %.cpp +- $(CXX) -c $(CXXFLAGS) -o $@ $< ++ $(CXX) -c $(SRC_CXXFLAGS) $(CXXFLAGS) -o $@ $< + + %.o: %.c +- $(CC) -c $(CFLAGS) -o $@ $< ++ $(CC) -c $(SRC_CFLAGS) $(CFLAGS) -o $@ $< + + maxcso: $(SRC_CXX_OBJ) $(CLI_CXX_OBJ) $(ZOPFLI_C_OBJ) 7zip/7zip.a +- $(CXX) -o $@ $(CXXFLAGS) $^ -luv -llz4 -lz ++ $(CXX) -o $@ $(SRC_CXXFLAGS) $(CXXFLAGS) $^ -luv -llz4 -lz + + 7zip/7zip.a: + $(MAKE) -C 7zip 7zip.a diff --git a/system/maxcso/install.patch b/system/maxcso/install.patch new file mode 100644 index 0000000000000..f91f09eba926d --- /dev/null +++ b/system/maxcso/install.patch @@ -0,0 +1,35 @@ +From 06c234d2734a2f129aa5cbc1cf8332594813343d Mon Sep 17 00:00:00 2001 +From: orbea <orbea@fredslev.dk> +Date: Thu, 22 Nov 2018 12:04:28 -0800 +Subject: [PATCH] Makefile: Add install and uninstall targets. + +--- + Makefile | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/Makefile b/Makefile +index e66826da..54a6489c 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,3 +1,6 @@ ++PREFIX ?= /usr/local ++BINDIR ?= $(PREFIX)/bin ++ + CC ?= gcc + CXX ?= g++ + +@@ -29,6 +32,14 @@ maxcso: $(SRC_CXX_OBJ) $(CLI_CXX_OBJ) $(ZOPFLI_C_OBJ) 7zip/7zip.a + 7zip/7zip.a: + $(MAKE) -C 7zip 7zip.a + ++install: ++ mkdir -p $(DESTDIR)$(BINDIR) ++ cp maxcso $(DESTDIR)$(BINDIR) ++ chmod 0755 $(DESTDIR)$(BINDIR)/maxcso ++ ++uninstall: ++ rm -f $(DESTDIR)$(BINDIR)/maxcso ++ + clean: + rm -f $(SRC_CXX_OBJ) $(CLI_CXX_OBJ) $(ZOPFLI_C_OBJ) maxcso + $(MAKE) -C 7zip clean diff --git a/system/maxcso/man.patch b/system/maxcso/man.patch new file mode 100644 index 0000000000000..441511d91b95f --- /dev/null +++ b/system/maxcso/man.patch @@ -0,0 +1,204 @@ +From bd7f860ebec755a67d09cd9c52a98bd7e1761fe3 Mon Sep 17 00:00:00 2001 +From: orbea <orbea@fredslev.dk> +Date: Thu, 22 Nov 2018 18:27:14 -0800 +Subject: [PATCH] man: Add the maxcso.1 manual. + +--- + Makefile | 5 ++ + maxcso.1 | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 165 insertions(+) + create mode 100644 maxcso.1 + +diff --git a/Makefile b/Makefile +index 54a6489c..70870e23 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,5 +1,6 @@ + PREFIX ?= /usr/local + BINDIR ?= $(PREFIX)/bin ++MANDIR ?= $(PREFIX)/share/man + + CC ?= gcc + CXX ?= g++ +@@ -34,11 +35,15 @@ maxcso: $(SRC_CXX_OBJ) $(CLI_CXX_OBJ) $(ZOPFLI_C_OBJ) 7zip/7zip.a + + install: + mkdir -p $(DESTDIR)$(BINDIR) ++ mkdir -p $(DESTDIR)$(MANDIR)/man1 + cp maxcso $(DESTDIR)$(BINDIR) ++ cp maxcso.1 $(DESTDIR)$(MANDIR)/man1 + chmod 0755 $(DESTDIR)$(BINDIR)/maxcso ++ chmod 0644 $(DESTDIR)$(MANDIR)/man1/maxcso.1 + + uninstall: + rm -f $(DESTDIR)$(BINDIR)/maxcso ++ rm -f $(DESTDIR)$(MANDIR)/man1/maxcso.1 + + clean: + rm -f $(SRC_CXX_OBJ) $(CLI_CXX_OBJ) $(ZOPFLI_C_OBJ) maxcso +diff --git a/maxcso.1 b/maxcso.1 +new file mode 100644 +index 00000000..67d7e16c +--- /dev/null ++++ b/maxcso.1 +@@ -0,0 +1,160 @@ ++.\" maxcso.1 ++.\" ++.Dd November 22, 2018 ++.Dt MAXCSO 1 ++.Os ++.Sh NAME ++.Nm MAXCSO ++.Nd Fast cso compressor ++.Sh SYNOPSIS ++.Nm maxcso ++.Op Fl -args ++.Op Ar input.iso ++.Op Fl o Ar output.cso ++.Sh DESCRIPTION ++A fast ISO to CSO compression program for use with PSP and PS2 emulators, which ++uses multiple algorithms for best compression ratio. ++.Ss FEATURES ++.Bl -bullet -offset <TAB> -compact ++.It ++Can use as many CPU cores as you want. ++.It ++Can use ++.Xr zlib 3 , ++7-zip's deflate, and Zopfli. ++.It ++Processes multiple files in one command. ++.It ++Can take a CSO or DAX file as a source. ++.It ++Able to output at larger block sizes. ++.It ++Support for experimental CSO v2 and ZSO formats using ++.Xr lz4 1 ++(faster decompression). ++.It ++Tuning of deflate or ++.Xr lz4 1 ++compression threshold. ++.It ++Decompression of all supported inputs (including DAX and CSO v2). ++.El ++.Ss Compression ++.Nm maxcso ++always uses compression level 9. ++Decompression speed is about the same regardless of level, and disk access is ++faster with smaller files. ++.Pp ++Using 7-zip's deflate and Zopfli improves compression ratios, but don't expect a ++lot. ++Usual results are between 0.5% to 1.0% smaller. ++.Pp ++Larger block sizes than the default will help compression, in the range of 2-3%. ++However, the files may not be compatible with some software. ++For example, ++.Nm ppsspp ++versions released after 2014-10-26 will support larger block ++sizes. ++.Pp ++Avoid DAX where CSOs using larger block sizes are supported, since DAX is less ++efficient. ++.Pp ++.Xr lz4 1 ++support is mostly for experimentation. ++.Ss Speed ++Compared to other tools like ciso and CisoPlus, ++.Nm maxcso ++can run much faster and achieve the same compression. ++Use ++.Fl -fast ++to get the fastest compression, which matches level 9 in other tools. ++.Pp ++Additionally, if you have better than a dual core processor, ++.Nm maxcso ++will use all ++of your cores, and perform even better. ++.Pp ++In usage, CSOs typically perform well in all known emulators. ++Some versions of PSP firmware with ++support for CSOs have bugs in their CSO support, but this doesn't affect ++emulators. ++.Sh OPTIONS ++Multiple files may be specified. ++Inputs can be iso or cso files. ++.Bl -tag -width indent ++.It Fl -threads=N ++Specify N threads for I/O and compression. ++.It Fl -quiet ++Suppress status output. ++.It Fl -crc ++Log CRC32 checksums, ignore output files and methods. ++.It Fl -fast ++Use only basic ++.Xr zlib 3 ++or lz4 for fastest result. ++.It Fl -decompress ++Write out to raw ISO, decompressing as needed. ++.It Fl -block=N ++Specify a block size (default depends on iso size). ++Many readers only support the 2048 size. ++.It Fl -format=VER Ar cso1 , cso2 , zso , dax ++Specify cso version. ++These are experimental, default is ++.Ar cso1 . ++.It Fl -usr-zlib ++Enable trials with ++.Xr zlib 3 ++for deflate compression. ++.It Fl -use-zopli ++Enable trials with Zopfli for deflate compression. ++Because Zopfli is significantly slower than the other methods and uses a lot ++more memory, it is disabled by default. ++Use for maximum compression. ++.It Fl -use-7zdeflate ++Enable trials with 7-zip's deflate compression. ++.It Fl -use-lz4 ++Enable trials with lz4hc for ++.Xr lz4 1 ++compression. ++.It Fl -use-lz4brute ++Enable bruteforce trials with lz4hc for ++.Xr lz4 1 ++compression. ++.It Fl -only-METHOD ++Only allow a certain compression method ( ++.Xr zlib 3 , ++etc. above). ++.It Fl -no-METHOD ++Disable a certain compression method ( ++.Xr zlib 3 , ++etc. above). ++.It Fl -lz4-cost=N ++Allow ++.Xr lz4 1 ++to increase block size by N% at most (cso2 only). ++.It Fl -orig-cost=N ++Allow uncompressed to increase block size by N% at most. ++.El ++.Pp ++The cost arguments allow you to allow each block to be N% bigger by using ++.Xr lz4 1 ++or no compression. ++This makes the file read faster (less cpu power), but take more space. ++.Sh EXAMPLES ++.Bl -tag -width indent ++.It Nm maxcso Ar myfile.iso ++Compress ++.Ar myfile.iso ++and create myfile.cso. ++.It Nm maxcso Ar myfile.iso Fl o Ar output.cso ++Compress ++.Ar myfile.iso ++and create ++.Ar output.cso . ++.El ++.Sh SEE ALSO ++.Xr lz4 1 , ++.Xr PCSX2 1 , ++.Xr zlib 3 ++.Sh BUGS ++.Lk https://github.com/unknownbrackets/maxcso/issues "Issue tracker" diff --git a/system/maxcso/maxcso.SlackBuild b/system/maxcso/maxcso.SlackBuild new file mode 100644 index 0000000000000..f1fc8a467baad --- /dev/null +++ b/system/maxcso/maxcso.SlackBuild @@ -0,0 +1,110 @@ +#!/bin/sh + +# Slackware build script for maxcso + +# Copyright 2018 Hunter Sezen California, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PRGNAM=maxcso +VERSION=${VERSION:-1.10.0} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +set -eu + +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 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; + +# Makefile: Add install and uninstall targets. +# https://github.com/unknownbrackets/maxcso/commit/06c234d2734a2f129aa5cbc1cf8332594813343d +# https://github.com/unknownbrackets/maxcso/pull/23 +patch -p1 < $CWD/install.patch + +# man: Add the maxcso.1 manual. +# https://github.com/unknownbrackets/maxcso/commit/bd7f860ebec755a67d09cd9c52a98bd7e1761fe3 +# https://github.com/unknownbrackets/maxcso/pull/25 +patch -p1 < $CWD/man.patch + +# Allow CFLAGS/CXXFLAGS to be overridden. +# https://github.com/unknownbrackets/maxcso/commit/7b269754c70f6512fef7beb8a11f19a2fc1067fa +patch -p1 < $CWD/flags.patch + +make \ + CFLAGS="$SLKCFLAGS" \ + CXXFLAGS="$SLKCFLAGS" + +make install \ + PREFIX=/usr \ + MANDIR=/usr/man \ + DESTDIR=$PKG + +find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | + grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true + +find $PKG/usr/man -type f -exec gzip -9 {} \; +for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done + +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +cp -a LICENSE.md README.md README_CSO.md README_ZSO.md \ + $PKG/usr/doc/$PRGNAM-$VERSION +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$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:-tgz} diff --git a/system/maxcso/maxcso.info b/system/maxcso/maxcso.info new file mode 100644 index 0000000000000..58bc1c804fb75 --- /dev/null +++ b/system/maxcso/maxcso.info @@ -0,0 +1,10 @@ +PRGNAM="maxcso" +VERSION="1.10.0" +HOMEPAGE="https://github.com/unknownbrackets/maxcso" +DOWNLOAD="https://github.com/unknownbrackets/maxcso/archive/v1.10.0/maxcso-1.10.0.tar.gz" +MD5SUM="29fa15cdb1567e5f48b78ad64a56e4a1" +DOWNLOAD_x86_64="" +MD5SUM_x86_64="" +REQUIRES="libuv lz4" +MAINTAINER="Hunter Sezen" +EMAIL="orbea@fredslev.dk" diff --git a/system/maxcso/slack-desc b/system/maxcso/slack-desc new file mode 100644 index 0000000000000..48ce0cae0a8ad --- /dev/null +++ b/system/maxcso/slack-desc @@ -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------------------------------------------------------| +maxcso: maxcso (Fast cso compressor) +maxcso: +maxcso: A fast ISO to CSO compression program for use with PSP and PS2 +maxcso: emulators, which uses multiple algorithms for best compression ratio. +maxcso: +maxcso: Homepage: https://github.com/unknownbrackets/maxcso +maxcso: +maxcso: +maxcso: +maxcso: +maxcso: |