diff -urN epm-3.7-old//bsd.c epm-3.7/bsd.c
--- misc/epm-3.7/bsd.c	2003-01-14 17:05:01.000000000 +0000
+++ misc/build/epm-3.7/bsd.c	2010-04-19 22:52:32.000000000 +0000
@@ -26,6 +26,13 @@
 
 #include "epm.h"
 
+void cr2semicolon(char *command)
+{
+  int len, i;
+  len=strlen(command);
+  for (i=0;i<len;i++)
+    if(*(command+i)=='\n') *(command+i)=';';
+}
 
 /*
  * 'make_bsd()' - Make a FreeBSD software distribution package.
@@ -149,8 +156,17 @@
 
   for (i = dist->num_depends, d = dist->depends; i > 0; i --, d ++)
   {
+#ifdef __FreeBSD__
+    if (d->type == DEPEND_REQUIRES) {
+      if (dist->relnumber)
+	  fprintf(fp, "@pkgdep %s-%s-%d-%s", d->product, dist->version, dist->relnumber, platname);
+      else
+	  fprintf(fp, "@pkgdep %s-%s-%s", d->product, dist->version, platname);
+    }
+#else
     if (d->type == DEPEND_REQUIRES)
       fprintf(fp, "@pkgdep %s", d->product);
+#endif
     else
 #ifdef __FreeBSD__
      /*
@@ -179,9 +195,11 @@
 	        "         by the BSD packager.\n", stderr);
           break;
       case COMMAND_POST_INSTALL :
+      cr2semicolon(c->command);
           fprintf(fp, "@exec %s\n", c->command);
 	  break;
       case COMMAND_PRE_REMOVE :
+      cr2semicolon(c->command);
           fprintf(fp, "@unexec %s\n", c->command);
 	  break;
       case COMMAND_POST_REMOVE :
@@ -199,7 +217,7 @@
       */
 
       fprintf(fp, "@exec /bin/mkdir -p %s\n", file->dst);
-      fprintf(fp, "@exec /bin/chown %s:%s %s\n", file->user, file->group,
+      fprintf(fp, "@exec /usr/sbin/chown %s:%s %s\n", file->user, file->group,
               file->dst);
       fprintf(fp, "@exec /bin/chmod %04o %s\n", file->mode, file->dst);
     }
@@ -326,12 +344,13 @@
   if (Verbosity)
     puts("Building FreeBSD pkg binary distribution...");
 
