NPAPI/XPI support in native gecko apps and other ports

Andrew Pantyukhin infofarmer at gmail.com
Sat Jul 29 23:16:52 UTC 2006


Hello!

As you might have noticed, I've been working on NPAPI and
XPI infrastructures to make user experience more enjoyable
while improving flexibility of the way plugins and extensions
are managed.

I understand (http://wiki.freebsd.org/Gnome) there are plans
to devise a separate helper port which would create links and
manage browser_plugins dir. I wanted to go the very same
way with XPI, but I seem to have found an alternative, which
some find more likeable.

Implementation details can be found here:
http://wiki.freebsd.org/NPAPI
http://wiki.freebsd.org/XPI
http://wiki.freebsd.org/Linkfarming

In a nutshell, to make an app fully NPAPI/XPI-compatible
you need to:

a. Copy links on installation (a line in Makefile and in plist)
b. Preen links on deinstallation (a line in plist)

To give an idea, some linux-gecko ports have these lines:

in do-install targets:

@${CP} -R ${LOCALBASE}/lib/npapi/symlinks/${APP_NAME}/ \
  ${PREFIX}/lib/${APP_NAME}/plugins/
@${CP} -R ${LOCALBASE}/lib/xpi/symlinks/${APP_NAME}/ \
  ${PREFIX}/lib/${APP_NAME}/extensions/

in plists:

@exec /bin/cp -R %%LOCALBASE%%/lib/npapi/symlinks/%%APP_NAME%%/
%D/lib/%%APP_NAME%%/plugins/
@exec /bin/cp -R %%LOCALBASE%%/lib/xpi/symlinks/%%APP_NAME%%/
%D/lib/%%APP_NAME%%/extensions/
@unexec /usr/bin/find %D/lib/%%APP_NAME%%/plugins/  -depth 1 -type l -delete
@unexec /usr/bin/find %D/lib/%%APP_NAME%%/extensions/  -depth 1 -type l -delete

It is a good idea to add "2>/dev/null || true" at the end of each line.

As you can see, only 3 lines are needed for NPAPI (plugins) support
and 3 lines for XPI (extensions) support.

It would be great if we could work together and introduce the
support to the apps you maintain. If there's anything you don't
like about infrastructure, it's quite understandable and let's
discuss it. The final goal is to make both users and developers
a little bit happier.

Thanks!


More information about the freebsd-gnome mailing list