void-packages/srcpkgs/apl/patches/ppc.patch
Đoàn Trần Công Danh ae69000001 srcpkgs/a*: convert patches to -Np1
* arduino and antiword is kept at -Np0

```sh

git grep -l '^patch_args=-Np0' "srcpkgs/$1*/template" |
while read template; do
	for p in ${template%/template}/patches/*; do
		sed -i '
			\,^[+-][+-][+-] /dev/null,b
			/^[*-]\+ [0-9]\+\(,[0-9]\+\)\? [*-]\+$/b
			s,^[*][*][*] ,&a/,
			/^--- /{
				s,\(^--- \)\(./\)*,\1a/,
				s,[.][Oo][Rr][Ii][Gg]\([	/]\),\1,
				s/[.][Oo][Rr][Ii][Gg]$//
				s/[.]patched[.]\([^.]\)/.\1/
				h
			}
			/^+++ -/{
				g
				s/^--- a/+++ b/
				b
			}
			s,\(^+++ \)\(./\)*,\1b/,
		' "$p"
	done
	sed -i '/^patch_args=/d' $template
done
```
2021-06-20 13:17:29 +07:00

43 lines
1.6 KiB
Diff

This backports the relevant bit of svn revision 1177 to fix build on platforms
where long double does not have extended range (larger than regular double),
particularly PowerPC (32 and 64 bit).
On those platforms, the build previously failed with:
Tokenizer.cc:769:4: error: floating constant exceeds range of 'long double' [-Werror=overflow]
exp_0_9(1E30)
^~~~~~~
--- a/src/Tokenizer.cc
+++ b/src/Tokenizer.cc
@@ -755,10 +755,10 @@
MAX_TOKENIZE_DIGITS = MAX_TOKENIZE_DIGITS_1 - 1 // excl. rounding digit
};
-#define exp_0_9(x) x ## 0L, x ## 1L, x ## 2L, x ## 3L, x ## 4L, \
- x ## 5L, x ## 6L, x ## 7L, x ## 8L, x ## 9L,
+#define exp_0_9(x) x ## 0, x ## 1, x ## 2, x ## 3, x ## 4, \
+ x ## 5, x ## 6, x ## 7, x ## 8, x ## 9,
-static const long double expo_tab[310] =
+static const long double expo_tab[309] =
{
exp_0_9(1E) exp_0_9(1E1) exp_0_9(1E2) exp_0_9(1E3) exp_0_9(1E4)
exp_0_9(1E5) exp_0_9(1E6) exp_0_9(1E7) exp_0_9(1E8) exp_0_9(1E9)
@@ -766,7 +766,7 @@
exp_0_9(1E15) exp_0_9(1E16) exp_0_9(1E17) exp_0_9(1E18) exp_0_9(1E19)
exp_0_9(1E20) exp_0_9(1E21) exp_0_9(1E22) exp_0_9(1E23) exp_0_9(1E24)
exp_0_9(1E25) exp_0_9(1E26) exp_0_9(1E27) exp_0_9(1E28) exp_0_9(1E29)
- exp_0_9(1E30)
+ 1E300, 1E301, 1E302, 1E303, 1E304, 1E305, 1E306, 1E307, 1E308
};
static const long double nexpo_tab[310] =
@@ -960,6 +960,7 @@
if (expo > 0)
{
+ if (expo > 308) return false;
if (negative) flt_val = - v * expo_tab[expo];
else flt_val = v * expo_tab[expo];
return true; // OK