-  if (run_command(NULL, "pkg_create -p / -s %s -c %s -d %s -f %s %s",
+  if (run_command(NULL, "/usr/sbin/pkg_create -p / -s %s -c %s -d %s -f %s %s",
                   current, commentname, descrname, plistname, name))
     return (1);
 
-  if (run_command(NULL, "mv %s.tgz %s", name, directory))
-    return (1);
+  if (run_command(NULL, "mv %s.tbz %s", name, directory))
+    if (run_command(NULL, "mv %s.tgz %s", name, directory))
+      return (1);
 
  /*
   * Remove temporary files...
diff -urN epm-3.7-old//configure epm-3.7/configure
--- misc/epm-3.7/configure	2003-07-24 01:20:54.000000000 +0000
+++ misc/build/epm-3.7/configure	2010-04-19 22:52:32.000000000 +0000
@@ -1238,6 +1238,11 @@
 fi
 fi;
 
+# Check whether --enable-fltk or --disable-fltk was given.
+if test "${enable_fltk+set}" = set; then
+  enableval="$enable_fltk"
+fi;
+
 
 # Check whether --with-docdir or --without-docdir was given.
 if test "${with_docdir+set}" = set; then
@@ -4904,36 +4909,38 @@
 fi
 
 
-# Extract the first word of "fltk-config", so it can be a program name with args.
-set dummy fltk-config; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_FLTKCONFIG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  case $FLTKCONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_FLTKCONFIG="$FLTKCONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_FLTKCONFIG="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
+if eval "test x$enable_fltk = xyes"; then
+  # Extract the first word of "fltk-config", so it can be a program name with args.
+  set dummy fltk-config; ac_word=$2
+  echo "$as_me:$LINENO: checking for $ac_word" >&5
+  echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+  if test "${ac_cv_path_FLTKCONFIG+set}" = set; then
+    echo $ECHO_N "(cached) $ECHO_C" >&6
+  else
+    case $FLTKCONFIG in
+    [\\/]* | ?:[\\/]*)
+    ac_cv_path_FLTKCONFIG="$FLTKCONFIG" # Let the user override the test with a path.
+    ;;
+    *)
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+  for as_dir in $PATH
+  do
+    IFS=$as_save_IFS
+    test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+    if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+      ac_cv_path_FLTKCONFIG="$as_dir/$ac_word$ac_exec_ext"
+      echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+      break 2
+    fi
+  done
+  done
+  
+    ;;
+  esac
   fi
-done
-done
-
-  ;;
-esac
+  FLTKCONFIG=$ac_cv_path_FLTKCONFIG
 fi
-FLTKCONFIG=$ac_cv_path_FLTKCONFIG
 
 if test -n "$FLTKCONFIG"; then
   echo "$as_me:$LINENO: result: $FLTKCONFIG" >&5
@@ -4950,8 +4957,10 @@
 	INSTALL_GUIS=""
 	INSTALL_OSX=""
 
+if eval "test x$enable_fltk = xyes"; then
 	{ echo "$as_me:$LINENO: WARNING: Sorry, setup GUI requires FLTK 1.1.x." >&5
 echo "$as_me: WARNING: Sorry, setup GUI requires FLTK 1.1.x." >&2;}
+fi
 else
 	CXXFLAGS="`$FLTKCONFIG --cflags` ${CXXFLAGS}"
 	GUIS="setup uninst"
diff -urN epm-3.7-old//deb.c epm-3.7/deb.c
--- misc/epm-3.7/deb.c	2003-01-15 14:29:24.000000000 +0000
+++ misc/build/epm-3.7/deb.c	2010-04-19 22:53:34.000000000 +0000
@@ -26,6 +26,28 @@
 
 #include "epm.h"
 
+/*
+ * 'add_size()' - Append Installed-Size tag to DEBIAN/control file
+ */
+ 
+int                             /* O - 0 = success, 1 = fail */
+add_size(FILE       *fpControl, /* Control file stream */
+         const char *directory) /* Directory containing all files to package */
+{
+    FILE *fp;
+    char command[1024];
+    
+    snprintf(command, sizeof(command), "du -k -s %s", directory);
+    fp = popen(command, "r");
+    if( NULL != fp )
+    {
+        char size[1024];
+        fscanf(fp, "%s .", size);
+        fprintf(fpControl, "Installed-Size: %s\n", size);
+        return pclose(fp);
+    }
+    return 1;
+}
 
 /*
  * 'make_deb()' - Make a Debian software distribution package.
@@ -61,18 +83,37 @@
   if (Verbosity)
     puts("Creating Debian distribution...");
 
+  /*
+   * Use debian default naming scheme
+   */
+
+  if (!strcmp(platform->machine, "intel"))
+#ifdef __FreeBSD_kernel__
+    platname = "kfreebsd-i386";
+#else
+    platname = "i386";
+#endif
+  else if (!strcmp(platform->machine, "x86_64"))
+#ifdef __FreeBSD_kernel__
+    platname = "kfreebsd-amd64";
+#else
+    platname = "amd64";
+#endif
+  else if (!strcmp(platform->machine, "ppc"))
+    platname = "powerpc";
+
   if (dist->relnumber)
   {
     if (platname[0])
-      snprintf(name, sizeof(name), "%s-%s-%d-%s", prodname, dist->version, dist->relnumber,
+      snprintf(name, sizeof(name), "%s_%s-%d_%s", prodname, dist->version, dist->relnumber,
               platname);
     else
-      snprintf(name, sizeof(name), "%s-%s-%d", prodname, dist->version, dist->relnumber);
+      snprintf(name, sizeof(name), "%s_%s-%d", prodname, dist->version, dist->relnumber);
   }
   else if (platname[0])
-    snprintf(name, sizeof(name), "%s-%s-%s", prodname, dist->version, platname);
+    snprintf(name, sizeof(name), "%s_%s_%s", prodname, dist->version, platname);
   else
-    snprintf(name, sizeof(name), "%s-%s", prodname, dist->version);
+    snprintf(name, sizeof(name), "%s_%s", prodname, dist->version);
 
  /*
   * Write the control file for DPKG...
@@ -108,8 +141,20 @@
   * (which we change in get_platform to a common name)
   */
 
-  if (strcmp(platform->machine, "intel") == 0)
+  if (!strcmp(platform->machine, "intel"))
+#ifdef __FreeBSD_kernel__
+    fputs("Architecture: kfreebsd-i386\n", fp);
+#else
     fputs("Architecture: i386\n", fp);
+#endif
+  else if (!strcmp(platform->machine, "x86_64"))
+#ifdef __FreeBSD_kernel__
+    fputs("Architecture: kfreebsd-amd64\n", fp);
+#else
+    fputs("Architecture: amd64\n", fp);
+#endif
+  else if (!strcmp(platform->machine, "ppc"))
+    fputs("Architecture: powerpc\n", fp);
   else
     fprintf(fp, "Architecture: %s\n", platform->machine);
 
@@ -148,9 +193,9 @@
       putc('\n', fp);
     }
   }
-
+  
   fclose(fp);
-
+  
  /*
   * Write the preinst file for DPKG...
   */
@@ -417,6 +462,27 @@
     }
   }
 
