summaryrefslogtreecommitdiff
path: root/user/gnucobol
diff options
context:
space:
mode:
Diffstat (limited to 'user/gnucobol')
-rw-r--r--user/gnucobol/0001-move-packed-decimal.patch30
-rw-r--r--user/gnucobol/0002-errno.patch26
-rw-r--r--user/gnucobol/APKBUILD26
-rw-r--r--user/gnucobol/keep-debug-flags.patch62
4 files changed, 73 insertions, 71 deletions
diff --git a/user/gnucobol/0001-move-packed-decimal.patch b/user/gnucobol/0001-move-packed-decimal.patch
new file mode 100644
index 000000000..d5251172a
--- /dev/null
+++ b/user/gnucobol/0001-move-packed-decimal.patch
@@ -0,0 +1,30 @@
+See also:
+
+* https://sourceforge.net/p/gnucobol/bugs/904/
+
+diff -ur a/gnucobol-3.2/libcob/numeric.c b/gnucobol-3.2/libcob/numeric.c
+--- a/libcob/numeric.c 2023-08-18 01:07:41.324059298 +0000
++++ b/libcob/numeric.c 2023-08-18 01:31:31.294137417 +0000
+@@ -2739,17 +2739,12 @@
+ }
+ } else {
+ unsigned char *pos = fld2 + fld2_size - 1;
+- if (COB_FIELD_HAVE_SIGN (f2)) {
+- if (!fld1_sign) {
+- *pos &= 0xF0;
+- *pos |= 0x0C;
+- } else {
+- *pos &= 0xF0;
+- *pos |= fld1_sign;
+- }
+- } else {
+- *pos &= 0xF0;
++ if (!COB_FIELD_HAVE_SIGN (f2)) {
+ *pos |= 0x0F;
++ } else if (fld1_sign == 0x0D) {
++ *pos = (*pos & 0xF0) | 0x0D;
++ } else {
++ *pos = (*pos & 0xF0) | 0x0C;
+ }
+ if (!(COB_FIELD_DIGITS (f2) & 1) /* -> digits % 2 == 0 */) {
+ *fld2 &= 0x0F;
diff --git a/user/gnucobol/0002-errno.patch b/user/gnucobol/0002-errno.patch
new file mode 100644
index 000000000..968190733
--- /dev/null
+++ b/user/gnucobol/0002-errno.patch
@@ -0,0 +1,26 @@
+See also:
+
+* https://git.adelielinux.org/adelie/packages/-/issues/1045#note_13472
+
+--- a/cobc/cobc.c.gc32 Sat Jul 22 17:01:52 2023
++++ b/cobc/cobc.c Thu Aug 17 23:01:33 2023
+@@ -2358,6 +2358,10 @@
+ DECLNORET static void COB_A_NORETURN
+ cobc_terminate (const char *str)
+ {
++ /* must be executed before anything that may adjust errno, ...
++ like the listing code below. */
++ const char *errno_str = cb_get_strerror ();
++
+ if (cb_src_list_file) {
+ set_listing_date ();
+ set_standard_title ();
+@@ -2365,7 +2369,7 @@
+ cobc_elided_strcpy (cb_listing_filename, str, sizeof (cb_listing_filename), 0);
+ print_program_header ();
+ }
+- cb_perror (0, "cobc: %s: %s", str, cb_get_strerror ());
++ cb_perror (0, "cobc: %s: %s", str, errno_str);
+ if (cb_src_list_file) {
+ print_program_trailer ();
+ }
diff --git a/user/gnucobol/APKBUILD b/user/gnucobol/APKBUILD
index 8e65b9810..39889457a 100644
--- a/user/gnucobol/APKBUILD
+++ b/user/gnucobol/APKBUILD
@@ -1,10 +1,10 @@
# Contributor: Max Rees <maxcrees@me.com>
-# Maintainer: Max Rees <maxcrees@me.com>
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=gnucobol
-pkgver=3.1.2
+pkgver=3.2
pkgrel=0
pkgdesc="Free COBOL compiler"
-url="https://sourceforge.net/projects/open-cobol/"
+url="https://www.gnu.org/software/gnucobol/"
arch="all"
license="GPL-3.0+ AND LGPL-3.0+ AND GFDL-1.3"
# Since it compiles to C as an intermediate, the headers / libraries must
@@ -12,9 +12,11 @@ license="GPL-3.0+ AND LGPL-3.0+ AND GFDL-1.3"
depends="db-dev gmp-dev json-c-dev libxml2-dev ncurses-dev"
makedepends="autoconf automake help2man libtool texinfo"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://downloads.sourceforge.net/project/gnucobol/gnucobol/${pkgver%.*}/gnucobol-$pkgver.tar.xz
- https://dev.sick.bike/dist/newcob.val.Z
- keep-debug-flags.patch
+source="https://ftp.gnu.org/gnu/gnucobol/gnucobol-$pkgver.tar.xz
+ https://www.itl.nist.gov/div897/ctg/suites/newcob.val.Z
+
+ 0001-move-packed-decimal.patch
+ 0002-errno.patch
"
prepare() {
@@ -37,14 +39,20 @@ build() {
}
check() {
- make check
+ #1045
+ for k in 774 775 818 887 1139 1140 1203 1215; do
+ sed -i tests/testsuite -e "/^$k;/d";
+ done
+
make test
+ make check
}
package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="738149c9d3e01140e4036b041f4eaa6c7caf7848a87146a3dd9940a9f17006805fd3c6b169d346bf01a0c2e671655080978c0f3182a85389f8f8a373ca8c1435 gnucobol-3.1.2.tar.xz
+sha512sums="1aef3c1bf7283219a7cb1e7b38ba5c5e299c0a83666ab6afdbb5713f1f791b23575ca51d546c4f2f036217060269028bbce4b5babbeb4f721b57495d5f258ff7 gnucobol-3.2.tar.xz
eb784866d1a335834074fbe103b5c5f5da810d847ae14a64316ecbb2c0f95ef751d2f2ec609b8fa21ef0b775817dc61115a574608ec89750d779ae0afbb95379 newcob.val.Z
-e032706ea9827ca416680f01a7440c44d9c586cbe7d93f5acd58adedacb6cc3d37a0966b6d5d6fc5d5969deb6a77757eee2a1d310ade8842924ffa8da0277a70 keep-debug-flags.patch"
+d913d314172b4476ac7488010a03d52aac4c25502333a146725d459655f128026b74b938a2224d15fbfbd91f91dad7202d1546e7f77c01e16e242341bbada62c 0001-move-packed-decimal.patch
+caaaca806c04db9e89f535c31444c647da926b76bed421c44ed1ea199d75d2fc4e1a5141eeff9c0985c2430513d416756443e8ca807bda9c3a496171e22026f0 0002-errno.patch"
diff --git a/user/gnucobol/keep-debug-flags.patch b/user/gnucobol/keep-debug-flags.patch
deleted file mode 100644
index 625a5002b..000000000
--- a/user/gnucobol/keep-debug-flags.patch
+++ /dev/null
@@ -1,62 +0,0 @@
---- gnucobol-3.1.2/configure.ac 2020-12-23 05:51:14.000000000 -0500
-+++ gnucobol-3.1.2/configure.ac 2021-05-03 02:35:16.051807283 -0400
-@@ -1854,59 +1854,6 @@ if test "$COB_USES_CLANG_ONLY" = "yes";
- fi
-
-
--# Include CFLAGS / CPPFLAGS in COB_CFLAGS without optimization/debug options.
--
--if test "x$CFLAGS" != "x"; then
-- cob_temp_flags="$CFLAGS"
--else
-- cob_temp_flags=""
--fi
--if test "x$CPPFLAGS" != "x"; then
-- if test "x$cob_temp_flags" != "x"; then
-- cob_temp_flags="$CPPFLAGS $cob_temp_flags"
-- else
-- cob_temp_flags="$CPPFLAGS"
-- fi
--fi
--
--#
--# Add CFLAGS and CPPFLAGS to COB_CFLAGS, minus optimization/debug options.
--
--cob_temp_flags="$CFLAGS $CPPFLAGS"
--
--if test "$enable_hardening" = no; then
-- cob_temp_flags=$(echo x$cob_temp_flags | \
-- sed -e 's/^x//' \
-- -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' \
-- -e 's/-D_FORTIFY_SOURCE=.//g' \
-- -e 's/-fmessage-length=0//g' \
-- -e 's/-fstack-protector-strong//g' \
-- -e 's/-fstack-protector-all//g' \
-- -e 's/-fstack-protector//g' \
-- )
--fi
--
--cob_temp_flags=$(echo x$cob_temp_flags | \
-- sed -e 's/^x//' \
-- -e 's/-g\(db\)\{0,1\}[[0-9 ]]//g' \
-- -e 's/-g\(db\)\{0,1\}$//' \
-- -e 's/[[+-]]O[[0-9s]]*//g' \
-- -e 's/-O//g' \
-- -e 's/-funwind-tables//g' \
-- -e 's/-fasynchronous-unwind-tables//g' \
-- -e 's/ / /g' \
-- -e 's/ $//g' \
-- )
--
--if test "x$cob_temp_flags" != "x"; then
-- COB_CFLAGS="$cob_temp_flags $COB_CFLAGS"
--fi
--if test "$enable_hardening" = "yes"; then
-- # needs optimization
-- COB_CFLAGS="$COB_CFLAGS -O"
--fi
--unset cob_temp_flags
--
- # Special stuff
-
- AH_VERBATIM([_XOPEN_SOURCE_EXTENDED],