svn commit: r411553 - in head/print/hplip-plugin: . files
Tijl Coosemans
tijl at FreeBSD.org
Mon Mar 21 11:21:30 UTC 2016
Author: tijl
Date: Mon Mar 21 11:21:28 2016
New Revision: 411553
URL: https://svnweb.freebsd.org/changeset/ports/411553
Log:
- These binary plugins are compiled for Linux and some require glibc
functions that our libc does not provide so they fail to load. Implement
the glibc functions in a wrapper library for each plugin.
- Do all of the building and installing from do-build and do-install. The
upstream install scripts require too many hacks to stay inside the work
directory.
- Add LICENSE information.
PR: 208142
Tested by: avg
Added:
head/print/hplip-plugin/files/wrap.c (contents, props changed)
Deleted:
head/print/hplip-plugin/files/patch-installPlugin.py
head/print/hplip-plugin/files/patch-plugin_install.py
Modified:
head/print/hplip-plugin/Makefile
head/print/hplip-plugin/pkg-descr
head/print/hplip-plugin/pkg-plist
Modified: head/print/hplip-plugin/Makefile
==============================================================================
--- head/print/hplip-plugin/Makefile Mon Mar 21 11:17:40 2016 (r411552)
+++ head/print/hplip-plugin/Makefile Mon Mar 21 11:21:28 2016 (r411553)
@@ -3,6 +3,7 @@
PORTNAME= hplip-plugin
PORTVERSION= 3.16.2
+PORTREVISION= 1
CATEGORIES= print
MASTER_SITES= http://hplipopensource.com/hplip-web/plugin/
DISTNAME= hplip-${DISTVERSION}-plugin
@@ -11,18 +12,18 @@ EXTRACT_SUFX= .run
MAINTAINER= makc at FreeBSD.org
COMMENT= Binary plugin for some HP Printers and All-in-One devices
+LICENSE= HPLIP_PLUGIN
+LICENSE_NAME= HPLIP Driver Plug-in License
+LICENSE_PERMS= none
+LICENSE_FILE= ${WRKSRC}/license.txt
+
RUN_DEPENDS= hp-plugin:${PORTSDIR}/print/hplip
RESTRICTED= License agreement is required
-USES= python
-NO_BUILD= yes
-WRKSRC= ${WRKDIR}/plugin_tmp
-HPLIP_FAKEDIR= ${WRKDIR}/hplip_fakedir
-
-ONLY_FOR_ARCHS= amd64 i386
+ONLY_FOR_ARCHS= amd64 i386 # arm
-PLUGIN_LINKS= fax/plugins/fax_marvell \
+PLUGINS= fax/plugins/fax_marvell \
prnt/plugins/hbpl1 \
prnt/plugins/lj \
scan/plugins/bb_escl \
@@ -30,12 +31,6 @@ PLUGIN_LINKS= fax/plugins/fax_marvell \
scan/plugins/bb_soap \
scan/plugins/bb_soapht
-PLUGIN_DIRS= data/firmware \
- data/plugins \
- fax/plugins \
- prnt/plugins \
- scan/plugins
-
PLIST_SUB+= LINARCH="${LINARCH}"
.include <bsd.port.pre.mk>
@@ -47,36 +42,33 @@ LINARCH= x86_64
.endif
do-extract:
- @${MKDIR} ${WRKDIR}
- @(cd ${WRKDIR} && ${SH} ${DISTDIR}/${DISTNAME}${EXTRACT_SUFX} \
- --keep --noexec --nox11)
-
-post-patch:
- @${REINPLACE_CMD} -e 's|ok, ans = tui.enter_yes_no.*|ok, ans = 1, 1|' \
- -e 's|/etc/hp|${HPLIP_FAKEDIR}|' \
- ${WRKSRC}/plugin_install.py \
- ${WRKSRC}/installPlugin.py
+ @${SH} ${DISTDIR}/${DISTNAME}${EXTRACT_SUFX} \
+ --keep --noexec --nox11 --target ${WRKSRC}
+
+do-build:
+ ${CC} ${CFLAGS} -Wall -fPIC -c ${FILESDIR}/wrap.c -o ${WRKSRC}/wrap.o
+.for p in ${PLUGINS}
+ (cd ${WRKSRC} && ${BRANDELF} -t FreeBSD ${p:T}-${LINARCH}.so && \
+ ${CC} ${CFLAGS} ${LDFLAGS} -shared -fPIC -o ${p:T}.so wrap.o \
+ ${p:T}-${LINARCH}.so -Wl,-rpath,${PREFIX}/share/hplip/${p:H})
+.endfor
do-install:
-# fake hplip installation
- ${MKDIR} ${HPLIP_FAKEDIR}
- ${SED} -e 's,${LOCALBASE}/share/hplip,${HPLIP_FAKEDIR},' \
- ${LOCALBASE}/etc/hp/hplip.conf > ${HPLIP_FAKEDIR}/hplip.conf
- ${MKDIR} ${HPLIP_FAKEDIR}
- ${LN} -sf ${LOCALBASE}/share/hplip/base ${HPLIP_FAKEDIR}
- ${LN} -sf ${LOCALBASE}/share/hplip/prnt ${HPLIP_FAKEDIR}
- ${CP} -R ${LOCALBASE}/share/hplip/installer ${HPLIP_FAKEDIR}
- ${REINPLACE_CMD} -e 's,HOMEDIR = .*,HOMEDIR = "${STAGEDIR}${PREFIX}/share/hplip",' \
- -e 's,/var/lib/hp/hplip.state,${STAGEDIR}&,' \
- ${HPLIP_FAKEDIR}/installer/pluginhandler.py \
- ${HPLIP_FAKEDIR}/installer/core_install.py
- ${MKDIR} ${STAGEDIR}/var/lib/hp
-# install hplip-plugin
- ${MKDIR} ${PLUGIN_DIRS:S,^,${STAGEDIR}${PREFIX}/share/hplip/,}
- (cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} -B \
- plugin_install.py -i)
-.for i in ${PLUGIN_LINKS}
- ${LN} -sf ${i:T}-${LINARCH}.so ${STAGEDIR}${PREFIX}/share/hplip/${i}.so
+ ${MKDIR} ${STAGEDIR}${PREFIX}/share/hplip/data/firmware
+ ${INSTALL_DATA} ${WRKSRC}/*.fw.gz \
+ ${STAGEDIR}${PREFIX}/share/hplip/data/firmware
+ ${MKDIR} ${PLUGINS:H:S,^,${STAGEDIR}${PREFIX}/share/hplip/,}
+.for p in ${PLUGINS}
+ ${INSTALL_LIB} ${WRKSRC}/${p:T}-${LINARCH}.so \
+ ${STAGEDIR}${PREFIX}/share/hplip/${p}-${LINARCH}.so
+ ${INSTALL_LIB} ${WRKSRC}/${p:T}.so \
+ ${STAGEDIR}${PREFIX}/share/hplip/${p}.so
.endfor
+ ${INSTALL_DATA} ${WRKSRC}/plugin.spec ${STAGEDIR}${PREFIX}/share/hplip
+ ${MKDIR} ${STAGEDIR}/var/lib/hp
+ ${ECHO_CMD} '[plugin]' > ${STAGEDIR}/var/lib/hp/hplip.state
+ ${ECHO_CMD} 'installed = 1' >> ${STAGEDIR}/var/lib/hp/hplip.state
+ ${ECHO_CMD} 'eula = 1' >> ${STAGEDIR}/var/lib/hp/hplip.state
+ ${ECHO_CMD} 'version = ${PORTVERSION}' >> ${STAGEDIR}/var/lib/hp/hplip.state
.include <bsd.port.post.mk>
Added: head/print/hplip-plugin/files/wrap.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/print/hplip-plugin/files/wrap.c Mon Mar 21 11:21:28 2016 (r411553)
@@ -0,0 +1,73 @@
+/* $FreeBSD$ */
+
+/* dummy implementation of glibc functions needed by plugins */
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <syslog.h>
+
+void
+__assert_fail( const char *msg, const char *file, unsigned int line,
+ const char *func ) {
+ fprintf( stderr, "Assertion failed: (%s), function %s, file %s, line %u\n",
+ msg, func, file, line );
+ abort();
+}
+
+int
+__fprintf_chk( FILE *fp, int flag, char const *format, ... ) {
+ va_list ap;
+ int res;
+
+ va_start( ap, format );
+ res = vfprintf( fp, format, ap );
+ va_end( ap );
+ return( res );
+}
+
+int
+__printf_chk( int flag, char const *format, ... ) {
+ va_list ap;
+ int res;
+
+ va_start( ap, format );
+ res = vprintf( format, ap );
+ va_end( ap );
+ return( res );
+}
+
+int
+__snprintf_chk( char *s, size_t maxlen, int flag, size_t slen,
+ char const *format, ... ) {
+ va_list ap;
+ int res;
+
+ va_start( ap, format );
+ res = vsnprintf( s, maxlen, format, ap );
+ va_end( ap );
+ return( res );
+}
+
+char *
+__strcpy_chk( char *dest, char const *src, size_t destlen ) {
+ return( strcpy( dest, src ));
+}
+
+void
+__syslog_chk( int priority, int flag, char const *format, ... ) {
+ va_list ap;
+
+ va_start( ap, format );
+ vsyslog( priority, format, ap );
+ va_end( ap );
+}
+
+#undef stderr
+FILE *stderr;
+
+static __attribute__(( constructor )) void
+init_stderr( void ) {
+ stderr = __stderrp;
+}
Modified: head/print/hplip-plugin/pkg-descr
==============================================================================
--- head/print/hplip-plugin/pkg-descr Mon Mar 21 11:17:40 2016 (r411552)
+++ head/print/hplip-plugin/pkg-descr Mon Mar 21 11:21:28 2016 (r411553)
@@ -1,3 +1,3 @@
-Firmware and binary drivers from some HPLIP supported printers.
+Firmware and binary drivers for some HPLIP supported printers.
-WWW: http://hplipopensource.com/hplip-web/index.html
+WWW: http://hplipopensource.com/
Modified: head/print/hplip-plugin/pkg-plist
==============================================================================
--- head/print/hplip-plugin/pkg-plist Mon Mar 21 11:17:40 2016 (r411552)
+++ head/print/hplip-plugin/pkg-plist Mon Mar 21 11:21:28 2016 (r411553)
@@ -11,7 +11,6 @@ share/hplip/data/firmware/hp_laserjet_p1
share/hplip/data/firmware/hp_laserjet_professional_p1102.fw.gz
share/hplip/data/firmware/hp_laserjet_professional_p1102w.fw.gz
share/hplip/data/firmware/hp_laserjet_professional_p1566.fw.gz
-share/hplip/data/plugins/license.txt
share/hplip/fax/plugins/fax_marvell-%%LINARCH%%.so
share/hplip/fax/plugins/fax_marvell.so
share/hplip/plugin.spec
More information about the svn-ports-all
mailing list