+  
+  /* 
+   * Calculate and append Installed-Size to DEBIAN/control
+   */
+   
+  if (Verbosity)
+    puts("Calculating Installed-Size...");
+  
+  snprintf(filename, sizeof(filename), "%s/%s/DEBIAN/control", directory, name);
+  if ((fp = fopen(filename, "a")) == NULL)
+  {
+    fprintf(stderr, "epm: Unable to Installed-Size to file \"%s\" - %s\n", filename,
+            strerror(errno));
+    return (1);
+  }
+
+  snprintf(filename, sizeof(filename), "%s/%s", directory, name);  
+  add_size(fp, filename);
+  fclose(fp);
+ 
+
  /*
   * Build the distribution from the spec file...
   */
diff -urN epm-3.7-old//dist.c epm-3.7/dist.c
--- misc/epm-3.7/dist.c	2003-08-07 14:14:40.000000000 +0000
+++ misc/build/epm-3.7/dist.c	2010-04-19 22:52:32.000000000 +0000
@@ -394,8 +394,13 @@
   strcpy(platform->machine, "mips");
 #elif defined(__hpux)
   strcpy(platform->machine, "hppa");
-#elif defined(_AIX) || defined(__APPLE__)
+#elif defined(_AIX)
   strcpy(platform->machine, "powerpc");
+#elif defined(__APPLE__)
+  if (strstr(platform->machine, "86") != NULL)
+    strcpy(platform->machine, "intel");
+  else
+    strcpy(platform->machine, "powerpc");  
 #else
   for (temp = platform->machine; *temp != '\0'; temp ++)
     if (*temp == '-' || *temp == '_')
@@ -407,7 +412,12 @@
       *temp = tolower(*temp);
 
   if (strstr(platform->machine, "86") != NULL)
-    strcpy(platform->machine, "intel");
+  {
+    if (strstr(platform->machine, "64") != NULL)
+      strcpy(platform->machine, "x86_64");
+    else
+      strcpy(platform->machine, "intel");
+  }
   else if (strncmp(platform->machine, "sun", 3) == 0)
     strcpy(platform->machine, "sparc");
 #endif /* __sgi */
diff -urN epm-3.7-old//epm.c epm-3.7/epm.c
--- misc/epm-3.7/epm.c	2003-10-28 14:48:30.000000000 +0000
+++ misc/build/epm-3.7/epm.c	2010-04-19 22:52:32.000000000 +0000
@@ -547,6 +547,7 @@
 {
   puts(EPM_VERSION);
   puts("Copyright 1999-2003 by Easy Software Products.");
+  puts("Patched for OpenOffice.org");
   puts("");
   puts("EPM is free software and comes with ABSOLUTELY NO WARRANTY; for details");
   puts("see the GNU General Public License in the file COPYING or at");
diff -urN epm-3.7-old//file.c epm-3.7/file.c
--- misc/epm-3.7/file.c	2003-07-23 21:41:08.000000000 +0000
+++ misc/build/epm-3.7/file.c	2010-04-19 22:52:32.000000000 +0000
@@ -108,7 +108,6 @@
   fclose(dstfile);
 
   chmod(dst, mode);
-  chown(dst, owner, group);
 
   return (0);
 }
@@ -138,7 +137,6 @@
       {
 	mkdir(buffer, 0777);
 	chmod(buffer, mode | 0700);
-	chown(buffer, owner, group);
       }
     }
 
@@ -151,7 +149,6 @@
   {
     mkdir(buffer, 0777);
     chmod(buffer, mode | 0700);
-    chown(buffer, owner, group);
   }
 
   return (0);
diff -urN epm-3.7-old//osx.c epm-3.7/osx.c
--- misc/epm-3.7/osx.c	2003-07-23 21:41:08.000000000 +0000
+++ misc/build/epm-3.7/osx.c	2010-04-19 22:52:32.000000000 +0000
@@ -373,7 +373,7 @@
   else
     snprintf(filename, sizeof(filename), "%s/%s", current, directory);
 
