diff options
author | Mikhail Teterin <mi@FreeBSD.org> | 2007-03-20 05:33:38 +0800 |
---|---|---|
committer | Mikhail Teterin <mi@FreeBSD.org> | 2007-03-20 05:33:38 +0800 |
commit | ef62575d24cb1b5c35dfc1b0acf1c3aff3349213 (patch) | |
tree | 7e99283642a4744d730c40791100936dfd2ef2c1 /www/helixplugin | |
parent | fd0ad26af3b779de2bca70a19d6b9ce528d1e091 (diff) | |
download | freebsd-ports-gnome-ef62575d24cb1b5c35dfc1b0acf1c3aff3349213.tar.gz freebsd-ports-gnome-ef62575d24cb1b5c35dfc1b0acf1c3aff3349213.tar.zst freebsd-ports-gnome-ef62575d24cb1b5c35dfc1b0acf1c3aff3349213.zip |
Build the Helix/Real browser plugin as native FreeBSD shared library.
The pluging starts an external `realplay' executable anyway, so the
realplay can remain of Linux version, working cleanly with the FreeBSD
browsers.
Adobe is using the same method for Acrobat Reader, but does not publish
the plugin's source.
Diffstat (limited to 'www/helixplugin')
-rw-r--r-- | www/helixplugin/Makefile | 31 | ||||
-rw-r--r-- | www/helixplugin/distinfo | 3 | ||||
-rw-r--r-- | www/helixplugin/files/BSDmakefile | 34 | ||||
-rw-r--r-- | www/helixplugin/files/patch-headers | 66 | ||||
-rw-r--r-- | www/helixplugin/files/patch-obsoletetimer | 178 | ||||
-rw-r--r-- | www/helixplugin/files/patch-unicode | 39 | ||||
-rw-r--r-- | www/helixplugin/pkg-descr | 17 | ||||
-rw-r--r-- | www/helixplugin/pkg-message | 10 |
8 files changed, 378 insertions, 0 deletions
diff --git a/www/helixplugin/Makefile b/www/helixplugin/Makefile new file mode 100644 index 000000000000..d7b7814252fd --- /dev/null +++ b/www/helixplugin/Makefile @@ -0,0 +1,31 @@ +# New ports collection makefile for: helixplugin +# Date created: October 22, 2006 +# Whom: Mikhail T <mi@aldan.algebra.com> +# +# $FreeBSD$ +# + +PORTNAME= hxplugin +PORTVERSION= 20070318 +CATEGORIES= www multimedia +MASTER_SITES= http://virtual-estates.net/~mi/port-stuff/ + +MAINTAINER= mi@aldan.algebra.com +COMMENT= Browser plugin for Real or Helix Players + +USE_BZIP2 = yes +USE_DOS2UNIX = yes +MAKEFILE = ${FILESDIR}/BSDmakefile +#USE_GECKO = firefox mozilla seamonkey xulrunner firefox-devel +USE_GECKO = ${_GECKO_ALL} +MAKE_ENV += TOP="${WRKSRC}" GECKO=${GECKO} + +PDIR ?= lib/browser_plugins +PLIST_FILES= ${PDIR}/helix.so ${PDIR}/nphelix.xpt + +do-install: + ${INSTALL_DATA} ${PLIST_FILES:S|${PDIR}|${WRKSRC}|} ${PREFIX}/${PDIR}/ + +.include <bsd.port.pre.mk> +.include "${PORTSDIR}/www/mozilla/bsd.gecko.mk" +.include <bsd.port.post.mk> diff --git a/www/helixplugin/distinfo b/www/helixplugin/distinfo new file mode 100644 index 000000000000..5eb1aba4c5c7 --- /dev/null +++ b/www/helixplugin/distinfo @@ -0,0 +1,3 @@ +MD5 (hxplugin-20070318.tar.bz2) = 52747a603be3b064e8673a2ee54de50b +SHA256 (hxplugin-20070318.tar.bz2) = 1d6f8f913aee645be6f7bcdff5c8cdec414d77ba1ad773013499ef5b84b2cc70 +SIZE (hxplugin-20070318.tar.bz2) = 56721 diff --git a/www/helixplugin/files/BSDmakefile b/www/helixplugin/files/BSDmakefile new file mode 100644 index 000000000000..3c3a1a3ce139 --- /dev/null +++ b/www/helixplugin/files/BSDmakefile @@ -0,0 +1,34 @@ +SHLIB_NAME = helix.so + +CXXFLAGS += -D_UNIX -DMOZ_X11 -I${LOCALBASE}/include/nspr +CXXFLAGS += -I${LOCALBASE}/include/${GECKO}/uconv +CXXFLAGS += -I${LOCALBASE}/include/${GECKO}/xpcom +CXXFLAGS += -I${LOCALBASE}/include/${GECKO}/npapi +CXXFLAGS += -I${LOCALBASE}/include/${GECKO}/string +CXXFLAGS += -I${LOCALBASE}/include/${GECKO} +CXXFLAGS += -I${X11BASE}/include +CXXFLAGS += -I${TOP}/player/app/plugin/include +CXXFLAGS += -I${TOP}/player/app/gtk/pub + +SRCS = hxbackend.cpp \ + np_entry.cpp \ + npn_gate.cpp \ + npp_gate.cpp \ + nsHXPlayer.cpp \ + plugin.cpp \ + tokenizer.cpp + +XPIDL ?= ${LOCALBASE}/lib/${GECKO}/xpidl +XPTLINK ?= ${XPIDL:H}/xpt_link +SHARE_IDL != echo ${LOCALBASE}/share/idl/${GECKO:S/-devel/-2/}* + +.PATH: ${TOP}/player/app/plugin ${TOP}/player/app/plugin/common + +nphelix.xpt: nsIHXPlayer.idl + ${XPIDL} -m header -I${SHARE_IDL} ${.ALLSRC} + ${XPIDL} -m typelib -I${SHARE_IDL} ${.ALLSRC} + ${XPTLINK} $@ nsIHXPlayer.xpt + +all: nphelix.xpt + +.include <bsd.lib.mk> diff --git a/www/helixplugin/files/patch-headers b/www/helixplugin/files/patch-headers new file mode 100644 index 000000000000..0d51b27d74ae --- /dev/null +++ b/www/helixplugin/files/patch-headers @@ -0,0 +1,66 @@ +Use browser-installed headers instead of the bundled (obsolete) +copies... + +Fix other bugs/deficiencies... + + -mi + +--- player/app/plugin/nsHXPlayer.cpp Mon Nov 22 19:24:25 2004 ++++ player/app/plugin/nsHXPlayer.cpp Tue Oct 24 13:13:00 2006 +@@ -56,5 +56,4 @@ + #include "hxbackend.h" + #include "tokenizer.h" +-#include "asprintf.h" + + #include <stdlib.h> +--- player/app/plugin/hxbackend.cpp Sun Oct 22 13:33:21 2006 ++++ player/app/plugin/hxbackend.cpp Sun Oct 22 13:50:24 2006 +@@ -66,13 +66,10 @@ + #include <signal.h> + +-#include "npplat.h" +-#include "hxbackend.h" +-#include "asprintf.h" +- + #include "tokenizer.h" ++#include "hxbackend.h" + +-#include "nsIServiceManager.h" +-#include "nsIComponentManager.h" +-#include "nsIDOMWindow.h" ++#include <nsIServiceManager.h> ++#include <nsIComponentManager.h> ++#include <nsIDOMWindow.h> + + #define EXIT_CODE_UNKNOWN 0 +@@ -358,5 +357,5 @@ nsresult CHXPlayerBackend::ReceiveMessag + { + /* Trim back the buffer to the size we actually used (plus NULL) */ +- pBuf = (char*)realloc(pBuf, nPos + 1); ++ *ppBuf = (char*)realloc(pBuf, nPos + 1); + } + else +@@ -509,5 +500,5 @@ + fcntl(cbsockets[1], F_SETFD, 0); + +- m_nChildPid = fork(); ++ m_nChildPid = vfork(); + if(m_nChildPid < 0) + { +--- player/app/plugin/nsHXPlayer.h Sun Oct 22 13:59:54 2006 ++++ player/app/plugin/nsHXPlayer.h Sun Oct 22 14:11:15 2006 +@@ -51,10 +51,10 @@ + #define __NS_HXPLAYER_H__ + +-#include "nsISupports.h" +-#include "nsIClassInfo.h" ++#include <nsISupports.h> ++#include <nsIClassInfo.h> + #include "nsIHXPlayer.h" +-#include "nsISupportsImpl.h" ++#include <nsISupportsImpl.h> + #include "embddef.h" +-#include "npapi.h" ++#include <npapi.h> + #include "pluginbase.h" + diff --git a/www/helixplugin/files/patch-obsoletetimer b/www/helixplugin/files/patch-obsoletetimer new file mode 100644 index 000000000000..8cc046371f77 --- /dev/null +++ b/www/helixplugin/files/patch-obsoletetimer @@ -0,0 +1,178 @@ +Don't look for the ancient nsIScriptableTimer.h header and its +long-obsolete content... + + -mi + +--- player/app/plugin/hxbackend.h Mon Nov 22 19:24:25 2004 ++++ player/app/plugin/hxbackend.h Sun Jul 2 01:13:09 2006 +@@ -62,9 +62,4 @@ + #include "nsIObserver.h" + +-/* Mozilla 1.0-1.2 had nsIScriptableTimer.h and a different nsITimer.h. We +- use the nsIScriptableTimer version to avoid conflicts with the newer +- nsITimer. */ +-#include "nsIScriptableTimer.h" +- + /* Mozilla 1.3+ have the modern nsITimer */ + #include "nsITimer.h" +@@ -106,5 +101,5 @@ + nsresult ReadGenericResponse(PRBool *retval); + +- PRBool AreCallbacksSupported(void) { return m_pTimer || m_pObsoleteTimer; } ++ PRBool AreCallbacksSupported(void) { return m_pTimer != NULL; } + + private: +@@ -129,5 +124,4 @@ + + nsITimer *m_pTimer; +- nsIScriptableTimer *m_pObsoleteTimer; // Only found in old mozilla's + nsIScriptableUnicodeConverter *m_pUConv; + nsIPromptService *m_pPromptService; +--- player/app/plugin/nsHXPlayer.cpp Mon Nov 22 19:24:25 2004 ++++ player/app/plugin/nsHXPlayer.cpp Sun Jul 2 01:47:25 2006 +@@ -560,8 +560,8 @@ + XFlush(ws_info->display); + +- nLen = asprintf(&pMsg, "%s %d %d %d %d %d %d %d %d %d %d %d\n", ++ nLen = asprintf(&pMsg, "%s %td %d %d %d %d %d %d %d %d %d %d\n", + szCommand, + m_iPlayerID, +- (int)aWindow->window, ++ (intptr_t)aWindow->window, + aWindow->x, + aWindow->y, +@@ -602,5 +602,4 @@ + PRBool retval; + unsigned int nStreamLength; +- int nStreamId = 0; + + nStreamLength = ( stream->end > 0 ) ? stream->end : 0; +@@ -617,16 +616,7 @@ + *stype = NP_NORMAL; + +- if(m_bIsFirstNewStream) +- { +- nStreamId = 0; +- } +- else +- { +- nStreamId = (int)stream; +- } +- +- nLen = asprintf(&pMsg, "NewStream %d %d %s %s %d\n", ++ nLen = asprintf(&pMsg, "NewStream %d %td %s %s %d\n", + m_iPlayerID, +- nStreamId, ++ (intptr_t)(m_bIsFirstNewStream ? 0 : stream), + stream->url, + type, +@@ -671,5 +661,5 @@ + (void)offset; + +- nLen = asprintf(&pMsg, "StreamData %d %d %d\n", m_iPlayerID, (int)streamID, nDataLen); ++ nLen = asprintf(&pMsg, "StreamData %d %td %d\n", m_iPlayerID, (intptr_t)streamID, nDataLen); + result = m_pBackend->SendMessage(pMsg, nLen); + free(pMsg); +@@ -704,5 +694,5 @@ + const void *streamID = (void*)stream; + +- nLen = asprintf(&pMsg, "StreamDone %d %d\n", m_iPlayerID, (int)streamID); ++ nLen = asprintf(&pMsg, "StreamDone %d %td\n", m_iPlayerID, (intptr_t)streamID); + result = m_pBackend->SendMessage(pMsg, nLen); + free(pMsg); +--- player/app/plugin/hxbackend.cpp Mon Nov 22 19:24:25 2004 ++++ player/app/plugin/hxbackend.cpp Sun Jul 2 02:37:29 2006 +@@ -153,5 +153,4 @@ + m_nCallbackBufPos(0), + m_pTimer(NULL), +- m_pObsoleteTimer(NULL), + m_pUConv(NULL), + m_pPromptService(NULL), +@@ -424,13 +423,5 @@ + (void**)&m_pTimer); + +- if(!m_pTimer) +- { +- /* Try to get an old-style mozilla 1.0-1.2 timer */ +- pComponentManager->CreateInstanceByContractID(NS_TIMER_CONTRACTID, +- NULL, +- NS_GET_IID(nsIScriptableTimer), +- (void**)&m_pObsoleteTimer); +- } +- ++ + NS_RELEASE(pComponentManager); + } +@@ -545,5 +536,5 @@ + sprintf(cbSd, "%d", cbsockets[1]); + +- if (m_pTimer || m_pObsoleteTimer) ++ if (m_pTimer) + { + /* We have a timer callback, include --callbacks flag */ +@@ -716,13 +699,4 @@ + free(szJavaScriptAlert); + } +- +- if(pUnicodeTitle) +- { +- m_pMemory->Free(pUnicodeTitle); +- } +- if(pUnicodeMessage) +- { +- m_pMemory->Free(pUnicodeMessage); +- } + } + +@@ -894,5 +868,5 @@ + m_pTimer->Init(pTimerFob, + 500, +- nsIScriptableTimer::TYPE_REPEATING_SLACK); ++ nsITimer::TYPE_REPEATING_SLACK); + m_pTimer->Cancel(); + +@@ -901,20 +875,4 @@ + } + +- if(m_pObsoleteTimer) +- { +- m_pObsoleteTimer->Cancel(); +- +- /* Re-initing causes the timer to unref this and switch its ref +- to pTimerFob instead */ +- m_pObsoleteTimer->Init(pTimerFob, +- 500, +- nsIScriptableTimer::PRIORITY_NORMAL, +- nsIScriptableTimer::TYPE_REPEATING_SLACK); +- m_pObsoleteTimer->Cancel(); +- +- NS_RELEASE(m_pObsoleteTimer); +- m_pObsoleteTimer = NULL; +- } +- + NS_RELEASE(pTimerFob); + +@@ -1187,12 +1145,4 @@ + nsITimer::TYPE_REPEATING_SLACK); + } +- else if(m_pObsoleteTimer) +- { +- m_bCallbackTimerRunning = PR_TRUE; +- m_pObsoleteTimer->Init(this, +- 500, +- nsIScriptableTimer::PRIORITY_NORMAL, +- nsIScriptableTimer::TYPE_REPEATING_SLACK); +- } + } + +@@ -1205,10 +1155,3 @@ + m_pTimer->Cancel(); + } +- if(m_pObsoleteTimer) +- { +- m_bCallbackTimerRunning = PR_FALSE; +- m_pObsoleteTimer->Cancel(); +- } + } +- +- diff --git a/www/helixplugin/files/patch-unicode b/www/helixplugin/files/patch-unicode new file mode 100644 index 000000000000..270fdf9e1b78 --- /dev/null +++ b/www/helixplugin/files/patch-unicode @@ -0,0 +1,39 @@ +--- player/app/plugin/hxbackend.cpp Mon Mar 19 14:45:03 2007 ++++ player/app/plugin/hxbackend.cpp Mon Mar 19 16:49:02 2007 +@@ -72,4 +72,5 @@ + #include <nsIComponentManager.h> + #include <nsIDOMWindow.h> ++#include <nsStringAPI.h> + + #define EXIT_CODE_UNKNOWN 0 +@@ -710,17 +702,13 @@ + if(instance) + { +- PRUnichar *pUnicodeTitle = NULL; +- PRUnichar *pUnicodeMessage = NULL; +- + NPN_GetValue(instance, NPNVDOMWindow, &pDomWindow); + +- if(m_pPromptService && m_pUConv && m_pMemory && pDomWindow) +- { +- m_pUConv->ConvertToUnicode("Helix DNA Plugin Error", &pUnicodeTitle); +- m_pUConv->ConvertToUnicode(szError, &pUnicodeMessage); +- } +- +- if(pUnicodeTitle && pUnicodeMessage && m_pPromptService && m_pMemory && pDomWindow) ++ if(m_pPromptService && m_pMemory && pDomWindow) + { ++ nsString UnicodeMessage, UnicodeTitle; ++ ++ NS_CStringToUTF16(nsCString(szError), NS_CSTRING_ENCODING_ASCII, UnicodeMessage); ++ NS_CStringToUTF16(nsCString("Helix DNA Plugin Error"), NS_CSTRING_ENCODING_ASCII, UnicodeTitle); ++ + /* Cancel the callback timer while the alert dialog is up to + prevent a race (eg, the timer callback can call Shutdown(), +@@ -730,5 +718,5 @@ + StopCallbackTimer(); + +- m_pPromptService->Alert(pDomWindow, pUnicodeTitle, pUnicodeMessage); ++ m_pPromptService->Alert(pDomWindow, UnicodeTitle.get(), UnicodeMessage.get()); + + if(bRestartCallbackTimer) diff --git a/www/helixplugin/pkg-descr b/www/helixplugin/pkg-descr new file mode 100644 index 000000000000..beb46e09e173 --- /dev/null +++ b/www/helixplugin/pkg-descr @@ -0,0 +1,17 @@ +Real (and Helix) browser plugins do little else, but start the separate +"realplay" executable and talk to it. + +This port builds and installs this simple plugin part. The port allows +to use native FreeBSD browsers with the realplay executable built for +Linux (installed by multimedia/linux-realplayer). + +Although the multimedia/helixplayer port installs a modern version of +the player, it lacks certain codecs, which Real/Helix are not allowed to +(or would not) open-source. + +This port's "source" is extracted verbatim from the Helix-player's, +which is much larger. + +Although tested primarily against firefox, it should build any other +Mozilla-family browser's headers. Care is taken to NOT include browser +headers typically bundled by Helix/Real... diff --git a/www/helixplugin/pkg-message b/www/helixplugin/pkg-message new file mode 100644 index 000000000000..f404bc7c4ac1 --- /dev/null +++ b/www/helixplugin/pkg-message @@ -0,0 +1,10 @@ + +The port will try to use either "realplay" (see +multimedia/linux-reaplayer) or "hxplay" (see multimedia/helixplayer) +executables. + +If you'd like to make the plugin execute anything other than "realplay" +or "hxplay" (based on your PATH), sym-link desired executable to +"realplayer" (or to hxplay), or run the browser with the environment +variable HELIX_PLUGIN_PLAYER_OVERRIDE pointing to the executable you +wish. |