Index: Portfile
===================================================================
--- Portfile	(revision 121187)
+++ Portfile	(working copy)
@@ -2,6 +2,7 @@
 # $Id$
 
 PortSystem          1.0
+PortGroup           active_variants 1.1
 
 name                gnome-libs
 version             1.4.2
@@ -24,8 +25,17 @@
 depends_lib         port:oaf \
                     port:gtk1 \
                     port:libghttp \
-                    port:imlib
+                    port:imlib \
+                    port:db46 \
+                    port:esound \
+                    port:tiff \
+                    port:jpeg \
+                    port:libpng \
+                    port:giflib \
+                    port:xpm
 
+require_active_variants db46 compat185
+
 # imlib is not universal
 universal_variant   no
 
@@ -34,13 +44,18 @@
                     patch-XmHTMLP.h \
                     patch-XmHTMLI.h \
                     install.diff \
-                    patch-libart_lgpl_libart.m4
+                    patch-libart_lgpl_libart.m4 \
+                    patch-tools-convertrgb-loadpng.c.diff \
+                    patch-libgnome-Makefile.in.diff \
+                    patch-gtk-xmhtml-readPNG.c.diff
 
 configure.args      --mandir=${prefix}/share/man \
                     --disable-gtk-doc \
                     --disable-test-gnome
 
