pkgsrc-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: pkg/47208: nspluginwrapper 1.4.4 package



The following reply was made to PR pkg/47208; it has been noted by GNATS.

From: Onno van der Linden <o.vd.linden%quicknet.nl@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc: 
Subject: Re: pkg/47208: nspluginwrapper 1.4.4 package
Date: Sat, 17 Nov 2012 15:45:41 +0100

 Here's my attempt at creating a nspluginwrapper 1.4.4
 package. Works for me. Contains gross hack to work around
 anonymous socket use in npviewer.bin binary. This
 likely needs some cleanup but it should be an okay
 starting point.
 
 Onno
 # This is a shell archive.  Save it in a file, remove anything before
 # this line, and then unpack it by entering "sh file".  Note, it may
 # create directories; files and directories will be owned by you and
 # have default permissions.
 #
 # This archive contains:
 #
 #      DESCR
 #      Makefile
 #      PLIST
 #      distinfo
 #      files
 #      patches
 #      files/libnoanonsocket.c
 #      patches/patch-Makefile
 #      patches/patch-aa
 #      patches/patch-ab
 #      patches/patch-ac
 #      patches/patch-src_npw-player.c
 #      patches/patch-src_npw-wrapper.c
 #      patches/patch-src_rpc.c
 #      patches/patch-src_sysdeps.h
 #
 echo x - DESCR
 sed 's/^X//' >DESCR << 'END-of-DESCR'
 Xnspluginwrapper is an Open Source compatibility plugin for Netscape
 X4 (NPAPI) plugins. It separates the execution environment of the
 Xplugin from the browser, allowing a plugin compiled for one ABI to
 Xbe used in a browser compiled for another.
 X
 XFor example the linux 32bit Adobe Flash plugin can be used in a
 Xnative Firefox under Linux/x86_64, NetBSD, DragonFlyBSD and FreeBSD
 Xplatforms.
 X
 XTo install the Linux flash player into a native Firefox browser:
 X  - Also install multimedia/ns-flash and multimedia/libflashsupport
 X  - Run "nspluginwrapper -i /usr/pkg/lib/netscape/plugins/libflashplayer.so"
 X  - Run Firefox
 X
 XYou do not need nspluginwrapper if the ABI of the plugin and browser are the
 Xsame, such as running a 32 bit Linux firefox and flash plugin under NetBSD.
 END-of-DESCR
 echo x - Makefile
 sed 's/^X//' >Makefile << 'END-of-Makefile'
 X# $NetBSD: Makefile,v 1.34 2012/10/28 06:30:24 asau Exp $
 X#
 X
 XDISTNAME=     nspluginwrapper-1.4.4
 XCATEGORIES=   www
 XMASTER_SITES= http://nspluginwrapper.org/download/ \
 X              
http://download.opensuse.org/distribution/12.1/repo/oss/suse/x86_64/ 
 XDISTFILES=    ${DISTNAME}.tar.gz ${DISTNAME}-2.2.1.x86_64.rpm
 X
 XMAINTAINER=   abs%NetBSD.org@localhost
 XHOMEPAGE=     http://nspluginwrapper.org/
 XCOMMENT=      Use Netscape compatible plugins from other platforms
 XLICENSE=      gnu-gpl-v2
 X
 XEMUL_PLATFORMS=               linux-i386
 XEMUL_MODULES.linux=   base gtk2 x11
 XNOT_FOR_PLATFORM=     Linux-*-*
 X
 XHAS_CONFIGURE=                yes
 XUSE_LANGUAGES=                c c++
 XUSE_TOOLS+=           gmake pkg-config
 XCONFIGURE_ARGS+=      --prefix=${PREFIX}
 X
 XPLUGIN_SUBDIR=                lib/nspluginwrapper/i386/linux
 XPLUGIN_INSTDIR=               ${PREFIX}/${PLUGIN_SUBDIR}
 XPLUGIN_SRCDIR=                ${WRKDIR}/usr/${PLUGIN_SUBDIR}
 X
 XLDFLAGS.DragonFly=    -lgmodule-2.0
 X
 XSUBST_CLASSES+=               npviewer
 XSUBST_STAGE.npviewer= post-build
 XSUBST_FILES.npviewer= ${PLUGIN_SRCDIR}/npviewer
 XSUBST_SED.npviewer=   -e "s|/usr/|${PREFIX}/|g"
 X
 XINSTALLATION_DIRS=    ${PLUGIN_INSTDIR}
 X
 Xpost-extract:
 X      cp files/libnoanonsocket.c ${WRKDIR}/${DISTNAME}/src
 X
 Xpost-install:
 X      ${INSTALL_LIB} ${PLUGIN_SRCDIR}/libnoxshm.so ${DESTDIR}${PLUGIN_INSTDIR}
 X      ${INSTALL_LIB} ${WRKDIR}/${DISTNAME}/libnoanonsocket.so 