-  run_command(NULL, "/Developer/Applications/PackageMaker.app/"
+  run_command(NULL, "/Developer/Applications/Utilities/PackageMaker.app/"
                     "Contents/MacOS/PackageMaker -build "
 		    "-p %s/%s.pkg -f %s/Package -r %s/Resources -d %s/%s-desc.plist -i %s/%s-info.plist",
 	      filename, prodname, filename, filename, filename, prodname, filename, prodname);
diff -urN epm-3.7-old//pkg.c epm-3.7/pkg.c
--- misc/epm-3.7/pkg.c	2002-12-17 18:57:56.000000000 +0000
+++ misc/build/epm-3.7/pkg.c	2010-04-19 22:52:32.000000000 +0000
@@ -429,75 +429,6 @@
 
   fclose(fp);
 
- /*
-  * Build the distribution from the prototype file...
-  */
-
-  if (Verbosity)
-    puts("Building PKG binary distribution...");
-
-  if (run_command(NULL, "pkgmk -o -f %s/%s.prototype -d %s/%s",
-                  directory, prodname, current, directory))
-    return (1);
-
- /*
-  * Tar and compress the distribution...
-  */
-
-  if (Verbosity)
-    puts("Creating tar.gz file for distribution...");
-
-  snprintf(filename, sizeof(filename), "%s/%s.tar.gz", directory, name);
-
-  if ((tarfile = tar_open(filename, 1)) == NULL)
-    return (1);
-
-  snprintf(filename, sizeof(filename), "%s/%s", directory, prodname);
-
-  if (tar_directory(tarfile, filename, prodname))
-  {
-    tar_close(tarfile);
-    return (1);
-  }
-
-  tar_close(tarfile);
-
- /*
-  * Make a package stream file...
-  */
-
-  if (Verbosity)
-    puts("Copying into package stream file...");
-
-  if (run_command(directory, "pkgtrans -s %s/%s %s.pkg %s",
-                  current, directory, name, prodname))
-    return (1);
-
- /*
-  * Remove temporary files...
-  */
-
-  if (!KeepFiles)
-  {
-    if (Verbosity)
-      puts("Removing temporary distribution files...");
-
-    snprintf(filename, sizeof(filename), "%s/%s.pkginfo", directory, prodname);
-    unlink(filename);
-    snprintf(filename, sizeof(filename), "%s/%s.depend", directory, prodname);
-    unlink(filename);
-    snprintf(filename, sizeof(filename), "%s/%s.prototype", directory, prodname);
-    unlink(filename);
-    if (preinstall[0])
-      unlink(preinstall);
-    if (postinstall[0])
-      unlink(postinstall);
-    if (preremove[0])
-      unlink(preremove);
-    if (postremove[0])
-      unlink(postremove);
-  }
-
   return (0);
 }
 
diff -urN epm-3.7-old//qprintf.c epm-3.7/qprintf.c
--- misc/epm-3.7-old/qprintf.c	2003-01-27 21:48:03.000000000 +0000
+++ misc/build/epm-3.7/qprintf.c	2010-04-19 22:52:32.000000000 +0000
@@ -181,12 +181,19 @@
 
             for (i = slen; i > 0; i --, s ++, bytes ++)
 	    {
+#if defined(__FreeBSD__)
+	      if (strchr("`~!#%^&*()[{]}\\|;\'\"<>? ", *s))
+	      {
+	        putc('\\', fp);
+		bytes ++;
+	      }
+#else
 	      if (strchr("`~!#$%^&*()[{]}\\|;\'\"<>? ", *s))
 	      {
 	        putc('\\', fp);
 		bytes ++;
 	      }
-
+#endif
 	      putc(*s, fp);
 	    }
 
diff -urN epm-3.7-old//rpm.c epm-3.7/rpm.c
--- misc/epm-3.7/rpm.c	2003-10-01 19:27:15.000000000 +0000
+++ misc/build/epm-3.7/rpm.c	2010-04-19 22:52:32.000000000 +0000
@@ -38,7 +38,7 @@
          dist_t         *dist,		/* I - Distribution information */
 	 struct utsname *platform)	/* I - Platform information */
 {
-  int		i;			/* Looping var */
+  int		i,n;			/* Looping vars */
   FILE		*fp;			/* Spec file */
   char		name[1024];		/* Full product name */
   char		specname[1024];		/* Spec filename */
@@ -160,6 +160,8 @@
       fprintf(fp, "Requires: %s", dname);
     else if (d->type == DEPEND_PROVIDES)
       fprintf(fp, "Provides: %s", dname);
+    else if (d->type == DEPEND_REPLACES)
+      fprintf(fp, "Obsoletes: %s", dname);
     else
       fprintf(fp, "Conflicts: %s", dname);
 
@@ -186,15 +188,33 @@
   for (i = 0; i < dist->num_descriptions; i ++)
     fprintf(fp, "%s\n", dist->descriptions[i]);
 
-  fputs("%pre\n", fp);
+  /*
+   * %pre
+   */
+  n = 0;
   for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++)