-configure.cppflags-append "-L${prefix}/lib"
+configure.env-append CPP="${configure.cc} -E"
+configure.cppflags-append "-I${prefix}/include/db46"
+configure.ldflags-append "-L${prefix}/lib/db46"
 configure.cflags-append "-fstrict-aliasing -funroll-loops"
 
 post-configure {
Index: files/patch-gtk-xmhtml-readPNG.c.diff
===================================================================
--- files/patch-gtk-xmhtml-readPNG.c.diff	(revision 0)
+++ files/patch-gtk-xmhtml-readPNG.c.diff	(working copy)
@@ -0,0 +1,168 @@
+--- gtk-xmhtml/readPNG.c.orig	2002-08-06 14:25:46.000000000 -0700
++++ gtk-xmhtml/readPNG.c	2014-06-19 08:34:04.000000000 -0700
+@@ -208,7 +208,7 @@
+ 
+ 	_XmHTMLWarning(__WFUNC__(NULL, "png_error"),
+ 		"libpng error on image %s: %s", ib->file, msg);
+-	longjmp(png_ptr->jmpbuf, 1);
++	longjmp(png_jmpbuf(png_ptr), 1);
+ }
+ 
+ /*****
+@@ -256,11 +256,12 @@
+ {
+ 	png_structp png_ptr;
+ 	png_infop info_ptr;
++	png_colorp palette;
+ 	Byte *data;
+ 	int i, idx, npass;
+ 	int width, height, color_type;
+ 	int ncolors, max_colors;
+-	float gamma, fg_gamma;
++	double gamma, fg_gamma;
+ 	Boolean has_alpha = False, has_cmap = False, do_gamma = True;
+ 	png_bytep *row_ptrs;
+ 	char msg[128];
+@@ -308,7 +309,7 @@
+ 		return((XmHTMLRawImageData*)NULL);
+ 	}
+ 	/* now set error handler */
+-	if(setjmp(png_ptr->jmpbuf))
++	if(setjmp(png_jmpbuf(png_ptr)))
+ 	{
+ 		/* 
+ 		* PNG signalled an error. Destroy image data, free any allocated
+@@ -342,17 +343,18 @@
+ 	ResetRawImage(img_data);
+ 
+ 	/* save width & height */
+-	width  = img_data->width  = info_ptr->width;
+-	height = img_data->height = info_ptr->height;
++	width  = img_data->width  = png_get_image_width(png_ptr, info_ptr);
++	height = img_data->height = png_get_image_height(png_ptr, info_ptr);
+ 
+ 	/* image depth */
+-	ib->depth = info_ptr->bit_depth;
++	ib->depth = png_get_bit_depth(png_ptr, info_ptr);
+ 
+ 	/* no of colors */
+-	ncolors = img_data->cmapsize = info_ptr->num_palette;
++	png_get_PLTE(png_ptr, info_ptr, &palette, &ncolors);
++	img_data->cmapsize = ncolors;
+ 
+ 	/* type of image */
+-	color_type = info_ptr->color_type;
++	color_type = png_get_color_type(png_ptr, info_ptr);
+ 
+ 	/*
+ 	* The fun stuff. This is based on readPNG by Greg Roelofs as found
+@@ -383,7 +385,7 @@
+ 			* Actual image creation is postponed until the image is
+ 			* needed.
+ 			*/
+-			if(info_ptr->valid & PNG_INFO_tRNS)
++			if(png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS))
+ 			{
+ 				_XmHTMLDebug(15, ("readPNG.c: tRNS chunk present\n"));
+ 				png_set_expand(png_ptr);
+@@ -396,9 +398,9 @@
+ 				AllocRawImageCmap(img_data, ncolors);
+ 				for(i = 0; i < ncolors; i++)
+ 				{
+-					img_data->cmap[i].red   = info_ptr->palette[i].red;
+-					img_data->cmap[i].green = info_ptr->palette[i].green;
+-					img_data->cmap[i].blue  = info_ptr->palette[i].blue;
++					img_data->cmap[i].red   = palette[i].red;
++					img_data->cmap[i].green = palette[i].green;
++					img_data->cmap[i].blue  = palette[i].blue;
+ 				}
+ 				has_cmap = True;
+ 				data = (Byte*)malloc(width*height*sizeof(Byte));
+@@ -432,7 +434,7 @@
+ 			* grayscale with transparency is expanded to RGB with alpha
+ 			* channel.
+ 			*/
+-			if(info_ptr->valid & PNG_INFO_tRNS)
++			if(png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS))
+ 			{
+ 				_XmHTMLDebug(15, ("readPNG.c: tRNS chunk present\n"));
+ 				png_set_gray_to_rgb(png_ptr);
+@@ -511,7 +513,7 @@
+ 			break;
+ 		default:
+ 			sprintf(msg, "bad PNG image: unknown color type (%d)",
+-				info_ptr->color_type);
++				png_get_color_type(png_ptr, info_ptr));
+ 			my_png_error(png_ptr, msg);
+ 			break;
+ 	}
+@@ -521,16 +523,18 @@
+ 	* Doing that for alpha channel images would change the colortype of the
+ 	* current image, leading to weird results.
+ 	*/
+-	if(!has_alpha && info_ptr->valid & PNG_INFO_bKGD)
++	if(!has_alpha && png_get_valid(png_ptr, info_ptr, PNG_INFO_bKGD))
+ 	{
+-		png_set_background(png_ptr, &(info_ptr->background),
++		png_color_16p background;
++		png_get_bKGD(png_ptr, info_ptr, &background);
++		png_set_background(png_ptr, background,
+ 			PNG_BACKGROUND_GAMMA_FILE, 1, 1.0);
+-		img_data->bg = info_ptr->background.index;
++		img_data->bg = background->index;
+ 	}
+ 
+ 	/* handle gamma correction */
+-	if(info_ptr->valid & PNG_INFO_gAMA)
+-		fg_gamma = info_ptr->gamma;
++	if(png_get_valid(png_ptr, info_ptr, PNG_INFO_gAMA))
++		png_get_gAMA(png_ptr, info_ptr, &fg_gamma);
+ 	else
+ 		fg_gamma = 0.45;
+ 
+@@ -541,20 +545,20 @@
+ 	/* dithering gets handled by caller */
+ 
+ 	/* one byte per pixel */
+-	if(info_ptr->bit_depth < 8)
++	if(png_get_bit_depth(png_ptr, info_ptr) < 8)
+ 		png_set_packing(png_ptr);
+ 
+ 	/* no tRNS chunk handling, we've expanded it to an alpha channel. */
+ 
+ 	/* handle interlacing */
+-	if(info_ptr->interlace_type)
++	if(png_get_interlace_type(png_ptr, info_ptr))
+ 		npass = png_set_interlace_handling(png_ptr);
+ 
+ 	/* and now update everything */
+ 	png_read_update_info(png_ptr, info_ptr);
+ 
+ 	/* has possibly changed if we have promoted GrayScale or tRNS chunks */
+-	color_type = info_ptr->color_type;
++	color_type = png_get_color_type(png_ptr, info_ptr);
+ 
+ 	/* new color_type? */
+ 	if(color_type == PNG_COLOR_TYPE_RGB_ALPHA)
+@@ -574,10 +578,10 @@
+ 		* will call doAlphaChannel to do the actual image creation. 
+ 		*/
+ 		row_ptrs = (png_bytep*)malloc(height*sizeof(png_bytep));
+-		png_data = (png_bytep)malloc(height*info_ptr->rowbytes);
++		png_data = (png_bytep)malloc(height*png_get_rowbytes(png_ptr, info_ptr));
+ 
+ 		for(i = 0; i < height; i++)
+-			row_ptrs[i] = (png_bytep)png_data + i*info_ptr->rowbytes;
++			row_ptrs[i] = (png_bytep)png_data + i*png_get_rowbytes(png_ptr, info_ptr);
+ 
+ 		/* read it */
+ 		png_read_image(png_ptr, row_ptrs);
+@@ -606,7 +610,7 @@
+ 	row_ptrs = (png_bytep*)malloc(height*sizeof(png_bytep));
+ 
+ 	for(i = 0; i < height; ++i)
+-		row_ptrs[i] = (png_bytep)data + i*info_ptr->rowbytes;
++		row_ptrs[i] = (png_bytep)data + i*png_get_rowbytes(png_ptr, info_ptr);
+ 
+ 	/* read it */
+ 	png_read_image(png_ptr, row_ptrs);
Index: files/patch-libgnome-Makefile.in.diff
===================================================================
--- files/patch-libgnome-Makefile.in.diff	(revision 0)
+++ files/patch-libgnome-Makefile.in.diff	(working copy)
@@ -0,0 +1,11 @@
+--- libgnome/Makefile.in.orig	2014-06-18 11:34:06.000000000 -0700
++++ libgnome/Makefile.in	2014-06-18 11:35:16.000000000 -0700
+@@ -251,7 +251,7 @@
+ gnome_dump_metadata_LDADD = libgnome.la $(LIBSUPPORT) \
+ 	$(LIBGNOME_LIBS) $(INTLLIBS)
+ 
+-gnome_dump_metadata_LDFLAGS = $(GLIB_LIBS)
++gnome_dump_metadata_LDFLAGS = $(GLIB_LIBS) -ldb
+ 
+ gnome_moz_remote_SOURCES = gnome-moz-remote.c vroot.h
+ gnome_moz_remote_LDADD = libgnome.la $(LIBSUPPORT) $(LIBGNOME_LIBS) \
Index: files/patch-tools-convertrgb-loadpng.c.diff
===================================================================
--- files/patch-tools-convertrgb-loadpng.c.diff	(revision 0)
+++ files/patch-tools-convertrgb-loadpng.c.diff	(working copy)
@@ -0,0 +1,18 @@
+--- tools/convertrgb/loadpng.c.orig	2014-06-18 09:31:06.000000000 -0700
++++ tools/convertrgb/loadpng.c	2014-06-18 09:37:08.000000000 -0700
+@@ -29,13 +29,13 @@
+ 	return NULL;
+      }
+ 
+-   if (setjmp(png_ptr->jmpbuf))
++   if (setjmp(png_jmpbuf(png_ptr)))
+      {
+ 	png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ 	return NULL;
+      }
+ 
+-   if (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
++   if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_RGB_ALPHA)
+      {
+ 	png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ 	return NULL;