${DESTDIR}${PLUGIN_INSTDIR}
 X      ${INSTALL_SCRIPT} ${PLUGIN_SRCDIR}/npviewer ${DESTDIR}${PLUGIN_INSTDIR}
 X      ${INSTALL_LIB} ${PLUGIN_SRCDIR}/npviewer.bin ${DESTDIR}${PLUGIN_INSTDIR}
 X
 X.include "../../devel/glib2/buildlink3.mk"
 X.include "../../www/curl/buildlink3.mk"
 X.include "../../x11/gtk2/buildlink3.mk"
 X.include "../../x11/libX11/buildlink3.mk"
 X.include "../../x11/libXt/buildlink3.mk"
 X.include "../../mk/bsd.pkg.mk"
 END-of-Makefile
 echo x - PLIST
 sed 's/^X//' >PLIST << 'END-of-PLIST'
 X@comment $NetBSD: PLIST,v 1.3 2009/01/05 19:11:24 jmcneill Exp $
 Xbin/nspluginplayer
 Xbin/nspluginwrapper
 Xlib/nspluginwrapper/${MACHINE_ARCH}/${LOWER_OPSYS}/npconfig
 Xlib/nspluginwrapper/${MACHINE_ARCH}/${LOWER_OPSYS}/npplayer
 Xlib/nspluginwrapper/${MACHINE_ARCH}/${LOWER_OPSYS}/npwrapper.so
 Xlib/nspluginwrapper/i386/linux/npviewer
 Xlib/nspluginwrapper/i386/linux/libnoanonsocket.so
 Xlib/nspluginwrapper/i386/linux/npviewer.bin
 Xlib/nspluginwrapper/noarch/npviewer.sh
 END-of-PLIST
 echo x - distinfo
 sed 's/^X//' >distinfo << 'END-of-distinfo'
 X$NetBSD$
 X
 XSHA1 (nspluginwrapper-1.4.4-2.2.1.x86_64.rpm) = 
5165160126bc2d853aa03da68ff292c451cf7005
 XRMD160 (nspluginwrapper-1.4.4-2.2.1.x86_64.rpm) = 
630136113810ac9eb9cf76611a52be898d606cdf
 XSize (nspluginwrapper-1.4.4-2.2.1.x86_64.rpm) = 160203 bytes
 XSHA1 (nspluginwrapper-1.4.4.tar.gz) = ffb271a741215874808d4a77d0a0dd65588a8440
 XRMD160 (nspluginwrapper-1.4.4.tar.gz) = 
