Bug 187398

Summary: [New Port] graphics/mozjpeg A fork of libjpeg-turbo with 'jpgcrush' functionality
Product: Ports & Packages Reporter: Horia Racoviceanu <horia>
Component: Individual Port(s)Assignee: Steve Wills <swills>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Latest   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
file.shar none

Description Horia Racoviceanu 2014-03-09 19:00:00 UTC
MozJPEG is a fork of libjpeg-turbo with 'jpgcrush' functionality built in.

The goal is to provide a production-quality JPEG encoder that improves
compression while maintaining compatibility with the vast majority of deployed
decoders.

The 'jpgcrush' feature finds the progressive coding configuration which uses the
fewest bits. This most frequently reduces file size by 2-10%, but those are not
hard limits. Significantly greater reductions have been observed.

Library configuration defaults are the same as for libjpeg-turbo, in order to
make transitions as painless as possible. There are new configuration options
for new features, but they are not enabled by default.

The 'cjpeg' program defaults are not the same as for the equivalent program in
libjpeg-turbo. The 'cjpeg' defaults for mozjpeg are set to aggressively optimize
for smaller file sizes.

WWW: https://github.com/mozilla/mozjpeg/

Fix: Build log:
https://redports.org/buildarchive/20140309182142-89203/

Patch attached with submission follows:
Comment 1 Edwin Groothuis freebsd_committer freebsd_triage 2014-03-09 19:00:08 UTC
Responsible Changed
From-To: freebsd-ports-bugs->swills

swills@ wants this submitter's PRs (via the GNATS Auto Assign Tool)
Comment 2 dfilter service freebsd_committer freebsd_triage 2014-03-13 20:00:19 UTC
Author: swills
Date: Thu Mar 13 20:00:11 2014
New Revision: 348122
URL: http://svnweb.freebsd.org/changeset/ports/348122
QAT: https://qat.redports.org/buildarchive/r348122/

Log:
  MozJPEG is a fork of libjpeg-turbo with 'jpgcrush' functionality built in.
  
  The goal is to provide a production-quality JPEG encoder that improves
  compression while maintaining compatibility with the vast majority of deployed
  decoders.
  
  The 'jpgcrush' feature finds the progressive coding configuration which uses the
  fewest bits. This most frequently reduces file size by 2-10%, but those are not
  hard limits. Significantly greater reductions have been observed.
  
  Library configuration defaults are the same as for libjpeg-turbo, in order to
  make transitions as painless as possible. There are new configuration options
  for new features, but they are not enabled by default.
  
  The 'cjpeg' program defaults are not the same as for the equivalent program in
  libjpeg-turbo. The 'cjpeg' defaults for mozjpeg are set to aggressively optimize
  for smaller file sizes.
  
  WWW: https://github.com/mozilla/mozjpeg/
  
  PR:		ports/187398
  Submitted by:	Horia Racoviceanu <horia@racoviceanu.com>

Added:
  head/graphics/mozjpeg/
  head/graphics/mozjpeg/Makefile   (contents, props changed)
  head/graphics/mozjpeg/distinfo   (contents, props changed)
  head/graphics/mozjpeg/pkg-descr   (contents, props changed)
  head/graphics/mozjpeg/pkg-plist   (contents, props changed)
Modified:
  head/graphics/Makefile

Modified: head/graphics/Makefile
==============================================================================
--- head/graphics/Makefile	Thu Mar 13 19:53:38 2014	(r348121)
+++ head/graphics/Makefile	Thu Mar 13 20:00:11 2014	(r348122)
@@ -583,6 +583,7 @@
     SUBDIR += mingplot
     SUBDIR += mirage
     SUBDIR += mmrecover
+    SUBDIR += mozjpeg
     SUBDIR += mscgen
     SUBDIR += mtpaint
     SUBDIR += multican

