summaryrefslogtreecommitdiff
path: root/epm
diff options
context:
space:
mode:
authorRĂ¼diger Timm <rt@openoffice.org>2007-07-05 07:53:33 +0000
committerRĂ¼diger Timm <rt@openoffice.org>2007-07-05 07:53:33 +0000
commitf0f396f1583e56d0d9ae5db8df0b8a915975f76c (patch)
treea53a90932ef9d0790500c0b33100395a01d61a19 /epm
parent1858424fa02727e0ec58aee35fde0884d50e42cd (diff)
INTEGRATION: CWS freebsd08 (1.12.2); FILE MERGED
2007/06/05 21:23:53 maho 1.12.2.4: Backout PATH_MAX to 256. This is not POSIX compliant. http://www.openoffice.org/issues/show_bug.cgi?id=73217 http://www.easysw.com/epm/newsgroups.php?s56+gepm.bugs+v66 2007/06/01 23:20:57 maho 1.12.2.3: Use PATH_MAX. Issue number: #i73217# 2007/06/01 22:20:53 maho 1.12.2.2: Temporary extend to maximum 256 chars to 1024 chars. Issue number: #i73217# 2007/06/01 22:16:38 maho 1.12.2.1: Hardcode pkg_create, is normally in /usr/sbin - which is not part of the standard user $PATH. Issue number: #i73157#
Diffstat (limited to 'epm')
-rw-r--r--epm/epm-3.7.patch811
1 files changed, 811 insertions, 0 deletions
diff --git a/epm/epm-3.7.patch b/epm/epm-3.7.patch
new file mode 100644
index 000000000000..116aa28f6690
--- /dev/null
+++ b/epm/epm-3.7.patch
@@ -0,0 +1,811 @@
+*** misc/epm-3.7/bsd.c Tue Jan 14 18:05:01 2003
+--- misc/build/epm-3.7/bsd.c Mon Nov 20 14:54:51 2006
+***************
+*** 26,31 ****
+--- 26,38 ----
+
+ #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,156 ****
+--- 156,172 ----
+
+ 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,187 ****
+--- 195,205 ----
+ " 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,205 ****
+ */
+
+ fprintf(fp, "@exec /bin/mkdir -p %s\n", file->dst);
+! fprintf(fp, "@exec /bin/chown %s:%s %s\n", file->user, file->group,
+ file->dst);
+ fprintf(fp, "@exec /bin/chmod %04o %s\n", file->mode, file->dst);
+ }
+--- 217,223 ----
+ */
+
+ fprintf(fp, "@exec /bin/mkdir -p %s\n", file->dst);
+! 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,337 ****
+ if (Verbosity)
+ puts("Building FreeBSD pkg binary distribution...");
+
+! if (run_command(NULL, "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);
+
+ /*
+ * Remove temporary files...
+--- 344,356 ----
+ if (Verbosity)
+ puts("Building FreeBSD pkg binary distribution...");
+
+! 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.tbz %s", name, directory))
+! if (run_command(NULL, "mv %s.tgz %s", name, directory))
+! return (1);
+
+ /*
+ * Remove temporary files...
+*** misc/epm-3.7/configure Thu Jul 24 03:20:54 2003
+--- misc/build/epm-3.7/configure Mon Nov 20 15:01:11 2006
+***************
+*** 1238,1244 ****
+--- 1238,1249 ----
+ 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
+ withval="$with_docdir"
+***************
+*** 4904,4939 ****
+ 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
+ fi
+! done
+! done
+!
+! ;;
+! esac
+ fi
+- FLTKCONFIG=$ac_cv_path_FLTKCONFIG
+
+ if test -n "$FLTKCONFIG"; then
+ echo "$as_me:$LINENO: result: $FLTKCONFIG" >&5
+--- 4909,4946 ----
+ fi
+
+
+! 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
+! FLTKCONFIG=$ac_cv_path_FLTKCONFIG
+ fi
+
+ if test -n "$FLTKCONFIG"; then
+ echo "$as_me:$LINENO: result: $FLTKCONFIG" >&5
+***************
+*** 4950,4957 ****
+--- 4957,4966 ----
+ 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"
+*** misc/epm-3.7/deb.c Wed Jan 15 15:29:24 2003
+--- misc/build/epm-3.7/deb.c Mon Nov 20 14:54:51 2006
+***************
+*** 26,31 ****
+--- 26,53 ----
+
+ #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,78 ****
+ if (Verbosity)
+ puts("Creating Debian distribution...");
+
+ if (dist->relnumber)
+ {
+ if (platname[0])
+! 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);
+ }
+ else if (platname[0])
+! snprintf(name, sizeof(name), "%s-%s-%s", prodname, dist->version, platname);
+ else
+! snprintf(name, sizeof(name), "%s-%s", prodname, dist->version);
+
+ /*
+ * Write the control file for DPKG...
+--- 83,111 ----
+ if (Verbosity)
+ puts("Creating Debian distribution...");
+
++ /*
++ * Use debian default naming scheme
++ */
++
++ if (!strcmp(platform->machine, "intel"))
++ platname = "i386";
++ else if (!strcmp(platform->machine, "x86_64"))
++ platname = "amd64";
++ 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,
+ platname);
+ else
+! 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);
+ else
+! snprintf(name, sizeof(name), "%s_%s", prodname, dist->version);
+
+ /*
+ * Write the control file for DPKG...
+***************
+*** 108,115 ****
+ * (which we change in get_platform to a common name)
+ */
+
+! if (strcmp(platform->machine, "intel") == 0)
+ fputs("Architecture: i386\n", fp);
+ else
+ fprintf(fp, "Architecture: %s\n", platform->machine);
+
+--- 141,152 ----
+ * (which we change in get_platform to a common name)
+ */
+
+! if (!strcmp(platform->machine, "intel"))
+ fputs("Architecture: i386\n", fp);
++ else if (!strcmp(platform->machine, "x86_64"))
++ fputs("Architecture: amd64\n", fp);
++ else if (!strcmp(platform->machine, "ppc"))
++ fputs("Architecture: powerpc\n", fp);
+ else
+ fprintf(fp, "Architecture: %s\n", platform->machine);
+
+***************
+*** 148,156 ****
+ putc('\n', fp);
+ }
+ }
+!
+ fclose(fp);
+!
+ /*
+ * Write the preinst file for DPKG...
+ */
+--- 185,193 ----
+ putc('\n', fp);
+ }
+ }
+!
+ fclose(fp);
+!
+ /*
+ * Write the preinst file for DPKG...
+ */
+***************
+*** 417,422 ****
+--- 454,480 ----
+ }
+ }
+
++
++ /*
++ * 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...
+ */
+*** misc/epm-3.7/dist.c Thu Aug 7 16:14:40 2003
+--- misc/build/epm-3.7/dist.c Mon Nov 20 14:54:51 2006
+***************
+*** 394,401 ****
+ strcpy(platform->machine, "mips");
+ #elif defined(__hpux)
+ strcpy(platform->machine, "hppa");
+! #elif defined(_AIX) || defined(__APPLE__)
+ strcpy(platform->machine, "powerpc");
+ #else
+ for (temp = platform->machine; *temp != '\0'; temp ++)
+ if (*temp == '-' || *temp == '_')
+--- 394,406 ----
+ strcpy(platform->machine, "mips");
+ #elif defined(__hpux)
+ strcpy(platform->machine, "hppa");
+! #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,413 ****
+ *temp = tolower(*temp);
+
+ if (strstr(platform->machine, "86") != NULL)
+! strcpy(platform->machine, "intel");
+ else if (strncmp(platform->machine, "sun", 3) == 0)
+ strcpy(platform->machine, "sparc");
+ #endif /* __sgi */
+--- 412,423 ----
+ *temp = tolower(*temp);
+
+ if (strstr(platform->machine, "86") != NULL)
+! {
+! 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 */
+*** misc/epm-3.7/epm.c Tue Oct 28 15:48:30 2003
+--- misc/build/epm-3.7/epm.c Mon Nov 20 14:54:51 2006
+***************
+*** 547,552 ****
+--- 547,553 ----
+ {
+ 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");
+*** misc/epm-3.7/file.c Wed Jul 23 23:41:08 2003
+--- misc/build/epm-3.7/file.c Mon Nov 20 14:54:51 2006
+***************
+*** 108,114 ****
+ fclose(dstfile);
+
+ chmod(dst, mode);
+- chown(dst, owner, group);
+
+ return (0);
+ }
+--- 108,113 ----
+***************
+*** 138,144 ****
+ {
+ mkdir(buffer, 0777);
+ chmod(buffer, mode | 0700);
+- chown(buffer, owner, group);
+ }
+ }
+
+--- 137,142 ----
+***************
+*** 151,157 ****
+ {
+ mkdir(buffer, 0777);
+ chmod(buffer, mode | 0700);
+- chown(buffer, owner, group);
+ }
+
+ return (0);
+--- 149,154 ----
+*** misc/epm-3.7/osx.c Wed Jul 23 23:41:08 2003
+--- misc/build/epm-3.7/osx.c Mon Nov 20 14:54:51 2006
+***************
+*** 373,379 ****
+ else
+ snprintf(filename, sizeof(filename), "%s/%s", current, directory);
+
+! run_command(NULL, "/Developer/Applications/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);
+--- 373,379 ----
+ else
+ snprintf(filename, sizeof(filename), "%s/%s", current, directory);
+
+! 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);
+*** misc/epm-3.7/pkg.c Tue Dec 17 19:57:56 2002
+--- misc/build/epm-3.7/pkg.c Mon Nov 20 14:54:51 2006
+***************
+*** 429,503 ****
+
+ 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);
+ }
+
+--- 429,434 ----
+*** misc/epm-3.7/qprintf.c Mon Jan 27 22:48:03 2003
+--- misc/build/epm-3.7/qprintf.c Mon Nov 20 14:54:51 2006
+***************
+*** 181,192 ****
+
+ for (i = slen; i > 0; i --, s ++, bytes ++)
+ {
+ if (strchr("`~!#$%^&*()[{]}\\|;\'\"<>? ", *s))
+ {
+ putc('\\', fp);
+ bytes ++;
+ }
+!
+ putc(*s, fp);
+ }
+
+--- 181,199 ----
+
+ 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);
+ }
+
+*** misc/epm-3.7/rpm.c Wed Oct 1 21:27:15 2003
+--- misc/build/epm-3.7/rpm.c Mon Nov 20 14:54:51 2006
+***************
+*** 38,44 ****
+ dist_t *dist, /* I - Distribution information */
+ struct utsname *platform) /* I - Platform information */
+ {
+! int i; /* Looping var */
+ FILE *fp; /* Spec file */
+ char name[1024]; /* Full product name */
+ char specname[1024]; /* Spec filename */
+--- 38,44 ----
+ dist_t *dist, /* I - Distribution information */
+ struct utsname *platform) /* I - Platform information */
+ {
+! int i,n; /* Looping vars */
+ FILE *fp; /* Spec file */
+ char name[1024]; /* Full product name */
+ char specname[1024]; /* Spec filename */
+***************
+*** 160,165 ****
+--- 160,167 ----
+ 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,200 ****
+ for (i = 0; i < dist->num_descriptions; i ++)
+ fprintf(fp, "%s\n", dist->descriptions[i]);
+
+! fputs("%pre\n", fp);
+ for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++)
+ if (c->type == COMMAND_PRE_INSTALL)
+ fprintf(fp, "%s\n", c->command);
+
+! fputs("%post\n", fp);
+ for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++)
+ if (c->type == COMMAND_POST_INSTALL)
+ fprintf(fp, "%s\n", c->command);
+
+ for (i = dist->num_files, file = dist->files; i > 0; i --, file ++)
+ if (tolower(file->type) == 'i')
+--- 188,220 ----
+ for (i = 0; i < dist->num_descriptions; i ++)
+ fprintf(fp, "%s\n", dist->descriptions[i]);
+
+! /*
+! * %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);
++ }
++ }
+
+! /*
+! * %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,207 ****
+--- 222,229 ----
+
+ 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,265 ****
+ fputs("fi\n", fp);
+ }
+
+! fputs("%preun\n", fp);
+ for (i = dist->num_files, file = dist->files; i > 0; i --, file ++)
+ if (tolower(file->type) == 'i')
+ break;
+--- 281,290 ----
+ fputs("fi\n", fp);
+ }
+
+! /*
+! * %preun
+! */
+! n = 0;
+ for (i = dist->num_files, file = dist->files; i > 0; i --, file ++)
+ if (tolower(file->type) == 'i')
+ break;
+***************
+*** 266,271 ****
+--- 291,297 ----
+
+ 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,327 ****
+ }
+
+ for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++)
+ if (c->type == COMMAND_PRE_REMOVE)
+ fprintf(fp, "%s\n", c->command);
+
+! fputs("%postun\n", fp);
+ for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++)
+ if (c->type == COMMAND_POST_REMOVE)
+ fprintf(fp, "%s\n", c->command);
+
+ fputs("%files\n", fp);
+ for (i = dist->num_files, file = dist->files; i > 0; i --, file ++)
+--- 341,369 ----
+ }
+
+ 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);
++ }
++ }
+
+! /*
+! * %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,467 ****
+ }
+ }
+
+- /*
+- * 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);
+ }
+
+--- 457,462 ----