6acd93653aa8466e1e3703c2b794f32691c10d12
 XSize (nspluginwrapper-1.4.4.tar.gz) = 412513 bytes
 XSHA1 (patch-Makefile) = 103c8cd5403cb8895dc5096be9b9d978a71afce0
 XSHA1 (patch-aa) = 28f9e18e519337852cb47d04ed0c1cea76b3416d
 XSHA1 (patch-ab) = 20dc1b6ff4036a0946dd469860eb9b6c129fdb7a
 XSHA1 (patch-ac) = f85d793564dc23465c94e30af6d5c3c67bdee0e1
 XSHA1 (patch-src_npw-player.c) = d6f6ffa71e920b06710b24b1e31938056fb3d8e1
 XSHA1 (patch-src_npw-wrapper.c) = 6801b6817d5e85d0ed3f2548be247a657c98daa9
 XSHA1 (patch-src_rpc.c) = 00e41894abe3e3587d70c6398461dd8143faa5a3
 XSHA1 (patch-src_sysdeps.h) = 097cc04320f236b151e4685d742abaf0581108f5
 END-of-distinfo
 echo c - files
 mkdir -p files > /dev/null 2>&1
 echo c - patches
 mkdir -p patches > /dev/null 2>&1
 echo x - files/libnoanonsocket.c
 sed 's/^X//' >files/libnoanonsocket.c << 'END-of-files/libnoanonsocket.c'
 X#include <sys/socket.h>
 X#include <sys/types.h>
 X#include <stddef.h>
 X#include <dlfcn.h>
 X
 Xstruct osockaddr_un {
 X        uint16_t        sa_family;      /* address family */
 X        char            sun_path[108];    /* up to 108 bytes of direct 
address */
 X};
 X
 Xstruct rpc_connection {
 X  int type;
 X  int refcnt;
 X  int status;
 X  int socket;
 X  char *socket_path;
 X  struct osockaddr_un socket_addr;
 X  socklen_t socket_addr_len;
 X  int server_socket;
 X  int server_thread_active;
 X};
 X
 X
 Xint   (*bindfunc)(int, const struct sockaddr *, int) = NULL;
 X
 Xint bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen)
 X{
 X      struct osockaddr_un     *sun;
 X
 X      if (bindfunc == NULL) {
 X              bindfunc = dlsym(RTLD_NEXT,"bind");
 X              if (bindfunc == NULL)
 X                      return -1;
 X      }
 X      sun = (struct osockaddr_un *) my_addr;
 X      if (sun != NULL && sun->sa_family == AF_LOCAL && sun->sun_path[0] == 
'\0') {
 X              char    *p, *q;
 X              struct rpc_connection   *conn;
 X
 X              conn = (void *) my_addr - offsetof(struct rpc_connection, 
socket_addr);
 X              p = sun->sun_path;
 X              q = conn->socket_path;
 X              while (q[1]) {
 X                      *q = q[1];
 X                      *p = q[1];
 X                      ++q;
 X                      ++p;
 X              }
 X              *q = '\0';
 X              *p = '\0';
 X      }
 X      return bindfunc(sockfd, my_addr, addrlen);
 X}
 END-of-files/libnoanonsocket.c
 echo x - patches/patch-Makefile
 sed 's/^X//' >patches/patch-Makefile << 'END-of-patches/patch-Makefile'
 X--- Makefile.orig     2011-07-01 05:18:57.000000000 +0200
 X+++ Makefile  2012-11-17 11:32:25.000000000 +0100
 X@@ -151,6 +151,12 @@
 X libnoxshm_CFLAGS  = $(CFLAGS_32) $(PIC_CFLAGS)
 X libnoxshm_LDFLAGS = $(LDFLAGS_32)
 X 
 X+libnoanonsocket_LIBRARY = libnoanonsocket.so
 X+libnoanonsocket_RAWSRCS = libnoanonsocket.c
 X+libnoanonsocket_SOURCES = $(libnoanonsocket_RAWSRCS:%.c=$(SRC_PATH)/src/%.c)
 X+libnoanonsocket_OBJECTS = $(libnoanonsocket_RAWSRCS:%.c=libnoanonsocket-%.o)
 X+libnoanonsocket_CFLAGS  = $(CFLAGS_32) $(PIC_CFLAGS)
 X+
 X npconfig_PROGRAM = npconfig
 X npconfig_RAWSRCS = npw-config.c
 X npconfig_SOURCES = $(npconfig_RAWSRCS:%.c=$(SRC_PATH)/src/%.c)
 X@@ -193,6 +199,7 @@
 X TARGETS              = $(npconfig_PROGRAM)
 X TARGETS              += $(nploader_PROGRAM)
 X TARGETS              += $(npwrapper_LIBRARY)
 X+TARGETS              += $(libnoanonsocket_LIBRARY)
 X ifeq ($(build_viewer),yes)
 X TARGETS              += $(npviewer_PROGRAM)
 X TARGETS              += $(libnoxshm_LIBRARY)
 X@@ -323,6 +330,12 @@
 X libnoxshm-%.o: $(SRC_PATH)/src/%.c
 X      $(CC) -o $@ -c $< $(CPPFLAGS) $(libnoxshm_CFLAGS)
 X 
 X+$(libnoanonsocket_LIBRARY): $(libnoanonsocket_OBJECTS)
 X+     $(LD) $(DSO_LDFLAGS) -o $@ $(libnoanonsocket_OBJECTS)
 X+
 X+libnoanonsocket-%.o: $(SRC_PATH)/src/%.c
 X+     $(CC) -o $@ -c $< $(CPPFLAGS) $(libnoxshm_CFLAGS)
 X+
 X $(npconfig_PROGRAM): $(npconfig_OBJECTS)
 X      $(CC) $(npconfig_LDFLAGS) -o $@ $(npconfig_OBJECTS) $(npconfig_LIBS)
 X 
 END-of-patches/patch-Makefile
 echo x - patches/patch-aa
 sed 's/^X//' >patches/patch-aa << 'END-of-patches/patch-aa'
 X$NetBSD: patch-aa,v 1.5 2008/12/18 19:59:31 jmcneill Exp $
 X
 X--- src/npw-config.c.orig     2009-09-16 11:05:23.000000000 +0100
 X+++ src/npw-config.c
 X@@ -125,22 +125,15 @@ static const char *get_system_mozilla_pl
 X        };
 X        dirs = freebsd_dirs;
 X      }
 X-#elif defined(__DragonFly__)
 X+#elif defined(__NetBSD__) || defined(__DragonFly__)
 X      {
 X        static const char *dragonfly_dirs[] = {
 X-             "/usr/pkg/" LIB "/mozilla/plugins",
 X-             "/usr/pkg/" LIB "/firefox/plugins",
 X+             LIBDIR "/netscape/plugins",
 X+             LIBDIR "/firefox/plugins",
 X+             LIBDIR "/seamonkey/plugins",
 X        };
 X        dirs = dragonfly_dirs;
 X      }
 X-#elif defined(__NetBSD__)
 X-     {
 X-       static const char *netbsd_dirs[] = {
 X-             "/usr/pkg/" LIB "/mozilla/plugins",
 X-             "/usr/pkg/" LIB "/firefox/plugins",
 X-       };
 X-       dirs = netbsd_dirs;
 X-     }
 X #elif defined(__sun__)
 X      {
 X        static const char *solaris_dirs[] = {
 X@@ -223,16 +216,11 @@ static const char **get_mozilla_plugin_d
 X      "/usr/local/lib/npapi/linux-flashplugin",
 X      "/usr/X11R6/Adobe/Acrobat7.0/ENU/Browser/intellinux",
 X #endif
 X-#if defined(__DragonFly__)
 X+#if defined(__NetBSD__) || defined(__DragonFly__)
 X      "/usr/pkg/lib/netscape/plugins",
 X      "/usr/pkg/lib/firefox/plugins",
 X-     "/usr/pkg/lib/RealPlayer/mozilla",
 X-     "/usr/pkg/Acrobat5/Browsers/intellinux",
 X-     "/usr/pkg/Acrobat7/Browser/intellinux",
 X-#endif
 X-#if defined(__NetBSD__)
 X      "/usr/pkg/lib/netscape/plugins",
 X-     "/usr/pkg/lib/firefox/plugins",
 X+     "/usr/pkg/lib/seamonkey/plugins",
 X      "/usr/pkg/lib/RealPlayer/mozilla",
 X      "/usr/pkg/Acrobat5/Browsers/intellinux",
 X      "/usr/pkg/Acrobat7/Browser/intellinux",
 END-of-patches/patch-aa
 echo x - patches/patch-ab
 sed 's/^X//' >patches/patch-ab << 'END-of-patches/patch-ab'
 X$NetBSD$
 X
 X--- src/utils.c.orig  2008-12-06 15:16:38.000000000 -0500
 X+++ src/utils.c
 X@@ -19,6 +19,7 @@
 X  */
 X 
 X #define _GNU_SOURCE 1
 X+#define _NETBSD_SOURCE 1
 X #include "sysdeps.h"
 X 
 X #include <stdio.h>
 END-of-patches/patch-ab
 echo x - patches/patch-ac
 sed 's/^X//' >patches/patch-ac << 'END-of-patches/patch-ac'
 X$NetBSD: patch-ac,v 1.3 2011/01/20 13:06:15 pooka Exp $
 X
 X--- src/npw-viewer.sh.orig    2008-12-14 12:24:19.000000000 +0100
 X+++ src/npw-viewer.sh 2011-01-19 12:20:26.000000000 +0100
 X@@ -83,6 +83,13 @@
 X NPW_USE_VALGRIND=${NPW_USE_VALGRIND:-no}
 X can_use_valgrind="no"
 X 
 X+case $OS in
 X+freebsd|netbsd)
 X+    LD_PRELOAD=${NPW_VIEWER_DIR}/libnoanonsocket.so
 X+    export LD_PRELOAD
 X+    ;;
 X+esac
 X+
 X if test "$ARCH" != "$TARGET_ARCH"; then
 X     case $TARGET_ARCH in
 X     i386)
 END-of-patches/patch-ac
 echo x - patches/patch-src_npw-player.c
 sed 's/^X//' >patches/patch-src_npw-player.c << 