Added: head/graphics/mozjpeg/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/graphics/mozjpeg/Makefile	Thu Mar 13 20:00:11 2014	(r348122)
@@ -0,0 +1,120 @@
+# Created by: Horia Racoviceanu <horia@racoviceanu.com>
+# $FreeBSD$
+
+PORTNAME=	mozjpeg
+PORTVERSION=	1.0
+CATEGORIES=	graphics
+
+MAINTAINER=	horia@racoviceanu.com
+COMMENT=	Fork of libjpeg-turbo with 'jpgcrush' functionality
+
+LICENSE=	BSD3CLAUSE
+
+BUILD_DEPENDS=	nasm:${PORTSDIR}/devel/nasm
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	mozilla
+GH_TAGNAME=	${GH_COMMIT}
+GH_COMMIT=	febf346
+
+USE_AUTOTOOLS=	aclocal:env autoconf automake libtool
+USE_LDCONFIG=	${PREFIX}/include/${PORTNAME} ${PREFIX}/lib/${PORTNAME}
+GNU_CONFIGURE=	yes
+CONFIGURE_ARGS=	--docdir=${PREFIX}/share/doc/${PORTNAME} \
+		--includedir=${PREFIX}/include/${PORTNAME} \
+		--libdir=${PREFIX}/lib/${PORTNAME}
+LIBTOOL_ARGS+=	--finish ${PREFIX}/lib/${PORTNAME}
+LDFLAGS+=	-L${PREFIX}/lib/${PORTNAME}
+
+PLIST_SUB=	PORTNAME=${PORTNAME} \
+		SOMAJORVERSION=${SOMAJORVERSION}
+
+PORTDOCS=	*
+
+DOCSRCDIR1=	${WRKSRC}/doc/html
+DOCSDIR1=	${DOCSDIR}/html
+
+DOCSRCDIR2=	${DOCSRCDIR1}/search
+DOCSDIR2=	${DOCSDIR1}/search
+
+DOC_FILES=	*.css *.html *.js *.png
+
+PORTEXAMPLES=	*
+
+OPTIONS_DEFINE=	DOCS EXAMPLES GCC SIMD TURBOJPEG
+
+OPTIONS_GROUP=	ARITHMETIC_CODING
+OPTIONS_GROUP_ARITHMETIC_CODING=	DECODING ENCODING
+
+OPTIONS_MULTI=	LIBRARIES
+OPTIONS_MULTI_LIBRARIES=	SHARED STATIC
+
+OPTIONS_SINGLE=	API_ABI_EMULATION
+OPTIONS_SINGLE_API_ABI_EMULATION=	JPEG6B JPEG7 JPEG8
+
+OPTIONS_DEFAULT=	DECODING ENCODING GCC JPEG6B SHARED SIMD STATIC TURBOJPEG
+
+OPTIONS_SUB=	yes
+
+GCC_DESC=	Use the GNU Compiler Collection (GCC) for best performance
+SIMD_DESC=	Include SIMD extensions (MMX, SSE2, NEON)
+TURBOJPEG_DESC=	Include the TurboJPEG wrapper library and associated tests
+
+ENCODING_DESC=	Enable arithmetic encoding
+DECODING_DESC=	Enable arithmetic decoding
+
+STATIC_DESC=	Build static libraries
+SHARED_DESC=	Build shared libraries
+
+JPEG6B_DESC=	API/ABI-compatible with libjpeg v6b
+JPEG7_DESC=	API/ABI-compatible with libjpeg v7 (implies arith-coding)
+JPEG8_DESC=	API/ABI-compatible with libjpeg v8 (implies arith-coding)
+
+GCC_USE=	GCC=any
+SIMD_CONFIGURE_WITH=	simd
+TURBOJPEG_CONFIGURE_WITH=	turbojpeg
+
+JPEG7_CONFIGURE_WITH=	jpeg7
+JPEG8_CONFIGURE_WITH=	jpeg8
+
+STATIC_CONFIGURE_ENABLE=	static
+SHARED_CONFIGURE_ENABLE=	shared
+
+.include <bsd.port.options.mk>
+
+.if ${PORT_OPTIONS:MJPEG6B}
+. if ! ${PORT_OPTIONS:MENCODING}
+CONFIGURE_ARGS+=	--without-arith-enc
+. endif
+. if ! ${PORT_OPTIONS:MDECODING}
+CONFIGURE_ARGS+=	--without-arith-dec
+. endif
+SOMAJORVERSION=	63
+.else
+SOMAJORVERSION=	8
+.endif
+
+post-patch:
+	@${REINPLACE_CMD} -e "s|docdir = \$$(datadir)/doc|&/mozjpeg|; \
+		s|exampledir = \$$(datadir)/doc|exampledir = ${EXAMPLESDIR}|" \
+ 			${WRKSRC}/Makefile.am
+
+run-autotools:	run-autotools-autoreconf
+
+run-autotools-autoreconf:
+	cd ${CONFIGURE_WRKSRC} && ${SETENV} ${AUTOTOOLS_ENV} ${AUTORECONF} -fiv
+
+post-install:
+	@${MKDIR} ${STAGEDIR}${DOCSDIR2}
+	${INSTALL_DATA} ${DOC_FILES:S|^|${DOCSRCDIR1}/|} ${STAGEDIR}${DOCSDIR1}
+	${INSTALL_DATA} ${DOC_FILES:S|^|${DOCSRCDIR2}/|} ${STAGEDIR}${DOCSDIR2}
+
+.if ${PORT_OPTIONS:MSHARED}
+	${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/${PORTNAME}/libjpeg.so.${SOMAJORVERSION}
+.endif
+
+.if ${PORT_OPTIONS:MSHARED} && ${PORT_OPTIONS:MTURBOJPEG}
+	${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/${PORTNAME}/libturbojpeg.so.1
+.endif
+
+.include <bsd.port.mk>

Added: head/graphics/mozjpeg/distinfo
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/graphics/mozjpeg/distinfo	Thu Mar 13 20:00:11 2014	(r348122)
@@ -0,0 +1,2 @@
+SHA256 (mozjpeg-1.0.tar.gz) = 6c4845d7fa0bddd77e4a209e8e81bde11af8524dcd2cb0bb10bfd9519548ec95
+SIZE (mozjpeg-1.0.tar.gz) = 1032706

Added: head/graphics/mozjpeg/pkg-descr
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/graphics/mozjpeg/pkg-descr	Thu Mar 13 20:00:11 2014	(r348122)
@@ -0,0 +1,19 @@
+MozJPEG is a fork of libjpeg-turbo with 'jpgcrush' functionality built in.
+
+The goal is to provide a production-quality JPEG encoder that improves
+compression while maintaining compatibility with the vast majority of deployed
+decoders.
+
+The 'jpgcrush' feature finds the progressive coding configuration which uses the
+fewest bits. This most frequently reduces file size by 2-10%, but those are not
+hard limits. Significantly greater reductions have been observed.
+
+Library configuration defaults are the same as for libjpeg-turbo, in order to
+make transitions as painless as possible. There are new configuration options
+for new features, but they are not enabled by default.
+
+The 'cjpeg' program defaults are not the same as for the equivalent program in
+libjpeg-turbo. The 'cjpeg' defaults for mozjpeg are set to aggressively optimize
+for smaller file sizes.
+
+WWW: https://github.com/mozilla/mozjpeg/

Added: head/graphics/mozjpeg/pkg-plist
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/graphics/mozjpeg/pkg-plist	Thu Mar 13 20:00:11 2014	(r348122)
@@ -0,0 +1,26 @@
+bin/cjpeg
+bin/djpeg
+bin/jpegtran
+bin/rdjpgcom
+%%TURBOJPEG%%bin/tjbench
+bin/wrjpgcom
+include/%%PORTNAME%%/jconfig.h
+include/%%PORTNAME%%/jerror.h
+include/%%PORTNAME%%/jmorecfg.h
+include/%%PORTNAME%%/jpeglib.h
+%%TURBOJPEG%%include/%%PORTNAME%%/turbojpeg.h
+%%STATIC%%lib/%%PORTNAME%%/libjpeg.a
+lib/%%PORTNAME%%/libjpeg.la
+%%SHARED%%lib/%%PORTNAME%%/libjpeg.so
+%%SHARED%%lib/%%PORTNAME%%/libjpeg.so.%%SOMAJORVERSION%%
+%%STATIC%%%%TURBOJPEG%%lib/%%PORTNAME%%/libturbojpeg.a
+%%TURBOJPEG%%lib/%%PORTNAME%%/libturbojpeg.la
+%%SHARED%%%%TURBOJPEG%%lib/%%PORTNAME%%/libturbojpeg.so
+%%SHARED%%%%TURBOJPEG%%lib/%%PORTNAME%%/libturbojpeg.so.1
+man/man1/cjpeg.1.gz
+man/man1/djpeg.1.gz
+man/man1/jpegtran.1.gz
+man/man1/rdjpgcom.1.gz
+man/man1/wrjpgcom.1.gz
+@dirrm lib/%%PORTNAME%%
+@dirrm include/%%PORTNAME%%
_______________________________________________
svn-ports-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-ports-all
To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"
Comment 3 Steve Wills freebsd_committer freebsd_triage 2014-03-13 20:00:54 UTC
State Changed
From-To: open->closed

New port added. Thanks!