office-gobmx/epm/epm-3.7.patch
Stephan Bergmann 2b62198dfc Fix EPMs deb Depends syntax
...that it is broken at least in our bundled EPM 3.7 became evident with
d07cbe86f3 "fdo#65541: Proper EPM %requires
dependencies, at least for Linux" failing for --with-package-format=deb now.

I cannot verify whether this is a known/fixed problem in upstream EPM (which is
at version 4.2 by now), as the download links at
<http://freecode.com/projects/epm> point at a (temporarily, at least)
unavailable ftp.easysw.com server.

Change-Id: Idad1cdfc55d870200ccb24ea94a2fe7c0ed2c9e8
2013-07-09 12:53:42 +02:00

666 lines
18 KiB
Diff

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);
@@ -139,7 +192,7 @@
else
{
if (d->vernumber[1] < INT_MAX)
- fprintf(fp, " (>= %s, <= %s)", d->version[0], d->version[1]);
+ fprintf(fp, " (>= %s), %s (<= %s)", d->version[0], d->product, d->version[1]);
else
fprintf(fp, " (>= %s)", d->version[0]);
}
@@ -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);
}