'END-of-patches/patch-src_npw-player.c'
 X$NetBSD$
 X
 XAdapt for glib-2.32.
 X
 X--- src/npw-player.c.orig     2009-01-02 08:54:10.000000000 +0000
 X+++ src/npw-player.c
 X@@ -24,8 +24,6 @@
 X #include <dlfcn.h>
 X #include <unistd.h>
 X #include <glib.h>
 X-#include <glib/gstdio.h>
 X-#include <glib/gthread.h>
 X #include <gtk/gtk.h>
 X #include <gdk/gdkx.h>
 X #include <gdk/gdkkeysyms.h>
 END-of-patches/patch-src_npw-player.c
 echo x - patches/patch-src_npw-wrapper.c
 sed 's/^X//' >patches/patch-src_npw-wrapper.c << 
'END-of-patches/patch-src_npw-wrapper.c'
 X--- src/npw-wrapper.c.orig    2012-11-14 16:01:37.000000000 +0100
 X+++ src/npw-wrapper.c 2012-11-14 16:00:38.000000000 +0100
 X@@ -3863,9 +3863,15 @@
 X      return;
 X 
 X   char *connection_path =
 X+#ifdef __linux__
 X      g_strdup_printf("%s/%s/%d-%d/%ld",
 X                                      NPW_CONNECTION_PATH, plugin_file_name,
 X                                      getpid(), init_count, random());
 X+#else
 X+     g_strdup_printf("%s_%s_%d-%d_%ld",
 X+                                     NPW_CONNECTION_PATH, plugin_file_name,
 X+                                     getpid(), init_count, random());
 X+#endif
 X 
 X   // Start plug-in viewer
 X   if ((g_plugin.viewer_pid = fork()) == 0) {
 END-of-patches/patch-src_npw-wrapper.c
 echo x - patches/patch-src_rpc.c
 sed 's/^X//' >patches/patch-src_rpc.c << 'END-of-patches/patch-src_rpc.c'
 X--- src/rpc.c.orig    2011-07-01 05:18:57.000000000 +0200
 X+++ src/rpc.c 2012-11-17 12:14:16.000000000 +0100
 X@@ -609,16 +609,7 @@
 X #if USE_ANONYMOUS_SOCKETS
 X   n = 0;
 X #else
 X-#if 0
 X-  char *tmpdir = getenv("TMPDIR");
 X-  if (tmpdir == NULL)
 X-     tmpdir = "/tmp";
 X-#else
 X-  // XXX don't use TMPDIR because the length of the resulting path
 X-  // could exceed the size of sun_path[] (typically 108 bytes on Linux)
 X-  char *tmpdir = "/tmp";
 X-#endif
 X-  n = strlen(tmpdir);
 X+  n = -1;
 X #endif
 X 
 X   len = strlen(ident);
 X@@ -630,14 +621,8 @@
 X   strcpy(&path[1], ident);
 X   n = 1 + len;
 X #else
 X-  n = sprintf(path, "%s/", tmpdir);
 X-  for (int i = 0; i < len; i++) {
 X-    char ch = ident[i];
 X-    if (ch == '/')
 X-      ch = '_';
 X-    path[n++] = ch;
 X-  }
 X-  path[n] = '\0';
 X+  strcpy(path, ident);
 X+  n = len;
 X #endif
 X 
 X   if (*pathp)
 END-of-patches/patch-src_rpc.c
 echo x - patches/patch-src_sysdeps.h
 sed 's/^X//' >patches/patch-src_sysdeps.h << 
'END-of-patches/patch-src_sysdeps.h'
 X--- src/sysdeps.h.orig        2012-11-14 15:58:12.000000000 +0100
 X+++ src/sysdeps.h     2012-11-14 15:58:23.000000000 +0100
 X@@ -40,7 +40,11 @@
 X #include <limits.h>
 X 
 X // NSPluginWrapper paths and identification strings
 X+#ifdef __linux__
 X #define NPW_CONNECTION_PATH "/org/wrapper/NSPlugins"
 X+#else
 X+#define NPW_CONNECTION_PATH "/tmp/_org_wrapper_NSPlugins"
 X+#endif
 X #define NPW_VIEWER_BASE "npviewer"
 X #define NPW_VIEWER NPW_VIEWER_BASE
 X #define NPW_WRAPPER_BASE "npwrapper"
 END-of-patches/patch-src_sysdeps.h
 exit
 


Home | Main Index | Thread Index | Old Index