+  {
     if (c->type == COMMAND_PRE_INSTALL)
+    {
+      if (1 == ++n)  /* Only write %pre if there is at least one command */
+        fputs("%pre\n", fp);
       fprintf(fp, "%s\n", c->command);
+    }
+  }
 
-  fputs("%post\n", fp);
+  /*
+   * %post
+   */
+  n = 0;
   for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++)
+  {
     if (c->type == COMMAND_POST_INSTALL)
+    {
+      if (1 == ++n)  /* Only write %post if there is at least one command */
+        fputs("%post\n", fp);
       fprintf(fp, "%s\n", c->command);
+    }
+  }
 
   for (i = dist->num_files, file = dist->files; i > 0; i --, file ++)
     if (tolower(file->type) == 'i')
@@ -202,6 +222,8 @@
 
   if (i)
   {
+    if (1 == ++n)  /* If not previously done so, write %post here */
+      fputs("%post\n", fp);
     fputs("if test \"x$1\" = x1; then\n", fp);
     fputs("	echo Setting up init scripts...\n", fp);
 
@@ -259,13 +281,17 @@
     fputs("fi\n", fp);
   }
 
-  fputs("%preun\n", fp);
+  /*
+   * %preun
+   */
+  n = 0;
   for (i = dist->num_files, file = dist->files; i > 0; i --, file ++)
     if (tolower(file->type) == 'i')
       break;
 
   if (i)
   {
+    fputs("%preun\n", fp); ++n; /* Need to write %preun here */
     fputs("if test \"x$1\" = x0; then\n", fp);
     fputs("	echo Cleaning up init scripts...\n", fp);
 
@@ -315,13 +341,29 @@
   }
 
   for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++)
+  {
     if (c->type == COMMAND_PRE_REMOVE)
+    {
+      if (1 == ++n)  /* Only write %preun if not previously done so */
+        fputs("%preun\n", fp);
+	    
       fprintf(fp, "%s\n", c->command);
+    }
+  }
 
-  fputs("%postun\n", fp);
+  /*
+   * %post
+   */
+  n = 0;
   for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++)
+  {
     if (c->type == COMMAND_POST_REMOVE)
+    {
+      if (1 == ++n)  /* Only write %post if there is at least one command */
+        fputs("%postun\n", fp);
       fprintf(fp, "%s\n", c->command);
+    }
+  }
 
   fputs("%files\n", fp);
   for (i = dist->num_files, file = dist->files; i > 0; i --, file ++)
@@ -415,53 +457,6 @@
     }
   }
 
- /*
-  * Build the distribution from the spec file...
-  */
-
-  if (Verbosity)
-    puts("Building RPM binary distribution...");
-
-  if (strcmp(platform->machine, "intel") == 0)
-  {
-    if (run_command(NULL, EPM_RPMBUILD " %s -bb " EPM_RPMARCH "i386 %s",
-                    Verbosity == 0 ? "--quiet" : "", specname))
-      return (1);
-  }
-  else if (run_command(NULL, EPM_RPMBUILD " %s -bb " EPM_RPMARCH "%s %s",
-                       Verbosity == 0 ? "--quiet" : "", platform->machine,
-		       specname))
-    return (1);
-
- /*
-  * Move the RPM to the local directory and rename the RPM using the
-  * product name specified by the user...
-  */
-
-  if (strcmp(platform->machine, "intel") == 0)
-    run_command(NULL, "/bin/mv %s/RPMS/i386/%s-%s-%d.i386.rpm %s/%s.rpm",
-        	rpmdir, prodname, dist->version, dist->relnumber,
-		directory, name);
-  else
-    run_command(NULL, "/bin/mv %s/RPMS/%s/%s-%s-%d.%s.rpm %s/%s.rpm",
-        	rpmdir, platform->machine, prodname, dist->version,
-		dist->relnumber, platform->machine, directory, name);
-
- /*
-  * Remove temporary files...
-  */
-
-  if (!KeepFiles)
-  {
-    if (Verbosity)
-      puts("Removing temporary distribution files...");
-
-    run_command(NULL, "/bin/rm -rf %s/RPMS", directory);
-    run_command(NULL, "/bin/rm -rf %s/buildroot", directory);
-
-    unlink(specname);
-  }
-
   return (0);
 }