aboutsummaryrefslogtreecommitdiffstats
path: root/deskutils
diff options
context:
space:
mode:
authorahze <ahze@FreeBSD.org>2008-06-09 08:52:55 +0800
committerahze <ahze@FreeBSD.org>2008-06-09 08:52:55 +0800
commit02aad60aed57285465423df0292621e63e2af2d2 (patch)
tree988f83e1c592057e241183212fcbec0afd4968ca /deskutils
parent6f947caa3c775ffe9477101df3f0624774bf7d31 (diff)
downloadfreebsd-ports-gnome-02aad60aed57285465423df0292621e63e2af2d2.tar.gz
freebsd-ports-gnome-02aad60aed57285465423df0292621e63e2af2d2.tar.zst
freebsd-ports-gnome-02aad60aed57285465423df0292621e63e2af2d2.zip
Add google-gadgets 0.9.2, google Desktop Gadgets.
PR: ports/124403 Submitted by: Ashish Shukla <wahjava at gmail.com>
Diffstat (limited to 'deskutils')
-rw-r--r--deskutils/Makefile1
-rw-r--r--deskutils/google-gadgets/Makefile50
-rw-r--r--deskutils/google-gadgets/distinfo3
-rw-r--r--deskutils/google-gadgets/files/patch-configure.ac19
-rw-r--r--deskutils/google-gadgets/files/patch-extensions_gst__audio__framework_gst__audio__framework.cc77
-rw-r--r--deskutils/google-gadgets/files/patch-extensions_gst__mediaplayer__element_gadget__videosink.cc50
-rw-r--r--deskutils/google-gadgets/files/patch-extensions_gst__mediaplayer__element_gst__mediaplayer__element.cc124
-rw-r--r--deskutils/google-gadgets/files/patch-extensions_gtk__system__framework_gtk__system__framework.cc14
-rw-r--r--deskutils/google-gadgets/files/patch-extensions_gtkmoz__browser__element_browser__element.cc14
-rw-r--r--deskutils/google-gadgets/files/patch-extensions_linux__system__framework_file__system.cc49
-rw-r--r--deskutils/google-gadgets/files/patch-ggadget_gtk_utilities.cc14
-rw-r--r--deskutils/google-gadgets/pkg-descr4
-rw-r--r--deskutils/google-gadgets/pkg-plist174
13 files changed, 593 insertions, 0 deletions
diff --git a/deskutils/Makefile b/deskutils/Makefile
index 9a4e7f88ee53..603047d716fe 100644
--- a/deskutils/Makefile
+++ b/deskutils/Makefile
@@ -84,6 +84,7 @@
SUBDIR += gnustep-notebook
SUBDIR += gnustep-wrapper
SUBDIR += gnuwash
+ SUBDIR += google-gadgets
SUBDIR += gourmet
SUBDIR += griffith
SUBDIR += gruler
diff --git a/deskutils/google-gadgets/Makefile b/deskutils/google-gadgets/Makefile
new file mode 100644
index 000000000000..a914ee57d5c3
--- /dev/null
+++ b/deskutils/google-gadgets/Makefile
@@ -0,0 +1,50 @@
+# New ports collection makefile for: google-gadgets
+# Date created: 2008-06-08
+# Whom: Ashish Shukla <wahjava@gmail.com>
+#
+# $FreeBSD$
+#
+
+PORTNAME= google-gadgets
+PORTVERSION= 0.9.2
+CATEGORIES= deskutils
+MASTER_SITES= http://google-gadgets-for-linux.googlecode.com/files/
+DISTNAME= ${PORTNAME}-for-linux-${PORTVERSION}
+
+MAINTAINER= wahjava@gmail.com
+COMMENT= Google Desktop Gadgets
+
+BUILD_DEPENDS= ${LOCALBASE}/libdata/pkgconfig/dbus-1.pc:${PORTSDIR}/devel/dbus \
+ ${LOCALBASE}/libdata/pkgconfig/firefox-js.pc:${PORTSDIR}/www/firefox \
+ ${LOCALBASE}/libdata/pkgconfig/libcurl.pc:${PORTSDIR}/ftp/curl \
+ ${LOCALBASE}/libdata/pkgconfig/libxml-2.0.pc:${PORTSDIR}/textproc/libxml2 \
+ ${LOCALBASE}/libdata/pkgconfig/firefox-gtkmozembed.pc:${PORTSDIR}/www/firefox \
+ ${LOCALBASE}/libdata/pkgconfig/cairo.pc:${PORTSDIR}/graphics/cairo \
+ ${LOCALBASE}/libdata/pkgconfig/librsvg-2.0.pc:${PORTSDIR}/graphics/librsvg2
+LIB_DEPENDS= cairo.2:${PORTSDIR}/graphics/cairo \
+ xml2.5:${PORTSDIR}/textproc/libxml2 \
+ dbus-1.3:${PORTSDIR}/devel/dbus \
+ curl.4:${PORTSDIR}/ftp/curl \
+ rsvg-2.2:${PORTSDIR}/graphics/librsvg2
+RUN_DEPENDS= ${LOCALBASE}/libdata/pkgconfig/firefox-js.pc:${PORTSDIR}/www/firefox
+
+USE_LDCONFIG= yes
+USE_GMAKE= yes
+USE_GNOME= gnomehack gtk20
+USE_GSTREAMER= yes
+GNU_CONFIGURE= yes
+CONFIGURE_ENV= CFLAGS="-I${LOCALBASE}/include" CPPFLAGS="-I${LOCALBASE}/include" LDFLAGS="-L${LOCALBASE}/lib"
+CONFIGURE_ARGS= --disable-qt-host --enable-ltdl-install=no
+USE_AUTOTOOLS= libtool:15:env autoconf:261:env automake:110:env aclocal:110:env
+
+.if defined(WITH_DEBUGGING)
+CONFIGURE_ARGS+= --enable-debug
+.endif
+
+post-patch:
+ @${FIND} ${WRKSRC} -type f -name Makefile.am -exec ${GREP} -l pkgconfig {} \; | ${XARGS} ${REINPLACE_CMD} -e 's|^\(pkgconfigdir[[:space:]]*=\).*|\1 $$(prefix)/libdata/pkgconfig|'
+
+pre-configure:
+ @cd ${WRKSRC} && ${SH} autotools/bootstrap.sh && ${CP} ${AUTOMAKE_DIR}/mkinstalldirs libltdl/
+
+.include <bsd.port.mk>
diff --git a/deskutils/google-gadgets/distinfo b/deskutils/google-gadgets/distinfo
new file mode 100644
index 000000000000..b8ba718e75d5
--- /dev/null
+++ b/deskutils/google-gadgets/distinfo
@@ -0,0 +1,3 @@
+MD5 (google-gadgets-for-linux-0.9.2.tar.gz) = 5c2a64b549b958af030cf3178998cdb7
+SHA256 (google-gadgets-for-linux-0.9.2.tar.gz) = 4918565eafa989f0c027a2ab5592a483eb5fde059ce15e1eb8a239edfd3a82ad
+SIZE (google-gadgets-for-linux-0.9.2.tar.gz) = 2335255
diff --git a/deskutils/google-gadgets/files/patch-configure.ac b/deskutils/google-gadgets/files/patch-configure.ac
new file mode 100644
index 000000000000..f6e1d4b62ea0
--- /dev/null
+++ b/deskutils/google-gadgets/files/patch-configure.ac
@@ -0,0 +1,19 @@
+
+$FreeBSD$
+
+--- configure.ac.orig
++++ configure.ac
+@@ -325,6 +325,13 @@
+ GGL_PLATFORM_SHORT=\"linux\"
+ GGL_PLATFORM=\"linux\"
+ ;;
++ *freebsd* )
++ ggl_host_type=freebsd
++ PREDEFINED_MACROS="$PREDEFINED_MACROS -DGGL_HOST_LINUX=1"
++ build_linux_system_framework=yes
++ GGL_PLATFORM_SHORT=\"freebsd\"
++ GGL_PLATFORM=\"freebsd\"
++ ;;
+ *solaris* )
+ ggl_host_type=solaris
+ PREDEFINED_MACROS="$PREDEFINED_MACROS -DGGL_HOST_SOLARIS=1"
diff --git a/deskutils/google-gadgets/files/patch-extensions_gst__audio__framework_gst__audio__framework.cc b/deskutils/google-gadgets/files/patch-extensions_gst__audio__framework_gst__audio__framework.cc
new file mode 100644
index 000000000000..97b62c69f2cd
--- /dev/null
+++ b/deskutils/google-gadgets/files/patch-extensions_gst__audio__framework_gst__audio__framework.cc
@@ -0,0 +1,77 @@
+
+$FreeBSD$
+
+--- extensions/gst_audio_framework/gst_audio_framework.cc.orig
++++ extensions/gst_audio_framework/gst_audio_framework.cc
+@@ -91,7 +91,7 @@
+ }
+
+ // Use fakesink as video-sink to discard the video output.
+- g_object_set(G_OBJECT(playbin_), "video-sink", videosink, NULL);
++ g_object_set(G_OBJECT(playbin_), "video-sink", videosink, (gchar*)0);
+
+ // Create new audio sink with panorama support if possible.
+ GstElement *audiosink = NULL;
+@@ -114,7 +114,7 @@
+ // panorama support.
+ if (panorama_) {
+ GstElement *audiobin = gst_bin_new("audiobin");
+- gst_bin_add_many(GST_BIN(audiobin), panorama_, audiosink, NULL);
++ gst_bin_add_many(GST_BIN(audiobin), panorama_, audiosink, (GstElement*)0);
+ gst_element_link(panorama_, audiosink);
+ GstPad *sinkpad = gst_element_get_pad(panorama_, "sink");
+ gst_element_add_pad(audiobin, gst_ghost_pad_new("sink", sinkpad));
+@@ -123,7 +123,7 @@
+ }
+
+ // Set audio-sink to our new audiosink.
+- g_object_set(G_OBJECT(playbin_), "audio-sink", audiosink, NULL);
++ g_object_set(G_OBJECT(playbin_), "audio-sink", audiosink, (gchar*)0);
+
+ // Watch the message bus.
+ // The host using this class must use a g_main_loop to capture the
+@@ -153,7 +153,7 @@
+ virtual int GetBalance() const {
+ if (playbin_ && panorama_) {
+ gfloat balance;
+- g_object_get(G_OBJECT(panorama_), "panorama", &balance, NULL);
++ g_object_get(G_OBJECT(panorama_), "panorama", &balance, (gchar*)0);
+ int gg_balance = static_cast<int>(((balance + 1) / 2) *
+ (kMaxBalance - kMinBalance) +
+ kMinBalance);
+@@ -177,7 +177,7 @@
+ }
+ gfloat gst_balance =
+ (gfloat(balance - kMinBalance) / (kMaxBalance - kMinBalance)) * 2 - 1;
+- g_object_set(G_OBJECT(panorama_), "panorama", gst_balance, NULL);
++ g_object_set(G_OBJECT(panorama_), "panorama", gst_balance, (gchar*)0);
+ } else {
+ if (!playbin_)
+ DLOG("Playbin was not initialized correctly.");
+@@ -237,7 +237,7 @@
+ // FIXME:
+ // Playbin won't produce ERROR whether it's a bad uri or the file's
+ // format is not supported. We must check here.
+- g_object_set(G_OBJECT(playbin_), "uri", src, NULL);
++ g_object_set(G_OBJECT(playbin_), "uri", src, (gchar*)0);
+ } else {
+ if (!playbin_)
+ DLOG("Playbin was not initialized correctly.");
+@@ -253,7 +253,7 @@
+ virtual int GetVolume() const {
+ if (playbin_) {
+ double volume;
+- g_object_get(G_OBJECT(playbin_), "volume", &volume, NULL);
++ g_object_get(G_OBJECT(playbin_), "volume", &volume, (gchar*)0);
+ int gg_volume = static_cast<int>((volume / kMaxGstVolume) *
+ (kMaxVolume - kMinVolume) +
+ kMinVolume);
+@@ -275,7 +275,7 @@
+ (gdouble(volume - kMinVolume) / (kMaxVolume - kMinVolume)) *
+ kMaxGstVolume;
+
+- g_object_set(G_OBJECT(playbin_), "volume", gst_volume, NULL);
++ g_object_set(G_OBJECT(playbin_), "volume", gst_volume, (gchar*)0);
+ } else {
+ DLOG("Playbin was not initialized correctly.");
+ }
diff --git a/deskutils/google-gadgets/files/patch-extensions_gst__mediaplayer__element_gadget__videosink.cc b/deskutils/google-gadgets/files/patch-extensions_gst__mediaplayer__element_gadget__videosink.cc
new file mode 100644
index 000000000000..47841b3f57bb
--- /dev/null
+++ b/deskutils/google-gadgets/files/patch-extensions_gst__mediaplayer__element_gadget__videosink.cc
@@ -0,0 +1,50 @@
+
+$FreeBSD$
+
+--- extensions/gst_mediaplayer_element/gadget_videosink.cc.orig
++++ extensions/gst_mediaplayer_element/gadget_videosink.cc
+@@ -454,10 +454,10 @@
+ nom = gst_value_get_fraction_numerator(videosink->par_);
+ den = gst_value_get_fraction_denominator(videosink->par_);
+ gst_structure_set(structure, "pixel-aspect-ratio",
+- GST_TYPE_FRACTION, nom, den, NULL);
++ GST_TYPE_FRACTION, nom, den, (gchar*)0);
+ } else {
+ gst_structure_set(structure, "pixel-aspect-ratio",
+- GST_TYPE_FRACTION, 1, 1, NULL);
++ GST_TYPE_FRACTION, 1, 1, (gchar*)0);
+ }
+ }
+
+@@ -669,18 +669,18 @@
+ desired_caps = gst_caps_copy(caps);
+ desired_struct = gst_caps_get_structure(desired_caps, 0);
+
+- gst_structure_set (desired_struct, "width", G_TYPE_INT, result.w, NULL);
+- gst_structure_set (desired_struct, "height", G_TYPE_INT, result.h, NULL);
++ gst_structure_set (desired_struct, "width", G_TYPE_INT, result.w, (gchar*)0);
++ gst_structure_set (desired_struct, "height", G_TYPE_INT, result.h, (gchar*)0);
+
+ // PAR property overrides the default one.
+ if (videosink->par_) {
+ nom = gst_value_get_fraction_numerator(videosink->par_);
+ den = gst_value_get_fraction_denominator(videosink->par_);
+ gst_structure_set(desired_struct, "pixel-aspect-ratio",
+- GST_TYPE_FRACTION, nom, den, NULL);
++ GST_TYPE_FRACTION, nom, den, (gchar*)0);
+ } else {
+ gst_structure_set(desired_struct, "pixel-aspect-ratio",
+- GST_TYPE_FRACTION, 1, 1, NULL);
++ GST_TYPE_FRACTION, 1, 1, (gchar*)0);
+ }
+
+ // see if peer accepts our new suggestion, if there is no peer, this
+@@ -892,7 +892,7 @@
+ nom = gst_value_get_fraction_numerator(par_);
+ den = gst_value_get_fraction_denominator(par_);
+ gst_caps_set_simple(caps_, const_cast<gchar*>("pixel-aspect-ratio"),
+- GST_TYPE_FRACTION, 1, 1, NULL);
++ GST_TYPE_FRACTION, 1, 1, (gchar*)0);
+ }
+
+ // This function converts the image format if necessary, puts the image into
diff --git a/deskutils/google-gadgets/files/patch-extensions_gst__mediaplayer__element_gst__mediaplayer__element.cc b/deskutils/google-gadgets/files/patch-extensions_gst__mediaplayer__element_gst__mediaplayer__element.cc
new file mode 100644
index 000000000000..d2d9fd5cdbf4
--- /dev/null
+++ b/deskutils/google-gadgets/files/patch-extensions_gst__mediaplayer__element_gst__mediaplayer__element.cc
@@ -0,0 +1,124 @@
+
+$FreeBSD$
+
+--- extensions/gst_mediaplayer_element/gst_mediaplayer_element.cc.orig
++++ extensions/gst_mediaplayer_element/gst_mediaplayer_element.cc
+@@ -133,7 +133,7 @@
+ return;
+ } else {
+ g_object_get(G_OBJECT(videosink_),
+- "receive-image-handler", &receive_image_handler_, NULL);
++ "receive-image-handler", &receive_image_handler_, (gchar*)0);
+ if (!receive_image_handler_) {
+ gst_object_unref(GST_OBJECT(playbin_));
+ gst_object_unref(GST_OBJECT(videosink_));
+@@ -143,7 +143,7 @@
+ }
+
+ // Set videosink to receive video output.
+- g_object_set(G_OBJECT(playbin_), "video-sink", videosink_, NULL);
++ g_object_set(G_OBJECT(playbin_), "video-sink", videosink_, (gchar*)0);
+
+ // Create new audio sink with panorama support if possible.
+ GstElement *audiosink = NULL;
+@@ -169,15 +169,15 @@
+ GstElement *audiobin = gst_bin_new("audiobin");
+ GstPad *sinkpad;
+ if (volume_ && panorama_) {
+- gst_bin_add_many(GST_BIN(audiobin), volume_, panorama_, audiosink, NULL);
+- gst_element_link_many(volume_, panorama_, audiosink, NULL);
++ gst_bin_add_many(GST_BIN(audiobin), volume_, panorama_, audiosink, (GstElement*)0);
++ gst_element_link_many(volume_, panorama_, audiosink, (GstElement*)0);
+ sinkpad = gst_element_get_pad(volume_, "sink");
+ } else if (volume_) {
+- gst_bin_add_many(GST_BIN(audiobin), volume_, audiosink, NULL);
++ gst_bin_add_many(GST_BIN(audiobin), volume_, audiosink, (GstElement*)0);
+ gst_element_link(volume_, audiosink);
+ sinkpad = gst_element_get_pad(volume_, "sink");
+ } else {
+- gst_bin_add_many(GST_BIN(audiobin), panorama_, audiosink, NULL);
++ gst_bin_add_many(GST_BIN(audiobin), panorama_, audiosink, (GstElement*)0);
+ gst_element_link(panorama_, audiosink);
+ sinkpad = gst_element_get_pad(panorama_, "sink");
+ }
+@@ -187,7 +187,7 @@
+ }
+
+ // Set audio-sink to our new audiosink.
+- g_object_set(G_OBJECT(playbin_), "audio-sink", audiosink, NULL);
++ g_object_set(G_OBJECT(playbin_), "audio-sink", audiosink, (gchar*)0);
+
+ // Watch the message bus.
+ // The host using this class must use a g_main_loop to capture the
+@@ -262,7 +262,7 @@
+ if (src_.compare(new_src_) != 0) {
+ src_ = new_src_;
+ media_changed_ = true;
+- g_object_set(G_OBJECT(playbin_), "uri", src_.c_str(), NULL);
++ g_object_set(G_OBJECT(playbin_), "uri", src_.c_str(), (gchar*)0);
+
+ // Empty the tag cache when loading a new media.
+ if (tag_list_) {
+@@ -370,7 +370,7 @@
+ void GstMediaPlayerElement::SetGeometry(int width, int height) {
+ if (playbin_ && videosink_) {
+ g_object_set(G_OBJECT(videosink_),
+- "geometry-width", width, "geometry-height", height, NULL);
++ "geometry-width", width, "geometry-height", height, (gchar*)0);
+ } else {
+ if (!playbin_)
+ DLOG("Playbin was not initialized correctly.");
+@@ -382,7 +382,7 @@
+ int GstMediaPlayerElement::GetVolume() {
+ if (playbin_) {
+ double volume;
+- g_object_get(G_OBJECT(playbin_), "volume", &volume, NULL);
++ g_object_get(G_OBJECT(playbin_), "volume", &volume, (gchar*)0);
+ int gg_volume = static_cast<int>((volume / kMaxGstVolume) *
+ (kMaxVolume - kMinVolume) +
+ kMinVolume);
+@@ -404,7 +404,7 @@
+ (gdouble(volume - kMinVolume) / (kMaxVolume - kMinVolume)) *
+ kMaxGstVolume;
+
+- g_object_set(G_OBJECT(playbin_), "volume", gst_volume, NULL);
++ g_object_set(G_OBJECT(playbin_), "volume", gst_volume, (gchar*)0);
+ } else {
+ DLOG("Playbin was not initialized correctly.");
+ }
+@@ -413,7 +413,7 @@
+ int GstMediaPlayerElement::GetBalance() {
+ if (playbin_ && panorama_) {
+ gfloat balance;
+- g_object_get(G_OBJECT(panorama_), "panorama", &balance, NULL);
++ g_object_get(G_OBJECT(panorama_), "panorama", &balance, (gchar*)0);
+ int gg_balance = static_cast<int>(((balance + 1) / 2) *
+ (kMaxBalance - kMinBalance) +
+ kMinBalance);
+@@ -437,7 +437,7 @@
+ }
+ gfloat gst_balance =
+ (gfloat(balance - kMinBalance) / (kMaxBalance - kMinBalance)) * 2 - 1;
+- g_object_set(G_OBJECT(panorama_), "panorama", gst_balance, NULL);
++ g_object_set(G_OBJECT(panorama_), "panorama", gst_balance, (gchar*)0);
+ } else {
+ if (!playbin_)
+ DLOG("Playbin was not initialized correctly.");
+@@ -449,7 +449,7 @@
+ bool GstMediaPlayerElement::GetMute() {
+ if (playbin_ && volume_) {
+ gboolean mute;
+- g_object_get(G_OBJECT(volume_), "mute", &mute, NULL);
++ g_object_get(G_OBJECT(volume_), "mute", &mute, (gchar*)0);
+ return static_cast<bool>(mute);
+ } else {
+ if (!playbin_)
+@@ -462,7 +462,7 @@
+
+ void GstMediaPlayerElement::SetMute(bool mute) {
+ if (playbin_ && volume_) {
+- g_object_set(G_OBJECT(volume_), "mute", static_cast<gboolean>(mute), NULL);
++ g_object_set(G_OBJECT(volume_), "mute", static_cast<gboolean>(mute), (gchar*)0);
+ } else {
+ if (!playbin_)
+ DLOG("Playbin was not initialized correctly.");
diff --git a/deskutils/google-gadgets/files/patch-extensions_gtk__system__framework_gtk__system__framework.cc b/deskutils/google-gadgets/files/patch-extensions_gtk__system__framework_gtk__system__framework.cc
new file mode 100644
index 000000000000..3fd388b6e074
--- /dev/null
+++ b/deskutils/google-gadgets/files/patch-extensions_gtk__system__framework_gtk__system__framework.cc
@@ -0,0 +1,14 @@
+
+$FreeBSD$
+
+--- extensions/gtk_system_framework/gtk_system_framework.cc.orig
++++ extensions/gtk_system_framework/gtk_system_framework.cc
+@@ -99,7 +99,7 @@
+ GTK_FILE_CHOOSER_ACTION_OPEN,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OK, GTK_RESPONSE_OK,
+- NULL);
++ (gint*)0);
+
+ gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), multiple);
+ if (filter && *filter) {
diff --git a/deskutils/google-gadgets/files/patch-extensions_gtkmoz__browser__element_browser__element.cc b/deskutils/google-gadgets/files/patch-extensions_gtkmoz__browser__element_browser__element.cc
new file mode 100644
index 000000000000..5d184f3fb189
--- /dev/null
+++ b/deskutils/google-gadgets/files/patch-extensions_gtkmoz__browser__element_browser__element.cc
@@ -0,0 +1,14 @@
+
+$FreeBSD$
+
+--- extensions/gtkmoz_browser_element/browser_element.cc.orig
++++ extensions/gtkmoz_browser_element/browser_element.cc
+@@ -380,7 +380,7 @@
+ for (size_t i = 0; kBrowserChildNames[i]; ++i) {
+ execl(kBrowserChildNames[i], kBrowserChildNames[i],
+ down_fd_str.c_str(), up_fd_str.c_str(),
+- ret_fd_str.c_str(), NULL);
++ ret_fd_str.c_str(), (char*)0);
+ }
+ LOG("Failed to execute browser child");
+ _exit(-1);
diff --git a/deskutils/google-gadgets/files/patch-extensions_linux__system__framework_file__system.cc b/deskutils/google-gadgets/files/patch-extensions_linux__system__framework_file__system.cc
new file mode 100644
index 000000000000..ae291423afba
--- /dev/null
+++ b/deskutils/google-gadgets/files/patch-extensions_linux__system__framework_file__system.cc
@@ -0,0 +1,49 @@
+
+$FreeBSD$
+
+--- extensions/linux_system_framework/file_system.cc.orig
++++ extensions/linux_system_framework/file_system.cc
+@@ -356,8 +356,8 @@
+ if (stat(path_.c_str(), &statbuf))
+ return Date(0);
+
+- return Date(statbuf.st_mtim.tv_sec * 1000
+- + statbuf.st_mtim.tv_nsec / 1000000);
++ return Date(statbuf.st_mtimespec.tv_sec * 1000
++ + statbuf.st_mtimespec.tv_nsec / 1000000);
+ }
+
+ virtual Date GetDateLastAccessed() {
+@@ -368,8 +368,8 @@
+ if (stat(path_.c_str(), &statbuf))
+ return Date(0);
+
+- return Date(statbuf.st_atim.tv_sec * 1000
+- + statbuf.st_atim.tv_nsec / 1000000);
++ return Date(statbuf.st_atimespec.tv_sec * 1000
++ + statbuf.st_atimespec.tv_nsec / 1000000);
+ }
+
+ virtual int64_t GetSize() {
+@@ -646,8 +646,8 @@
+ if (stat(path_.c_str(), &statbuf))
+ return Date(0);
+
+- return Date(statbuf.st_mtim.tv_sec * 1000
+- + statbuf.st_mtim.tv_nsec / 1000000);
++ return Date(statbuf.st_mtimespec.tv_sec * 1000
++ + statbuf.st_mtimespec.tv_nsec / 1000000);
+ }
+
+ virtual Date GetDateLastAccessed() {
+@@ -658,8 +658,8 @@
+ if (stat(path_.c_str(), &statbuf))
+ return Date(0);
+
+- return Date(statbuf.st_atim.tv_sec * 1000
+- + statbuf.st_atim.tv_nsec / 1000000);
++ return Date(statbuf.st_atimespec.tv_sec * 1000
++ + statbuf.st_atimespec.tv_nsec / 1000000);
+ }
+
+ virtual std::string GetType() {
diff --git a/deskutils/google-gadgets/files/patch-ggadget_gtk_utilities.cc b/deskutils/google-gadgets/files/patch-ggadget_gtk_utilities.cc
new file mode 100644
index 000000000000..70ee8f17ba1e
--- /dev/null
+++ b/deskutils/google-gadgets/files/patch-ggadget_gtk_utilities.cc
@@ -0,0 +1,14 @@
+
+$FreeBSD$
+
+--- ggadget/gtk/utilities.cc.orig
++++ ggadget/gtk/utilities.cc
+@@ -262,7 +262,7 @@
+ if (fork() != 0)
+ _exit(0);
+
+- execl(xdg_open.c_str(), xdg_open.c_str(), url, NULL);
++ execl(xdg_open.c_str(), xdg_open.c_str(), url, (char*)0);
+
+ DLOG("Failed to exec command: %s", xdg_open.c_str());
+ _exit(-1);
diff --git a/deskutils/google-gadgets/pkg-descr b/deskutils/google-gadgets/pkg-descr
new file mode 100644
index 000000000000..414555d6f840
--- /dev/null
+++ b/deskutils/google-gadgets/pkg-descr
@@ -0,0 +1,4 @@
+Google Gadgets for Linux provides a platform for running desktop
+gadgets under Linux, catering to the unique needs of Linux users.
+
+WWW: http://code.google.com/p/google-gadgets-for-linux/
diff --git a/deskutils/google-gadgets/pkg-plist b/deskutils/google-gadgets/pkg-plist
new file mode 100644
index 000000000000..28e5bb409901
--- /dev/null
+++ b/deskutils/google-gadgets/pkg-plist
@@ -0,0 +1,174 @@
+bin/ggl-gtk
+include/google-gadgets/ggadget/anchor_element.h
+include/google-gadgets/ggadget/audioclip_interface.h
+include/google-gadgets/ggadget/backoff.h
+include/google-gadgets/ggadget/basic_element.h
+include/google-gadgets/ggadget/button_element.h
+include/google-gadgets/ggadget/canvas_interface.h
+include/google-gadgets/ggadget/canvas_utils.h
+include/google-gadgets/ggadget/checkbox_element.h
+include/google-gadgets/ggadget/clip_region.h
+include/google-gadgets/ggadget/color.h
+include/google-gadgets/ggadget/combobox_element.h
+include/google-gadgets/ggadget/common.h
+include/google-gadgets/ggadget/content_item.h
+include/google-gadgets/ggadget/contentarea_element.h
+include/google-gadgets/ggadget/copy_element.h
+include/google-gadgets/ggadget/dbus/dbus_proxy.h
+include/google-gadgets/ggadget/dbus/dbus_result_receiver.h
+include/google-gadgets/ggadget/decorated_view_host.h
+include/google-gadgets/ggadget/details_view_data.h
+include/google-gadgets/ggadget/digest_utils.h
+include/google-gadgets/ggadget/dir_file_manager.h
+include/google-gadgets/ggadget/display_window.h
+include/google-gadgets/ggadget/div_element.h
+include/google-gadgets/ggadget/edit_element_base.h
+include/google-gadgets/ggadget/element_factory.h
+include/google-gadgets/ggadget/elements.h
+include/google-gadgets/ggadget/encryptor_interface.h
+include/google-gadgets/ggadget/event.h
+include/google-gadgets/ggadget/extension_manager.h
+include/google-gadgets/ggadget/file_manager_factory.h
+include/google-gadgets/ggadget/file_manager_interface.h
+include/google-gadgets/ggadget/file_manager_wrapper.h
+include/google-gadgets/ggadget/file_system_interface.h
+include/google-gadgets/ggadget/font_interface.h
+include/google-gadgets/ggadget/framework_interface.h
+include/google-gadgets/ggadget/gadget.h
+include/google-gadgets/ggadget/gadget_consts.h
+include/google-gadgets/ggadget/gadget_manager_interface.h
+include/google-gadgets/ggadget/graphics_interface.h
+include/google-gadgets/ggadget/gtk/cairo_graphics.h
+include/google-gadgets/ggadget/gtk/key_convert.h
+include/google-gadgets/ggadget/gtk/main_loop.h
+include/google-gadgets/ggadget/gtk/menu_builder.h
+include/google-gadgets/ggadget/gtk/single_view_host.h
+include/google-gadgets/ggadget/gtk/tooltip.h
+include/google-gadgets/ggadget/gtk/utilities.h
+include/google-gadgets/ggadget/gtk/view_widget_binder.h
+include/google-gadgets/ggadget/host_interface.h
+include/google-gadgets/ggadget/image_cache.h
+include/google-gadgets/ggadget/image_interface.h
+include/google-gadgets/ggadget/img_element.h
+include/google-gadgets/ggadget/item_element.h
+include/google-gadgets/ggadget/label_element.h
+include/google-gadgets/ggadget/listbox_element.h
+include/google-gadgets/ggadget/locales.h
+include/google-gadgets/ggadget/localized_file_manager.h
+include/google-gadgets/ggadget/logger.h
+include/google-gadgets/ggadget/main_loop_interface.h
+include/google-gadgets/ggadget/math_utils.h
+include/google-gadgets/ggadget/mediaplayer_element_base.h
+include/google-gadgets/ggadget/memory_options.h
+include/google-gadgets/ggadget/menu_interface.h
+include/google-gadgets/ggadget/messages.h
+include/google-gadgets/ggadget/module.h
+include/google-gadgets/ggadget/object_element.h
+include/google-gadgets/ggadget/options_interface.h
+include/google-gadgets/ggadget/progressbar_element.h
+include/google-gadgets/ggadget/registerable_interface.h
+include/google-gadgets/ggadget/scoped_ptr.h
+include/google-gadgets/ggadget/script_context_interface.h
+include/google-gadgets/ggadget/script_runtime_interface.h
+include/google-gadgets/ggadget/script_runtime_manager.h
+include/google-gadgets/ggadget/scriptable_array.h
+include/google-gadgets/ggadget/scriptable_binary_data.h
+include/google-gadgets/ggadget/scriptable_event.h
+include/google-gadgets/ggadget/scriptable_file_system.h
+include/google-gadgets/ggadget/scriptable_framework.h
+include/google-gadgets/ggadget/scriptable_helper.h
+include/google-gadgets/ggadget/scriptable_holder.h
+include/google-gadgets/ggadget/scriptable_image.h
+include/google-gadgets/ggadget/scriptable_interface.h
+include/google-gadgets/ggadget/scriptable_map.h
+include/google-gadgets/ggadget/scriptable_menu.h
+include/google-gadgets/ggadget/scriptable_options.h
+include/google-gadgets/ggadget/scriptable_view.h
+include/google-gadgets/ggadget/scrollbar_element.h
+include/google-gadgets/ggadget/scrolling_element.h
+include/google-gadgets/ggadget/sidebar.h
+include/google-gadgets/ggadget/signals.h
+include/google-gadgets/ggadget/slot.h
+include/google-gadgets/ggadget/small_object.h
+include/google-gadgets/ggadget/string_utils.h
+include/google-gadgets/ggadget/system_utils.h
+include/google-gadgets/ggadget/text_frame.h
+include/google-gadgets/ggadget/texture.h
+include/google-gadgets/ggadget/unicode_utils.h
+include/google-gadgets/ggadget/variant.h
+include/google-gadgets/ggadget/view.h
+include/google-gadgets/ggadget/view_element.h
+include/google-gadgets/ggadget/view_host_interface.h
+include/google-gadgets/ggadget/view_interface.h
+include/google-gadgets/ggadget/xml_dom.h
+include/google-gadgets/ggadget/xml_dom_interface.h
+include/google-gadgets/ggadget/xml_http_request_interface.h
+include/google-gadgets/ggadget/xml_parser_interface.h
+include/google-gadgets/ggadget/xml_utils.h
+include/google-gadgets/ggadget/zip_file_manager.h
+lib/google-gadgets/gtkmoz-browser-child
+lib/google-gadgets/include/ggadget/sysdeps.h
+lib/google-gadgets/modules/curl-xml-http-request.a
+lib/google-gadgets/modules/curl-xml-http-request.la
+lib/google-gadgets/modules/curl-xml-http-request.so
+lib/google-gadgets/modules/dbus-script-class.a
+lib/google-gadgets/modules/dbus-script-class.la
+lib/google-gadgets/modules/dbus-script-class.so
+lib/google-gadgets/modules/default-framework.a
+lib/google-gadgets/modules/default-framework.la
+lib/google-gadgets/modules/default-framework.so
+lib/google-gadgets/modules/default-options.a
+lib/google-gadgets/modules/default-options.la
+lib/google-gadgets/modules/default-options.so
+lib/google-gadgets/modules/google-gadget-manager.a
+lib/google-gadgets/modules/google-gadget-manager.la
+lib/google-gadgets/modules/google-gadget-manager.so
+lib/google-gadgets/modules/gst-audio-framework.a
+lib/google-gadgets/modules/gst-audio-framework.la
+lib/google-gadgets/modules/gst-audio-framework.so
+lib/google-gadgets/modules/gst-mediaplayer-element.a
+lib/google-gadgets/modules/gst-mediaplayer-element.la
+lib/google-gadgets/modules/gst-mediaplayer-element.so
+lib/google-gadgets/modules/gtk-edit-element.a
+lib/google-gadgets/modules/gtk-edit-element.la
+lib/google-gadgets/modules/gtk-edit-element.so
+lib/google-gadgets/modules/gtk-system-framework.a
+lib/google-gadgets/modules/gtk-system-framework.la
+lib/google-gadgets/modules/gtk-system-framework.so
+lib/google-gadgets/modules/gtkmoz-browser-element.a
+lib/google-gadgets/modules/gtkmoz-browser-element.la
+lib/google-gadgets/modules/gtkmoz-browser-element.so
+lib/google-gadgets/modules/libxml2-xml-parser.a
+lib/google-gadgets/modules/libxml2-xml-parser.la
+lib/google-gadgets/modules/libxml2-xml-parser.so
+lib/google-gadgets/modules/smjs-script-runtime.a
+lib/google-gadgets/modules/smjs-script-runtime.la
+lib/google-gadgets/modules/smjs-script-runtime.so
+lib/libggadget-1.0.a
+lib/libggadget-1.0.la
+lib/libggadget-1.0.so
+lib/libggadget-1.0.so.0
+lib/libggadget-dbus-1.0.a
+lib/libggadget-dbus-1.0.la
+lib/libggadget-dbus-1.0.so
+lib/libggadget-dbus-1.0.so.0
+lib/libggadget-gtk-1.0.a
+lib/libggadget-gtk-1.0.la
+lib/libggadget-gtk-1.0.so
+lib/libggadget-gtk-1.0.so.0
+libdata/pkgconfig/libggadget-1.0.pc
+libdata/pkgconfig/libggadget-dbus-1.0.pc
+libdata/pkgconfig/libggadget-gtk-1.0.pc
+share/google-gadgets/google-gadget-browser.gg
+share/google-gadgets/igoogle-gadget.gg
+share/google-gadgets/resources.gg
+share/google-gadgets/rss-gadget.gg
+@dirrm share/google-gadgets
+@dirrm lib/google-gadgets/modules
+@dirrm lib/google-gadgets/include/ggadget
+@dirrm lib/google-gadgets/include
+@dirrm lib/google-gadgets
+@dirrm include/google-gadgets/ggadget/gtk
+@dirrm include/google-gadgets/ggadget/dbus
+@dirrm include/google-gadgets/ggadget
+@dirrm include/google-gadgets