From 56a15f0fed715a2bd675939b762aee7c9f2ec01e Mon Sep 17 00:00:00 2001 From: George Stagg Date: Thu, 25 Apr 2024 11:35:58 +0100 Subject: [PATCH 1/8] Update patches for R 4.4.0 --- .../emscripten-dotcode-fortran-fix.diff | 862 ------------------ patches/R-4.3.3/emscripten-jumpctxt.diff | 22 - patches/R-4.3.3/emscripten-xdr.diff | 538 ----------- patches/R-4.3.3/fix-devUp.diff | 24 - patches/R-4.3.3/fix-signrank-wilcox.diff | 32 - .../emscripten-avoid-testing-issues.diff | 60 +- .../emscripten-configure.diff | 24 +- .../emscripten-disable-bcEval.diff | 44 +- .../emscripten-disable-system.diff | 29 +- .../emscripten-fix-blas-dlsym-search.diff | 8 +- .../emscripten-includes.diff | 6 +- .../emscripten-input.diff | 18 +- patches/R-4.4.0/emscripten-jumpctxt.diff | 13 + .../emscripten-lazyload.diff | 80 +- .../emscripten-makefiles.diff | 12 +- .../emscripten-r-home-stderr.diff | 6 +- .../emscripten-unimplmented.diff | 6 +- .../emscripten-xhr-download.diff | 114 ++- .../fix-sink-release.diff | 8 +- .../flang-avoid-maxloc.diff | 26 +- .../fontconfig-typeof.diff | 6 +- patches/{R-4.3.3 => R-4.4.0}/series | 4 - 22 files changed, 268 insertions(+), 1674 deletions(-) delete mode 100644 patches/R-4.3.3/emscripten-dotcode-fortran-fix.diff delete mode 100644 patches/R-4.3.3/emscripten-jumpctxt.diff delete mode 100644 patches/R-4.3.3/emscripten-xdr.diff delete mode 100644 patches/R-4.3.3/fix-devUp.diff delete mode 100644 patches/R-4.3.3/fix-signrank-wilcox.diff rename patches/{R-4.3.3 => R-4.4.0}/emscripten-avoid-testing-issues.diff (73%) rename patches/{R-4.3.3 => R-4.4.0}/emscripten-configure.diff (83%) rename patches/{R-4.3.3 => R-4.4.0}/emscripten-disable-bcEval.diff (50%) rename patches/{R-4.3.3 => R-4.4.0}/emscripten-disable-system.diff (68%) rename patches/{R-4.3.3 => R-4.4.0}/emscripten-fix-blas-dlsym-search.diff (70%) rename patches/{R-4.3.3 => R-4.4.0}/emscripten-includes.diff (72%) rename patches/{R-4.3.3 => R-4.4.0}/emscripten-input.diff (82%) create mode 100644 patches/R-4.4.0/emscripten-jumpctxt.diff rename patches/{R-4.3.3 => R-4.4.0}/emscripten-lazyload.diff (83%) rename patches/{R-4.3.3 => R-4.4.0}/emscripten-makefiles.diff (94%) rename patches/{R-4.3.3 => R-4.4.0}/emscripten-r-home-stderr.diff (77%) rename patches/{R-4.3.3 => R-4.4.0}/emscripten-unimplmented.diff (82%) rename patches/{R-4.3.3 => R-4.4.0}/emscripten-xhr-download.diff (86%) rename patches/{R-4.3.3 => R-4.4.0}/fix-sink-release.diff (64%) rename patches/{R-4.3.3 => R-4.4.0}/flang-avoid-maxloc.diff (87%) rename patches/{R-4.3.3 => R-4.4.0}/fontconfig-typeof.diff (80%) rename patches/{R-4.3.3 => R-4.4.0}/series (82%) diff --git a/patches/R-4.3.3/emscripten-dotcode-fortran-fix.diff b/patches/R-4.3.3/emscripten-dotcode-fortran-fix.diff deleted file mode 100644 index ce82a432..00000000 --- a/patches/R-4.3.3/emscripten-dotcode-fortran-fix.diff +++ /dev/null @@ -1,862 +0,0 @@ -Index: R-4.3.3/src/main/dotcode.c -=================================================================== ---- R-4.3.3.orig/src/main/dotcode.c -+++ R-4.3.3/src/main/dotcode.c -@@ -1772,6 +1772,343 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - #define FILL 0xee - #define NG 64 - -+typedef void (*FFUNS0)(); -+typedef void (*FFUNS1)(void**); -+typedef void (*FFUNS2)(void**, void**); -+typedef void (*FFUNS3)(void**, void**, void**); -+typedef void (*FFUNS4)(void**, void**, void**, void**); -+typedef void (*FFUNS5)(void**, void**, void**, void**, void**); -+typedef void (*FFUNS6)(void**, void**, void**, void**, void**, void**); -+typedef void (*FFUNS7)(void**, void**, void**, void**, void**, void**, void**); -+typedef void (*FFUNS8)(void**, void**, void**, void**, void**, void**, void**, -+ void**); -+typedef void (*FFUNS9)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**); -+typedef void (*FFUNS10)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**); -+typedef void (*FFUNS11)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**); -+typedef void (*FFUNS12)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**); -+typedef void (*FFUNS13)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**); -+typedef void (*FFUNS14)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**); -+typedef void (*FFUNS15)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**); -+typedef void (*FFUNS16)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**); -+typedef void (*FFUNS17)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**); -+typedef void (*FFUNS18)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**); -+typedef void (*FFUNS19)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**); -+typedef void (*FFUNS20)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**); -+typedef void (*FFUNS21)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**); -+typedef void (*FFUNS22)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**); -+typedef void (*FFUNS23)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**); -+typedef void (*FFUNS24)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**); -+typedef void (*FFUNS25)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**); -+typedef void (*FFUNS26)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**); -+typedef void (*FFUNS27)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**); -+typedef void (*FFUNS28)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**); -+typedef void (*FFUNS29)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**); -+typedef void (*FFUNS30)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**); -+typedef void (*FFUNS31)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**); -+typedef void (*FFUNS32)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**); -+typedef void (*FFUNS33)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**); -+typedef void (*FFUNS34)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**); -+typedef void (*FFUNS35)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**); -+typedef void (*FFUNS36)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**); -+typedef void (*FFUNS37)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**); -+typedef void (*FFUNS38)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**); -+typedef void (*FFUNS39)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**); -+typedef void (*FFUNS40)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**); -+typedef void (*FFUNS41)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**); -+typedef void (*FFUNS42)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**); -+typedef void (*FFUNS43)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**); -+typedef void (*FFUNS44)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**); -+typedef void (*FFUNS45)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**); -+typedef void (*FFUNS46)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**); -+typedef void (*FFUNS47)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**); -+typedef void (*FFUNS48)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**); -+typedef void (*FFUNS49)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**); -+typedef void (*FFUNS50)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**); -+typedef void (*FFUNS51)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**); -+typedef void (*FFUNS52)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**); -+typedef void (*FFUNS53)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**); -+typedef void (*FFUNS54)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**); -+typedef void (*FFUNS55)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**); -+typedef void (*FFUNS56)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**); -+typedef void (*FFUNS57)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**); -+typedef void (*FFUNS58)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**); -+typedef void (*FFUNS59)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**); -+typedef void (*FFUNS60)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**); -+typedef void (*FFUNS61)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**); -+typedef void (*FFUNS62)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**); -+typedef void (*FFUNS63)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**); -+typedef void (*FFUNS64)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**); -+typedef void (*FFUNS65)(void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**, void**, void**, void**, void**, void**, -+ void**, void**); -+ - attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, SEXP args, SEXP env) - { - void **cargs, **cargs0 = NULL /* -Wall */; -@@ -2069,135 +2406,135 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - - switch (nargs) { - case 0: -- fun(); -+ ((FFUNS0)fun)(); - break; - case 1: -- ((FUNS1)fun)(cargs[0]); -+ ((FFUNS1)fun)(cargs[0]); - break; - case 2: -- ((FUNS2)fun)(cargs[0], cargs[1]); -+ ((FFUNS2)fun)(cargs[0], cargs[1]); - break; - case 3: -- ((FUNS3)fun)(cargs[0], cargs[1], cargs[2]); -+ ((FFUNS3)fun)(cargs[0], cargs[1], cargs[2]); - break; - case 4: -- ((FUNS4)fun)(cargs[0], cargs[1], cargs[2], cargs[3]); -+ ((FFUNS4)fun)(cargs[0], cargs[1], cargs[2], cargs[3]); - break; - case 5: -- ((FUNS5)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4]); -+ ((FFUNS5)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4]); - break; - case 6: -- ((FUNS6)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS6)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5]); - break; - case 7: -- ((FUNS7)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS7)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6]); - break; - case 8: -- ((FUNS8)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS8)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7]); - break; - case 9: -- ((FUNS9)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS9)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8]); - break; - case 10: -- ((FUNS10)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS10)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9]); - break; - case 11: -- ((FUNS11)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS11)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10]); - break; - case 12: -- ((FUNS12)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS12)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11]); - break; - case 13: -- ((FUNS13)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS13)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12]); - break; - case 14: -- ((FUNS14)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS14)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13]); - break; - case 15: -- ((FUNS15)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS15)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14]); - break; - case 16: -- ((FUNS16)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS16)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15]); - break; - case 17: -- ((FUNS17)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS17)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16]); - break; - case 18: -- ((FUNS18)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS18)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17]); - break; - case 19: -- ((FUNS19)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS19)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18]); - break; - case 20: -- ((FUNS20)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS20)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19]); - break; - case 21: -- ((FUNS21)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS21)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], - cargs[20]); - break; - case 22: -- ((FUNS22)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS22)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], - cargs[20], cargs[21]); - break; - case 23: -- ((FUNS23)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS23)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], - cargs[20], cargs[21], cargs[22]); - break; - case 24: -- ((FUNS24)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS24)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], - cargs[20], cargs[21], cargs[22], cargs[23]); - break; - case 25: -- ((FUNS25)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS25)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], - cargs[20], cargs[21], cargs[22], cargs[23], cargs[24]); - break; - case 26: -- ((FUNS26)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS26)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2205,7 +2542,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[25]); - break; - case 27: -- ((FUNS27)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS27)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2213,7 +2550,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[25], cargs[26]); - break; - case 28: -- ((FUNS28)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS28)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2221,7 +2558,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[25], cargs[26], cargs[27]); - break; - case 29: -- ((FUNS29)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS29)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2229,7 +2566,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[25], cargs[26], cargs[27], cargs[28]); - break; - case 30: -- ((FUNS30)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS30)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2237,7 +2574,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[25], cargs[26], cargs[27], cargs[28], cargs[29]); - break; - case 31: -- ((FUNS31)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS31)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2246,7 +2583,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[30]); - break; - case 32: -- ((FUNS32)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS32)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2255,7 +2592,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[30], cargs[31]); - break; - case 33: -- ((FUNS33)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS33)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2264,7 +2601,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[30], cargs[31], cargs[32]); - break; - case 34: -- ((FUNS34)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS34)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2273,7 +2610,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[30], cargs[31], cargs[32], cargs[33]); - break; - case 35: -- ((FUNS35)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS35)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2282,7 +2619,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[30], cargs[31], cargs[32], cargs[33], cargs[34]); - break; - case 36: -- ((FUNS36)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS36)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2292,7 +2629,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[35]); - break; - case 37: -- ((FUNS37)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS37)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2302,7 +2639,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[35], cargs[36]); - break; - case 38: -- ((FUNS38)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS38)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2312,7 +2649,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[35], cargs[36], cargs[37]); - break; - case 39: -- ((FUNS39)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS39)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2322,7 +2659,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[35], cargs[36], cargs[37], cargs[38]); - break; - case 40: -- ((FUNS40)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS40)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2332,7 +2669,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[35], cargs[36], cargs[37], cargs[38], cargs[39]); - break; - case 41: -- ((FUNS41)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS41)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2343,7 +2680,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[40]); - break; - case 42: -- ((FUNS42)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS42)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2354,7 +2691,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[40], cargs[41]); - break; - case 43: -- ((FUNS43)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS43)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2365,7 +2702,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[40], cargs[41], cargs[42]); - break; - case 44: -- ((FUNS44)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS44)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2376,7 +2713,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[40], cargs[41], cargs[42], cargs[43]); - break; - case 45: -- ((FUNS45)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS45)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2387,7 +2724,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[40], cargs[41], cargs[42], cargs[43], cargs[44]); - break; - case 46: -- ((FUNS46)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS46)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2399,7 +2736,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[45]); - break; - case 47: -- ((FUNS47)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS47)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2411,7 +2748,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[45], cargs[46]); - break; - case 48: -- ((FUNS48)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS48)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2423,7 +2760,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[45], cargs[46], cargs[47]); - break; - case 49: -- ((FUNS49)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS49)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2435,7 +2772,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[45], cargs[46], cargs[47], cargs[48]); - break; - case 50: -- ((FUNS50)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS50)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2447,7 +2784,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[45], cargs[46], cargs[47], cargs[48], cargs[49]); - break; - case 51: -- ((FUNS51)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS51)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2460,7 +2797,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[50]); - break; - case 52: -- ((FUNS52)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS52)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2473,7 +2810,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[50], cargs[51]); - break; - case 53: -- ((FUNS53)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS53)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2486,7 +2823,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[50], cargs[51], cargs[52]); - break; - case 54: -- ((FUNS54)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS54)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2499,7 +2836,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[50], cargs[51], cargs[52], cargs[53]); - break; - case 55: -- ((FUNS55)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS55)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2512,7 +2849,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[50], cargs[51], cargs[52], cargs[53], cargs[54]); - break; - case 56: -- ((FUNS56)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS56)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2526,7 +2863,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[55]); - break; - case 57: -- ((FUNS57)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS57)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2540,7 +2877,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[55], cargs[56]); - break; - case 58: -- ((FUNS58)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS58)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2554,7 +2891,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[55], cargs[56], cargs[57]); - break; - case 59: -- ((FUNS59)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS59)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2568,7 +2905,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[55], cargs[56], cargs[57], cargs[58]); - break; - case 60: -- ((FUNS60)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS60)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2582,7 +2919,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[55], cargs[56], cargs[57], cargs[58], cargs[59]); - break; - case 61: -- ((FUNS61)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS61)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2597,7 +2934,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[60]); - break; - case 62: -- ((FUNS62)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS62)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2612,7 +2949,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[60], cargs[61]); - break; - case 63: -- ((FUNS63)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS63)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2627,7 +2964,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[60], cargs[61], cargs[62]); - break; - case 64: -- ((FUNS64)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS64)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], -@@ -2642,7 +2979,7 @@ attribute_hidden SEXP do_dotCode(SEXP call, SEXP op, S - cargs[60], cargs[61], cargs[62], cargs[63]); - break; - case 65: -- ((FUNS65)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], -+ ((FFUNS65)fun)(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], - cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], - cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], - cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], diff --git a/patches/R-4.3.3/emscripten-jumpctxt.diff b/patches/R-4.3.3/emscripten-jumpctxt.diff deleted file mode 100644 index fde41bfc..00000000 --- a/patches/R-4.3.3/emscripten-jumpctxt.diff +++ /dev/null @@ -1,22 +0,0 @@ -Index: R-4.3.3/src/main/errors.c -=================================================================== ---- R-4.3.3.orig/src/main/errors.c -+++ R-4.3.3/src/main/errors.c -@@ -1082,7 +1082,7 @@ static void jump_to_top_ex(Rboolean traceback, - } - } - -- R_jumpctxt(R_ToplevelContext, 0, NULL); -+ R_jumpctxt(R_ToplevelContext, 1, NULL); - } - - NORET void jump_to_toplevel(void) -@@ -1536,7 +1536,7 @@ NORET void R_JumpToToplevel(Rboolean restart) - if (c != R_ToplevelContext) - warning(_("top level inconsistency?")); - -- R_jumpctxt(R_ToplevelContext, CTXT_TOPLEVEL, NULL); -+ R_jumpctxt(R_ToplevelContext, 1, NULL); - } - #endif - diff --git a/patches/R-4.3.3/emscripten-xdr.diff b/patches/R-4.3.3/emscripten-xdr.diff deleted file mode 100644 index b985a3a6..00000000 --- a/patches/R-4.3.3/emscripten-xdr.diff +++ /dev/null @@ -1,538 +0,0 @@ -Index: R-4.3.3/src/extra/xdr/rpc/xdr.h -=================================================================== ---- R-4.3.3.orig/src/extra/xdr/rpc/xdr.h -+++ R-4.3.3/src/extra/xdr/rpc/xdr.h -@@ -49,6 +49,8 @@ - #ifndef __XDR_HEADER__ - #define __XDR_HEADER__ - -+#include -+ - /* - * XDR provides a conventional way for converting between C data - * types and an external bit-string representation. Library supplied -@@ -114,16 +116,16 @@ typedef struct { - * an operations vector for the paticular implementation (e.g. see xdr_mem.c), - * and two private fields for the use of the particular impelementation. - */ --typedef struct { -+typedef struct xdr_struct { - enum xdr_op x_op; /* operation; fast additional param */ - struct xdr_ops { -- bool_t (*x_getlong)(); /* get a long from underlying stream */ -- bool_t (*x_putlong)(); /* put a long to " */ -- bool_t (*x_getbytes)();/* get some bytes from " */ -- bool_t (*x_putbytes)();/* put some bytes to " */ -- u_int (*x_getpostn)();/* returns bytes off from beginning */ -- bool_t (*x_setpostn)();/* lets you reposition the stream */ -- long * (*x_inline)(); /* buf quick ptr to buffered data */ -+ bool_t (*x_getlong)(struct xdr_struct *xdrs, int32_t *longp); /* get a long from underlying stream */ -+ bool_t (*x_putlong)(struct xdr_struct *xdrs, int32_t *longp); /* put a long to " */ -+ bool_t (*x_getbytes)(struct xdr_struct *xdrs, caddr_t addr, u_int len);/* get some bytes from " */ -+ bool_t (*x_putbytes)(struct xdr_struct *xdrs, caddr_t addr, u_int len);/* put some bytes to " */ -+ u_int (*x_getpostn)(struct xdr_struct *xdrs);/* returns bytes off from beginning */ -+ bool_t (*x_setpostn)(struct xdr_struct *xdrs, u_int pos);/* lets you reposition the stream */ -+ long * (*x_inline)(struct xdr_struct *xdrs, int len); /* buf quick ptr to buffered data */ - void (*x_destroy)(); /* free privates of this xdr_stream */ - } *x_ops; - caddr_t x_public; /* users' data */ -@@ -178,10 +180,10 @@ typedef struct { - - #define XDR_DESTROY(xdrs) \ - if ((xdrs)->x_ops->x_destroy) \ -- (*(xdrs)->x_ops->x_destroy)(xdrs) -+ (*(xdrs)->x_ops->x_destroy)() - #define xdr_destroy(xdrs) \ - if ((xdrs)->x_ops->x_destroy) \ -- (*(xdrs)->x_ops->x_destroy)(xdrs) -+ (*(xdrs)->x_ops->x_destroy)() - - /* - * Support struct for discriminated unions. -@@ -236,27 +238,27 @@ extern bool_t xdr_int(); - * These are the "generic" xdr routines. - */ - extern bool_t xdr_void(); --extern bool_t xdr_int(); --extern bool_t xdr_u_int(); --extern bool_t xdr_long(); --extern bool_t xdr_u_long(); --extern bool_t xdr_short(); --extern bool_t xdr_u_short(); --extern bool_t xdr_bool(); --extern bool_t xdr_enum(); -+extern bool_t xdr_int(XDR *xdrs, int *ip); -+extern bool_t xdr_u_int(XDR *xdrs, u_int *up); -+extern bool_t xdr_long(XDR *xdrs, int32_t *lp); -+extern bool_t xdr_u_long(XDR *xdrs, uint32_t *ulp); -+extern bool_t xdr_short(XDR *xdrs, short *sp); -+extern bool_t xdr_u_short(XDR *xdrs, u_short *usp); -+extern bool_t xdr_bool(XDR *xdrs, bool_t *bp); -+extern bool_t xdr_enum(XDR *xdrs, enum_t *ep); - extern bool_t xdr_array(); --extern bool_t xdr_bytes(); --extern bool_t xdr_opaque(); --extern bool_t xdr_string(); --extern bool_t xdr_union(); --extern bool_t xdr_char(); --extern bool_t xdr_u_char(); -+extern bool_t xdr_bytes(XDR *xdrs, char **cpp, u_int *sizep, u_int maxsize); -+extern bool_t xdr_opaque(XDR *xdrs, caddr_t cp, u_int cnt); -+extern bool_t xdr_string(XDR *xdrs, char **cpp, u_int maxsize); -+extern bool_t xdr_union(XDR *xdrs, enum_t *dscmp, char *unp, struct xdr_discrim *choices, xdrproc_t dfault); -+extern bool_t xdr_char(XDR *xdrs, char *cp); -+extern bool_t xdr_u_char(XDR *xdrs, char *cp); - extern bool_t xdr_vector(); - extern bool_t xdr_float(); --extern bool_t xdr_double(); -+extern bool_t xdr_double(XDR *xdrs, double *dp); - extern bool_t xdr_reference(); - extern bool_t xdr_pointer(); --extern bool_t xdr_wrapstring(); -+extern bool_t xdr_wrapstring(XDR *xdrs, char **cpp); - - /* - * Common opaque bytes objects used by many rpc protocols; -@@ -268,14 +270,14 @@ extern bool_t xdr_netobj(); - char *n_bytes; - }; - typedef struct netobj netobj; --extern bool_t xdr_netobj(); -+extern bool_t xdr_netobj(XDR *xdrs, struct netobj *np); - - /* - * These are the public routines for the various implementations of - * xdr streams. - */ --extern void xdrmem_create(); /* XDR using memory buffers */ --extern void xdrstdio_create(); /* XDR using stdio library */ -+extern void xdrmem_create(XDR *xdrs, caddr_t addr, u_int size, enum xdr_op op); /* XDR using memory buffers */ -+extern void xdrstdio_create(XDR *xdrs, FILE *file, enum xdr_op op); /* XDR using stdio library */ - extern void xdrrec_create(); /* XDR pseudo records for tcp */ - extern bool_t xdrrec_endofrecord(); /* make end of xdr record */ - extern bool_t xdrrec_skiprecord(); /* move to beginning of next record */ -Index: R-4.3.3/src/extra/xdr/xdr.c -=================================================================== ---- R-4.3.3.orig/src/extra/xdr/xdr.c -+++ R-4.3.3/src/extra/xdr/xdr.c -@@ -84,9 +84,7 @@ xdr_free(proc, objp) - * Not a filter, but a convenient utility nonetheless - */ - void --xdr_free(proc, objp) -- xdrproc_t proc; -- char *objp; -+xdr_free(xdrproc_t proc, char *objp) - { - XDR x; - -@@ -100,9 +98,7 @@ xdr_void(/* xdrs, addr */) - * XDR nothing - */ - bool_t --xdr_void(/* xdrs, addr */) -- /* XDR *xdrs; */ -- /* caddr_t addr; */ -+xdr_void(/* XDR *xdrs, caddr_t addr */) - { - - return (TRUE); -@@ -113,9 +109,7 @@ xdr_int(xdrs, ip) - * XDR integers: always 32-bit in R - */ - bool_t --xdr_int(xdrs, ip) -- XDR *xdrs; -- int *ip; -+xdr_int(XDR *xdrs, int *ip) - { - // return (xdr_long(xdrs, (int32_t *)ip)); - -@@ -132,9 +126,7 @@ xdr_u_int(xdrs, up) - * XDR unsigned integers: always 32-bit in R - */ - bool_t --xdr_u_int(xdrs, up) -- XDR *xdrs; -- u_int *up; -+xdr_u_int(XDR *xdrs, u_int *up) - { - // return (xdr_u_long(xdrs, (uint32_t *)up)); - -@@ -154,9 +146,7 @@ xdr_long(xdrs, lp) - * same as xdr_u_long - open coded to save a proc call! - */ - bool_t --xdr_long(xdrs, lp) -- register XDR *xdrs; -- int32_t *lp; -+xdr_long(XDR *xdrs, int32_t *lp) - { - - if (xdrs->x_op == XDR_ENCODE) -@@ -176,9 +166,7 @@ xdr_u_long(xdrs, ulp) - * same as xdr_long - open coded to save a proc call! - */ - bool_t --xdr_u_long(xdrs, ulp) -- register XDR *xdrs; -- uint32_t *ulp; -+xdr_u_long(XDR *xdrs, uint32_t *ulp) - { - - if (xdrs->x_op == XDR_DECODE) -@@ -194,9 +182,7 @@ xdr_short(xdrs, sp) - * XDR short integers - */ - bool_t --xdr_short(xdrs, sp) -- register XDR *xdrs; -- short *sp; -+xdr_short(XDR *xdrs, short *sp) - { - int32_t l; - -@@ -223,9 +209,7 @@ xdr_u_short(xdrs, usp) - * XDR unsigned short integers - */ - bool_t --xdr_u_short(xdrs, usp) -- register XDR *xdrs; -- u_short *usp; -+xdr_u_short(XDR *xdrs, u_short *usp) - { - uint32_t l; - -@@ -252,9 +236,7 @@ xdr_char(xdrs, cp) - * XDR a char - */ - bool_t --xdr_char(xdrs, cp) -- XDR *xdrs; -- char *cp; -+xdr_char(XDR *xdrs, char *cp) - { - int i; - -@@ -270,9 +252,7 @@ xdr_u_char(xdrs, cp) - * XDR an unsigned char - */ - bool_t --xdr_u_char(xdrs, cp) -- XDR *xdrs; -- char *cp; -+xdr_u_char(XDR* xdrs, char *cp) - { - u_int u; - -@@ -288,9 +268,7 @@ xdr_bool(xdrs, bp) - * XDR booleans - */ - bool_t --xdr_bool(xdrs, bp) -- register XDR *xdrs; -- bool_t *bp; -+xdr_bool(XDR *xdrs, bool_t *bp) - { - int32_t lb; - -@@ -317,9 +295,7 @@ xdr_enum(xdrs, ep) - * XDR enumerations - */ - bool_t --xdr_enum(xdrs, ep) -- XDR *xdrs; -- enum_t *ep; -+xdr_enum(XDR *xdrs, enum_t *ep) - { - #ifndef lint - enum sizecheck { SIZEVAL }; /* used to find the size of an enum */ -@@ -347,10 +323,7 @@ xdr_opaque(xdrs, cp, cnt) - * cp points to the opaque object and cnt gives the byte length. - */ - bool_t --xdr_opaque(xdrs, cp, cnt) -- register XDR *xdrs; -- caddr_t cp; -- register u_int cnt; -+xdr_opaque(XDR *xdrs, caddr_t cp, u_int cnt) - { - register u_int rndup; - static int crud[BYTES_PER_XDR_UNIT]; -@@ -374,7 +347,7 @@ xdr_opaque(xdrs, cp, cnt) - } - if (rndup == 0) - return (TRUE); -- return (XDR_GETBYTES(xdrs, crud, rndup)); -+ return (XDR_GETBYTES(xdrs, (caddr_t)crud, rndup)); - } - - if (xdrs->x_op == XDR_ENCODE) { -@@ -399,11 +372,7 @@ xdr_bytes(xdrs, cpp, sizep, maxsize) - * If *cpp is NULL maxsize bytes are allocated - */ - bool_t --xdr_bytes(xdrs, cpp, sizep, maxsize) -- register XDR *xdrs; -- char **cpp; -- register u_int *sizep; -- u_int maxsize; -+xdr_bytes(XDR *xdrs, char **cpp, u_int *sizep, u_int maxsize) - { - register char *sp = *cpp; /* sp is the actual string pointer */ - register u_int nodesize; -@@ -455,9 +424,7 @@ xdr_netobj(xdrs, np) - * Implemented here due to commonality of the object. - */ - bool_t --xdr_netobj(xdrs, np) -- XDR *xdrs; -- struct netobj *np; -+xdr_netobj(XDR *xdrs, struct netobj *np) - { - - return (xdr_bytes(xdrs, &np->n_bytes, &np->n_len, MAX_NETOBJ_SZ)); -@@ -475,12 +442,7 @@ xdr_union(xdrs, dscmp, unp, choices, dfault) - * If there is no specific or default routine an error is returned. - */ - bool_t --xdr_union(xdrs, dscmp, unp, choices, dfault) -- register XDR *xdrs; -- enum_t *dscmp; /* enum to decide which arm to work on */ -- char *unp; /* the union itself */ -- struct xdr_discrim *choices; /* [value, xdr proc] for each arm */ -- xdrproc_t dfault; /* default xdr routine */ -+xdr_union(XDR *xdrs, enum_t *dscmp, char *unp, struct xdr_discrim *choices, xdrproc_t dfault) - { - register enum_t dscm; - -@@ -524,10 +486,7 @@ xdr_string(xdrs, cpp, maxsize) - * of the string as specified by a protocol. - */ - bool_t --xdr_string(xdrs, cpp, maxsize) -- register XDR *xdrs; -- char **cpp; -- u_int maxsize; -+xdr_string(XDR *xdrs, char **cpp, u_int maxsize) - { - register char *sp = *cpp; /* sp is the actual string pointer */ - u_int size; -@@ -592,9 +551,7 @@ xdr_wrapstring(xdrs, cpp) - * routines like clnt_call - */ - bool_t --xdr_wrapstring(xdrs, cpp) -- XDR *xdrs; -- char **cpp; -+xdr_wrapstring(XDR* xdrs, char **cpp) - { - if (xdr_string(xdrs, cpp, LASTUNSIGNED)) { - return (TRUE); -Index: R-4.3.3/src/extra/xdr/xdr_mem.c -=================================================================== ---- R-4.3.3.orig/src/extra/xdr/xdr_mem.c -+++ R-4.3.3/src/extra/xdr/xdr_mem.c -@@ -97,13 +97,13 @@ static bool_t xdrmem_getlong(); - /* The use of 'long' here would be problematic if it were ever to be - used on a 64-bit system */ - --static bool_t xdrmem_getlong(); --static bool_t xdrmem_putlong(); --static bool_t xdrmem_getbytes(); --static bool_t xdrmem_putbytes(); --static u_int xdrmem_getpos(); --static bool_t xdrmem_setpos(); --static long * xdrmem_inline(); -+static bool_t xdrmem_getlong(XDR *xdrs, int32_t *lp); -+static bool_t xdrmem_putlong(XDR *xdrs, int32_t *lp); -+static bool_t xdrmem_getbytes(XDR *xdrs, caddr_t addr, u_int len); -+static bool_t xdrmem_putbytes(XDR *xdrs, caddr_t addr, u_int len); -+static u_int xdrmem_getpos(XDR *xdrs); -+static bool_t xdrmem_setpos(XDR *xdrs, u_int pos); -+static long * xdrmem_inline(XDR *xdrs, int len); - static void xdrmem_destroy(); - - static struct xdr_ops xdrmem_ops = { -@@ -122,11 +122,7 @@ xdrmem_create(xdrs, addr, size, op) - * memory buffer. - */ - void --xdrmem_create(xdrs, addr, size, op) -- register XDR *xdrs; -- caddr_t addr; -- u_int size; -- enum xdr_op op; -+xdrmem_create(XDR *xdrs, caddr_t addr, u_int size, enum xdr_op op) - { - - xdrs->x_op = op; -@@ -136,8 +132,7 @@ xdrmem_destroy(/*xdrs*/) - } - - static void --xdrmem_destroy(/*xdrs*/) -- /*XDR *xdrs;*/ -+xdrmem_destroy(/*XDR *xdrs*/) - { - } - -@@ -164,10 +159,7 @@ xdrmem_getbytes(xdrs, addr, len) - } - - static bool_t --xdrmem_getbytes(xdrs, addr, len) -- register XDR *xdrs; -- caddr_t addr; -- register u_int len; -+xdrmem_getbytes(XDR *xdrs, caddr_t addr, u_int len) - { - - if ((xdrs->x_handy -= len) < 0) -@@ -178,10 +170,7 @@ xdrmem_putbytes(xdrs, addr, len) - } - - static bool_t --xdrmem_putbytes(xdrs, addr, len) -- register XDR *xdrs; -- caddr_t addr; -- register u_int len; -+xdrmem_putbytes(XDR *xdrs, caddr_t addr, u_int len) - { - - if ((xdrs->x_handy -= len) < 0) -@@ -192,17 +181,14 @@ xdrmem_getpos(xdrs) - } - - static u_int --xdrmem_getpos(xdrs) -- register XDR *xdrs; -+xdrmem_getpos(XDR *xdrs) - { - - return ((uintptr_t)xdrs->x_private - (uintptr_t)xdrs->x_base); - } - - static bool_t --xdrmem_setpos(xdrs, pos) -- register XDR *xdrs; -- u_int pos; -+xdrmem_setpos(XDR *xdrs, u_int pos) - { - register caddr_t newaddr = xdrs->x_base + pos; - register caddr_t lastaddr = xdrs->x_private + xdrs->x_handy; -@@ -215,9 +201,7 @@ xdrmem_inline(xdrs, len) - } - - static long * --xdrmem_inline(xdrs, len) -- register XDR *xdrs; -- int len; -+xdrmem_inline(XDR *xdrs, int len) - { - long *buf = 0; - -Index: R-4.3.3/src/extra/xdr/xdr_stdio.c -=================================================================== ---- R-4.3.3.orig/src/extra/xdr/xdr_stdio.c -+++ R-4.3.3/src/extra/xdr/xdr_stdio.c -@@ -90,14 +90,14 @@ static bool_t xdrstdio_getlong(); - #include - #include - --static bool_t xdrstdio_getlong(); --static bool_t xdrstdio_putlong(); --static bool_t xdrstdio_getbytes(); --static bool_t xdrstdio_putbytes(); --static u_int xdrstdio_getpos(); --static bool_t xdrstdio_setpos(); --static long * xdrstdio_inline(); --static void xdrstdio_destroy(); -+static bool_t xdrstdio_getlong(XDR *xdrs, int32_t *lp); -+static bool_t xdrstdio_putlong(XDR *xdrs, int32_t *lp); -+static bool_t xdrstdio_getbytes(XDR *xdrs, caddr_t addr, u_int len); -+static bool_t xdrstdio_putbytes(XDR *xdrs, caddr_t addr, u_int len); -+static u_int xdrstdio_getpos(XDR *xdrs); -+static bool_t xdrstdio_setpos(XDR *xdrs, u_int pos); -+static long * xdrstdio_inline(XDR* xdrs, int len); -+static void xdrstdio_destroy(XDR *xdrs); - - /* - * Ops vector for stdio type XDR -@@ -119,10 +119,7 @@ xdrstdio_create(xdrs, file, op) - * Operation flag is set to op. - */ - void --xdrstdio_create(xdrs, file, op) -- register XDR *xdrs; -- FILE *file; -- enum xdr_op op; -+xdrstdio_create(XDR *xdrs, FILE *file, enum xdr_op op) - { - - xdrs->x_op = op; -@@ -137,8 +134,7 @@ xdrstdio_destroy(xdrs) - * Cleans up the xdr stream handle xdrs previously set up by xdrstdio_create. - */ - static void --xdrstdio_destroy(xdrs) -- register XDR *xdrs; -+xdrstdio_destroy(XDR *xdrs) - { - if (xdrs->x_op == XDR_ENCODE) fflush((FILE *)xdrs->x_private); - /* xx should we close the file ?? */ -@@ -164,10 +160,7 @@ xdrstdio_getbytes(xdrs, addr, len) - } - - static bool_t --xdrstdio_getbytes(xdrs, addr, len) -- XDR *xdrs; -- caddr_t addr; -- u_int len; -+xdrstdio_getbytes(XDR *xdrs, caddr_t addr, u_int len) - { - - if ((len != 0) && (fread(addr, (int)len, 1, (FILE *)xdrs->x_private) != 1)) -@@ -176,10 +169,7 @@ xdrstdio_putbytes(xdrs, addr, len) - } - - static bool_t --xdrstdio_putbytes(xdrs, addr, len) -- XDR *xdrs; -- caddr_t addr; -- u_int len; -+xdrstdio_putbytes(XDR *xdrs, caddr_t addr, u_int len) - { - - if ((len != 0) && (fwrite(addr, (int)len, 1, (FILE *)xdrs->x_private) != 1)) -@@ -188,17 +178,14 @@ xdrstdio_getpos(xdrs) - } - - static u_int --xdrstdio_getpos(xdrs) -- XDR *xdrs; -+xdrstdio_getpos(XDR *xdrs) - { - - return ((u_int) ftell((FILE *)xdrs->x_private)); - } - - static bool_t --xdrstdio_setpos(xdrs, pos) -- XDR *xdrs; -- u_int pos; -+xdrstdio_setpos(XDR *xdrs, u_int pos) - { - - return ((fseek((FILE *)xdrs->x_private, (long)pos, 0) < 0) ? -@@ -206,9 +193,7 @@ xdrstdio_inline(xdrs, len) - } - - static long * --xdrstdio_inline(xdrs, len) -- XDR *xdrs; -- u_int len; -+xdrstdio_inline(XDR *xdrs, int len) - { - - /* diff --git a/patches/R-4.3.3/fix-devUp.diff b/patches/R-4.3.3/fix-devUp.diff deleted file mode 100644 index af46905e..00000000 --- a/patches/R-4.3.3/fix-devUp.diff +++ /dev/null @@ -1,24 +0,0 @@ -Index: R-4.3.3/src/library/grDevices/src/grDevices.h -=================================================================== ---- R-4.3.3.orig/src/library/grDevices/src/grDevices.h -+++ R-4.3.3/src/library/grDevices/src/grDevices.h -@@ -120,5 +120,5 @@ SEXP devUp(void); - SEXP setMask(SEXP args); - SEXP defineGroup(SEXP args); - SEXP useGroup(SEXP args); --SEXP devUp(void); -+SEXP devUp(SEXP args); - SEXP stroke(SEXP args); -Index: R-4.3.3/src/library/grDevices/src/group.c -=================================================================== ---- R-4.3.3.orig/src/library/grDevices/src/group.c -+++ R-4.3.3/src/library/grDevices/src/group.c -@@ -65,7 +65,7 @@ SEXP devUp(void) { - return R_NilValue; - } - --SEXP devUp(void) { -+SEXP devUp(SEXP args) { - pDevDesc dd = GEcurrentDevice()->dev; - double left, right, bottom, top; - SEXP ans; diff --git a/patches/R-4.3.3/fix-signrank-wilcox.diff b/patches/R-4.3.3/fix-signrank-wilcox.diff deleted file mode 100644 index 1feb5ee3..00000000 --- a/patches/R-4.3.3/fix-signrank-wilcox.diff +++ /dev/null @@ -1,32 +0,0 @@ -Index: R-4.3.3/src/library/stats/src/distn.c -=================================================================== ---- R-4.3.3.orig/src/library/stats/src/distn.c -+++ R-4.3.3/src/library/stats/src/distn.c -@@ -460,13 +460,13 @@ SEXP stats_signrank_free(void) - extern void wilcox_free(void); - */ - --SEXP stats_signrank_free(void) -+SEXP stats_signrank_free(SEXP args) - { - signrank_free(); - return R_NilValue; - } - --SEXP stats_wilcox_free(void) -+SEXP stats_wilcox_free(SEXP args) - { - wilcox_free(); - return R_NilValue; -Index: R-4.3.3/src/library/stats/src/statsR.h -=================================================================== ---- R-4.3.3.orig/src/library/stats/src/statsR.h -+++ R-4.3.3/src/library/stats/src/statsR.h -@@ -205,5 +205,5 @@ SEXP stats_signrank_free(void); - - SEXP Smirnov_sim(SEXP sr, SEXP sc, SEXP sB, SEXP twosided); - --SEXP stats_signrank_free(void); --SEXP stats_wilcox_free(void); -+SEXP stats_signrank_free(SEXP args); -+SEXP stats_wilcox_free(SEXP args); diff --git a/patches/R-4.3.3/emscripten-avoid-testing-issues.diff b/patches/R-4.4.0/emscripten-avoid-testing-issues.diff similarity index 73% rename from patches/R-4.3.3/emscripten-avoid-testing-issues.diff rename to patches/R-4.4.0/emscripten-avoid-testing-issues.diff index 477ddf2f..67f9b793 100644 --- a/patches/R-4.3.3/emscripten-avoid-testing-issues.diff +++ b/patches/R-4.4.0/emscripten-avoid-testing-issues.diff @@ -1,7 +1,7 @@ -Index: R-4.3.3/src/library/base/man/stopifnot.Rd +Index: R-4.4.0/src/library/base/man/stopifnot.Rd =================================================================== ---- R-4.3.3.orig/src/library/base/man/stopifnot.Rd -+++ R-4.3.3/src/library/base/man/stopifnot.Rd +--- R-4.4.0.orig/src/library/base/man/stopifnot.Rd ++++ R-4.4.0/src/library/base/man/stopifnot.Rd @@ -138,6 +138,7 @@ warnifnot <- stopifnot ; N <- length(bdy <- body(warni ##' warnifnot(): a "only-warning" version of stopifnot() @@ -18,10 +18,10 @@ Index: R-4.3.3/src/library/base/man/stopifnot.Rd \keyword{environment} \keyword{programming} \keyword{error} -Index: R-4.3.3/src/library/base/man/validUTF8.Rd +Index: R-4.4.0/src/library/base/man/validUTF8.Rd =================================================================== ---- R-4.3.3.orig/src/library/base/man/validUTF8.Rd -+++ R-4.3.3/src/library/base/man/validUTF8.Rd +--- R-4.4.0.orig/src/library/base/man/validUTF8.Rd ++++ R-4.4.0/src/library/base/man/validUTF8.Rd @@ -60,6 +60,7 @@ validEnc(x) # typically the last, x[10], is invalid Encoding(x) <-"UTF-8" validEnc(x) # typically the last, x[10], is invalid @@ -35,11 +35,11 @@ Index: R-4.3.3/src/library/base/man/validUTF8.Rd validEnc(G)) # typically TRUE } +} -Index: R-4.3.3/src/library/base/man/warnings.Rd +Index: R-4.4.0/src/library/base/man/warnings.Rd =================================================================== ---- R-4.3.3.orig/src/library/base/man/warnings.Rd -+++ R-4.3.3/src/library/base/man/warnings.Rd -@@ -91,7 +91,7 @@ summary(warnings()) +--- R-4.4.0.orig/src/library/base/man/warnings.Rd ++++ R-4.4.0/src/library/base/man/warnings.Rd +@@ -93,7 +93,7 @@ summary(warnings()) ## Often the most useful way to look at many warnings: summary(warnings()) @@ -48,11 +48,11 @@ Index: R-4.3.3/src/library/base/man/warnings.Rd ww <- warnings() uw <- unique(ww) sw <- summary(ww) -Index: R-4.3.3/src/library/utils/man/news.Rd +Index: R-4.4.0/src/library/utils/man/news.Rd =================================================================== ---- R-4.3.3.orig/src/library/utils/man/news.Rd -+++ R-4.3.3/src/library/utils/man/news.Rd -@@ -122,6 +122,7 @@ news(query, package = "R", lib.loc = NULL, format = NU +--- R-4.4.0.orig/src/library/utils/man/news.Rd ++++ R-4.4.0/src/library/utils/man/news.Rd +@@ -138,6 +138,7 @@ news(query, package = "R", lib.loc = NULL, format = NU } \examples{ @@ -60,15 +60,15 @@ Index: R-4.3.3/src/library/utils/man/news.Rd ## Build a db of all R news entries. db <- news() \dontshow{ -@@ -158,3 +159,4 @@ table(news(Version >= "3.6.0", db = db3)$Version) +@@ -172,3 +173,4 @@ table(news(Version >= "3.6.0", db = db3)$Version) table(news(Version >= "3.6.0", db = db3)$Version) } } +} -Index: R-4.3.3/src/library/utils/tests/Sweave-tst.R +Index: R-4.4.0/src/library/utils/tests/Sweave-tst.R =================================================================== ---- R-4.3.3.orig/src/library/utils/tests/Sweave-tst.R -+++ R-4.3.3/src/library/utils/tests/Sweave-tst.R +--- R-4.4.0.orig/src/library/utils/tests/Sweave-tst.R ++++ R-4.4.0/src/library/utils/tests/Sweave-tst.R @@ -15,7 +15,7 @@ # https://www.R-project.org/Licenses/ @@ -83,10 +83,10 @@ Index: R-4.3.3/src/library/utils/tests/Sweave-tst.R cat('Time elapsed: ', proc.time() - .proctime00,'\n') +} -Index: R-4.3.3/src/library/methods/tests/envRefClass.R +Index: R-4.4.0/src/library/methods/tests/envRefClass.R =================================================================== ---- R-4.3.3.orig/src/library/methods/tests/envRefClass.R -+++ R-4.3.3/src/library/methods/tests/envRefClass.R +--- R-4.4.0.orig/src/library/methods/tests/envRefClass.R ++++ R-4.4.0/src/library/methods/tests/envRefClass.R @@ -4,7 +4,7 @@ rp ## show() failed .. rc <- getClass("refClass") rp <- rc@prototype @@ -96,10 +96,10 @@ Index: R-4.3.3/src/library/methods/tests/envRefClass.R (ner <- new("envRefClass")) # show() failed stopifnot(all.equal(rp,rp), all.equal(ner,ner)) be <- baseenv() -Index: R-4.3.3/src/library/methods/tests/nextWithDots.R +Index: R-4.4.0/src/library/methods/tests/nextWithDots.R =================================================================== ---- R-4.3.3.orig/src/library/methods/tests/nextWithDots.R -+++ R-4.3.3/src/library/methods/tests/nextWithDots.R +--- R-4.4.0.orig/src/library/methods/tests/nextWithDots.R ++++ R-4.4.0/src/library/methods/tests/nextWithDots.R @@ -1,9 +1,10 @@ setClass("A") -setClass("B", contains = c("array", "A")) @@ -122,10 +122,10 @@ Index: R-4.3.3/src/library/methods/tests/nextWithDots.R +removeClass("C"); removeClass("BB"); removeClass("A") removeGeneric("withDots") rm(a, bb, a2) -Index: R-4.3.3/src/library/compiler/tests/basics.R +Index: R-4.4.0/src/library/compiler/tests/basics.R =================================================================== ---- R-4.3.3.orig/src/library/compiler/tests/basics.R -+++ R-4.3.3/src/library/compiler/tests/basics.R +--- R-4.4.0.orig/src/library/compiler/tests/basics.R ++++ R-4.4.0/src/library/compiler/tests/basics.R @@ -90,7 +90,7 @@ stopifnot(identical(p, pp)) h <- ls(compiler:::inlineHandlers, all.names = TRUE) p <- sub("package:", "", sapply(h, find)) @@ -135,10 +135,10 @@ Index: R-4.3.3/src/library/compiler/tests/basics.R ## Check assumption about simple .Internals -Index: R-4.3.3/src/library/grDevices/tests/saved-recordPlot.R +Index: R-4.4.0/src/library/grDevices/tests/saved-recordPlot.R =================================================================== ---- R-4.3.3.orig/src/library/grDevices/tests/saved-recordPlot.R -+++ R-4.3.3/src/library/grDevices/tests/saved-recordPlot.R +--- R-4.4.0.orig/src/library/grDevices/tests/saved-recordPlot.R ++++ R-4.4.0/src/library/grDevices/tests/saved-recordPlot.R @@ -3,6 +3,7 @@ ## Subject: [Rd] recordPlot/replayPlot not working with saveRDS/readRDS ## Date: Mon, 2 Apr 2018 12:23:06 -0500 diff --git a/patches/R-4.3.3/emscripten-configure.diff b/patches/R-4.4.0/emscripten-configure.diff similarity index 83% rename from patches/R-4.3.3/emscripten-configure.diff rename to patches/R-4.4.0/emscripten-configure.diff index f8ac4629..c91edf35 100644 --- a/patches/R-4.3.3/emscripten-configure.diff +++ b/patches/R-4.4.0/emscripten-configure.diff @@ -1,8 +1,8 @@ -Index: R-4.3.3/configure +Index: R-4.4.0/configure =================================================================== ---- R-4.3.3.orig/configure -+++ R-4.3.3/configure -@@ -14878,7 +14878,7 @@ _LT_EOF +--- R-4.4.0.orig/configure ++++ R-4.4.0/configure +@@ -15089,7 +15089,7 @@ _LT_EOF archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; @@ -11,7 +11,7 @@ Index: R-4.3.3/configure tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in -@@ -15645,7 +15645,7 @@ printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } +@@ -15861,7 +15861,7 @@ printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } link_all_deplibs=yes ;; @@ -20,7 +20,7 @@ Index: R-4.3.3/configure case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler -@@ -16702,7 +16702,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +@@ -16919,7 +16919,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) ;; # This must be glibc/ELF. @@ -29,7 +29,7 @@ Index: R-4.3.3/configure version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no -@@ -18794,7 +18794,7 @@ fi +@@ -19071,7 +19071,7 @@ fi inherit_rpath_CXX=yes ;; @@ -38,7 +38,7 @@ Index: R-4.3.3/configure case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler -@@ -20679,7 +20679,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +@@ -20962,7 +20962,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) ;; # This must be glibc/ELF. @@ -47,7 +47,7 @@ Index: R-4.3.3/configure version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no -@@ -23800,7 +23800,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +@@ -24094,7 +24094,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) ;; # This must be glibc/ELF. @@ -56,7 +56,7 @@ Index: R-4.3.3/configure version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no -@@ -42681,7 +42681,7 @@ case "${host_os}" in +@@ -43517,7 +43517,7 @@ case "${host_os}" in ## flags to all (C, C++ and Fortran) compiler flags. case "${host_os}" in @@ -65,7 +65,7 @@ Index: R-4.3.3/configure ;; *) r_save_CFLAGS=${CFLAGS} -@@ -51491,6 +51491,11 @@ fi +@@ -53146,6 +53146,11 @@ fi ## libcurl @@ -77,7 +77,7 @@ Index: R-4.3.3/configure # Extract the first word of "curl-config", so it can be a program name with args. set dummy curl-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -@@ -51677,7 +51682,9 @@ fi +@@ -53340,7 +53345,9 @@ fi else as_fn_error $? "libcurl >= 7.28.0 library and headers are required with support for https" "$LINENO" 5 fi diff --git a/patches/R-4.3.3/emscripten-disable-bcEval.diff b/patches/R-4.4.0/emscripten-disable-bcEval.diff similarity index 50% rename from patches/R-4.3.3/emscripten-disable-bcEval.diff rename to patches/R-4.4.0/emscripten-disable-bcEval.diff index 87896595..9d27c6d3 100644 --- a/patches/R-4.3.3/emscripten-disable-bcEval.diff +++ b/patches/R-4.4.0/emscripten-disable-bcEval.diff @@ -1,8 +1,8 @@ -Index: R-4.3.3/src/main/eval.c +Index: R-4.4.0/src/main/eval.c =================================================================== ---- R-4.3.3.orig/src/main/eval.c -+++ R-4.3.3/src/main/eval.c -@@ -2136,6 +2136,7 @@ static R_INLINE SEXP R_execClosure(SEXP call, SEXP new +--- R-4.4.0.orig/src/main/eval.c ++++ R-4.4.0/src/main/eval.c +@@ -2350,6 +2350,7 @@ static R_INLINE SEXP R_execClosure(SEXP call, SEXP new begincontext(&cntxt, CTXT_RETURN, call, newrho, sysparent, arglist, op); body = BODY(op); @@ -10,7 +10,7 @@ Index: R-4.3.3/src/main/eval.c if (R_CheckJIT(op)) { int old_enabled = R_jit_enabled; R_jit_enabled = 0; -@@ -2143,6 +2144,7 @@ static R_INLINE SEXP R_execClosure(SEXP call, SEXP new +@@ -2357,6 +2358,7 @@ static R_INLINE SEXP R_execClosure(SEXP call, SEXP new body = BODY(op); R_jit_enabled = old_enabled; } @@ -18,26 +18,36 @@ Index: R-4.3.3/src/main/eval.c /* Get the srcref record from the closure object. The old srcref was saved in cntxt. */ -@@ -4237,6 +4239,10 @@ static SEXP R_ConstantsRegistry = NULL; - object's constants as value. The head of the list has a nil payload +@@ -4555,6 +4557,10 @@ static SEXP R_ConstantsRegistry = NULL; instead of a weak reference, stays in the list forever, and is a GC root.*/ static SEXP R_ConstantsRegistry = NULL; -+ + +#ifdef __EMSCRIPTEN__ +#define NO_THREADED_CODE +#endif - ++ #if defined(__GNUC__) && ! defined(BC_PROFILING) && (! defined(NO_THREADED_CODE)) # define THREADED_CODE -@@ -6823,6 +6829,11 @@ static SEXP bcEval(SEXP body, SEXP rho, Rboolean useCa - codebase = pc = BCCODE(body); - constants = BCCONSTS(body); + #endif +@@ -7504,6 +7510,13 @@ static SEXP bcEval_loop(struct bcEval_locals *); + ! RSTEP(fun) && ! RDEBUG(rho) && \ + R_GlobalContext->callflag != CTXT_GENERIC) +#ifdef __EMSCRIPTEN__ -+ /* Disable bytecode at all times in emscripten */ ++/* Disable bytecode machine, significantly reduces Wasm binary size */ ++static inline SEXP bcEval(SEXP body, SEXP rho) ++{ + return eval(bytecodeExpr(body), rho); ++} ++#else + static SEXP bcEval_loop(struct bcEval_locals *); + + static SEXP bcEval(SEXP body, SEXP rho) +@@ -8723,6 +8736,7 @@ static SEXP bcEval_loop(struct bcEval_locals *ploc) + LASTOP; + } + } +#endif -+ - /* allow bytecode to be disabled for testing */ - if (R_disable_bytecode) - return eval(bytecodeExpr(body), rho); + + #ifdef THREADED_CODE + static void bcEval_init(void) { diff --git a/patches/R-4.3.3/emscripten-disable-system.diff b/patches/R-4.4.0/emscripten-disable-system.diff similarity index 68% rename from patches/R-4.3.3/emscripten-disable-system.diff rename to patches/R-4.4.0/emscripten-disable-system.diff index 991e809a..3c5d9140 100644 --- a/patches/R-4.3.3/emscripten-disable-system.diff +++ b/patches/R-4.4.0/emscripten-disable-system.diff @@ -1,10 +1,10 @@ -Index: R-4.3.3/src/library/base/R/unix/system.unix.R +Index: R-4.4.0/src/library/base/R/unix/system.unix.R =================================================================== ---- R-4.3.3.orig/src/library/base/R/unix/system.unix.R -+++ R-4.3.3/src/library/base/R/unix/system.unix.R -@@ -35,6 +35,11 @@ system <- function(command, intern = FALSE, - if(!is.logical(wait) || is.na(wait)) - stop("'wait' must be TRUE or FALSE") +--- R-4.4.0.orig/src/library/base/R/unix/system.unix.R ++++ R-4.4.0/src/library/base/R/unix/system.unix.R +@@ -37,6 +37,11 @@ system <- function(command, intern = FALSE, + if(!is.logical(receive.console.signals) || is.na(receive.console.signals)) + stop("'receive.console.signals' must be TRUE or FALSE") + # Disable system() command when running under emscripten + if (grepl("emscripten", R.version$os)) { @@ -14,10 +14,11 @@ Index: R-4.3.3/src/library/base/R/unix/system.unix.R if(ignore.stdout) command <- paste(command, ">/dev/null") if(ignore.stderr) command <- paste(command, "2>/dev/null") if(!is.null(input)) { -@@ -63,6 +68,11 @@ system2 <- function(command, args = character(), - if(!is.logical(wait) || is.na(wait)) +@@ -66,6 +71,12 @@ system2 <- function(command, args = character(), stop("'wait' must be TRUE or FALSE") - + if(!is.logical(receive.console.signals) || is.na(receive.console.signals)) + stop("'receive.console.signals' must be TRUE or FALSE") ++ + # Disable system() command when running under emscripten + if (grepl("emscripten", R.version$os)) { + return(webr_hook_system(command)) @@ -26,8 +27,8 @@ Index: R-4.3.3/src/library/base/R/unix/system.unix.R intern <- FALSE command <- paste(c(env, shQuote(command), args), collapse = " ") -@@ -107,13 +117,23 @@ system2 <- function(command, args = character(), - .Internal(system(command, intern, timeout)) +@@ -110,13 +121,23 @@ system2 <- function(command, args = character(), + .Internal(system(command, intern, timeout, receive.console.signals)) } +webr_hook_system <- function(command) { @@ -51,10 +52,10 @@ Index: R-4.3.3/src/library/base/R/unix/system.unix.R warning("'which' was not found on this platform") return(res) } -Index: R-4.3.3/src/library/utils/R/sessionInfo.R +Index: R-4.4.0/src/library/utils/R/sessionInfo.R =================================================================== ---- R-4.3.3.orig/src/library/utils/R/sessionInfo.R -+++ R-4.3.3/src/library/utils/R/sessionInfo.R +--- R-4.4.0.orig/src/library/utils/R/sessionInfo.R ++++ R-4.4.0/src/library/utils/R/sessionInfo.R @@ -23,6 +23,8 @@ ## Now try to figure out the OS we are running under if (.Platform$OS.type == "windows") { diff --git a/patches/R-4.3.3/emscripten-fix-blas-dlsym-search.diff b/patches/R-4.4.0/emscripten-fix-blas-dlsym-search.diff similarity index 70% rename from patches/R-4.3.3/emscripten-fix-blas-dlsym-search.diff rename to patches/R-4.4.0/emscripten-fix-blas-dlsym-search.diff index 205a39bc..83035c3b 100644 --- a/patches/R-4.3.3/emscripten-fix-blas-dlsym-search.diff +++ b/patches/R-4.4.0/emscripten-fix-blas-dlsym-search.diff @@ -1,8 +1,8 @@ -Index: R-4.3.3/src/main/platform.c +Index: R-4.4.0/src/main/platform.c =================================================================== ---- R-4.3.3.orig/src/main/platform.c -+++ R-4.3.3/src/main/platform.c -@@ -3636,11 +3636,16 @@ do_eSoftVersion(SEXP call, SEXP op, SEXP args, SEXP rh +--- R-4.4.0.orig/src/main/platform.c ++++ R-4.4.0/src/main/platform.c +@@ -3675,11 +3675,16 @@ do_eSoftVersion(SEXP call, SEXP op, SEXP args, SEXP rh and heuristics, and depends on implementation details of dynamic linkers. */ diff --git a/patches/R-4.3.3/emscripten-includes.diff b/patches/R-4.4.0/emscripten-includes.diff similarity index 72% rename from patches/R-4.3.3/emscripten-includes.diff rename to patches/R-4.4.0/emscripten-includes.diff index cd492829..fe09d73e 100644 --- a/patches/R-4.3.3/emscripten-includes.diff +++ b/patches/R-4.4.0/emscripten-includes.diff @@ -1,7 +1,7 @@ -Index: R-4.3.3/src/unix/sys-std.c +Index: R-4.4.0/src/unix/sys-std.c =================================================================== ---- R-4.3.3.orig/src/unix/sys-std.c -+++ R-4.3.3/src/unix/sys-std.c +--- R-4.4.0.orig/src/unix/sys-std.c ++++ R-4.4.0/src/unix/sys-std.c @@ -57,6 +57,10 @@ #ifdef HAVE_UNISTD_H diff --git a/patches/R-4.3.3/emscripten-input.diff b/patches/R-4.4.0/emscripten-input.diff similarity index 82% rename from patches/R-4.3.3/emscripten-input.diff rename to patches/R-4.4.0/emscripten-input.diff index 24e6bf87..c6b4cd9c 100644 --- a/patches/R-4.3.3/emscripten-input.diff +++ b/patches/R-4.4.0/emscripten-input.diff @@ -1,7 +1,7 @@ -Index: R-4.3.3/src/unix/sys-std.c +Index: R-4.4.0/src/unix/sys-std.c =================================================================== ---- R-4.3.3.orig/src/unix/sys-std.c -+++ R-4.3.3/src/unix/sys-std.c +--- R-4.4.0.orig/src/unix/sys-std.c ++++ R-4.4.0/src/unix/sys-std.c @@ -61,6 +61,7 @@ #ifdef __EMSCRIPTEN__ @@ -10,7 +10,7 @@ Index: R-4.3.3/src/unix/sys-std.c #endif extern SA_TYPE SaveAction; -@@ -325,8 +326,17 @@ void (* R_PolledEvents)(void) = nop; +@@ -327,8 +328,17 @@ void (* R_PolledEvents)(void) = nop; static void nop(void){} @@ -28,7 +28,7 @@ Index: R-4.3.3/src/unix/sys-std.c /* For X11 devices */ void (* Rg_PolledEvents)(void) = nop; -@@ -1043,8 +1053,12 @@ Rstd_ReadConsole(const char *prompt, unsigned char *bu +@@ -1051,8 +1061,12 @@ Rstd_ReadConsole(const char *prompt, unsigned char *bu else #endif /* HAVE_LIBREADLINE */ { @@ -41,7 +41,7 @@ Index: R-4.3.3/src/unix/sys-std.c } if(R_InputHandlers == NULL) -@@ -1102,10 +1116,25 @@ Rstd_ReadConsole(const char *prompt, unsigned char *bu +@@ -1110,10 +1124,25 @@ Rstd_ReadConsole(const char *prompt, unsigned char *bu else #endif /* HAVE_LIBREADLINE */ { @@ -67,10 +67,10 @@ Index: R-4.3.3/src/unix/sys-std.c } } } -Index: R-4.3.3/src/main/main.c +Index: R-4.4.0/src/main/main.c =================================================================== ---- R-4.3.3.orig/src/main/main.c -+++ R-4.3.3/src/main/main.c +--- R-4.4.0.orig/src/main/main.c ++++ R-4.4.0/src/main/main.c @@ -321,7 +321,7 @@ static unsigned char DLLbuf[CONSOLE_BUFFER_SIZE+1], *D } diff --git a/patches/R-4.4.0/emscripten-jumpctxt.diff b/patches/R-4.4.0/emscripten-jumpctxt.diff new file mode 100644 index 00000000..72b1e59b --- /dev/null +++ b/patches/R-4.4.0/emscripten-jumpctxt.diff @@ -0,0 +1,13 @@ +Index: R-4.4.0/src/main/errors.c +=================================================================== +--- R-4.4.0.orig/src/main/errors.c ++++ R-4.4.0/src/main/errors.c +@@ -1078,7 +1078,7 @@ static void jump_to_top_ex(Rboolean traceback, + } + } + +- R_jumpctxt(R_ToplevelContext, 0, NULL); ++ R_jumpctxt(R_ToplevelContext, 1, NULL); + } + + NORET void jump_to_toplevel(void) diff --git a/patches/R-4.3.3/emscripten-lazyload.diff b/patches/R-4.4.0/emscripten-lazyload.diff similarity index 83% rename from patches/R-4.3.3/emscripten-lazyload.diff rename to patches/R-4.4.0/emscripten-lazyload.diff index 9a47b6f8..cb84af52 100644 --- a/patches/R-4.3.3/emscripten-lazyload.diff +++ b/patches/R-4.4.0/emscripten-lazyload.diff @@ -1,7 +1,7 @@ -Index: R-4.3.3/src/library/datasets/Makefile.in +Index: R-4.4.0/src/library/datasets/Makefile.in =================================================================== ---- R-4.3.3.orig/src/library/datasets/Makefile.in -+++ R-4.3.3/src/library/datasets/Makefile.in +--- R-4.4.0.orig/src/library/datasets/Makefile.in ++++ R-4.4.0/src/library/datasets/Makefile.in @@ -26,7 +26,7 @@ all: Makefile DESCRIPTION $(INSTALL_DATA) $${f} $(top_builddir)/library/$(pkg)/data; \ done @@ -11,10 +11,10 @@ Index: R-4.3.3/src/library/datasets/Makefile.in R_DEFAULT_PACKAGES=NULL LC_ALL=C $(R_EXE) > /dev/null @$(INSTALL_DATA) $(srcdir)/data/morley.tab \ $(top_builddir)/library/$(pkg)/data -Index: R-4.3.3/Makeconf.in +Index: R-4.4.0/Makeconf.in =================================================================== ---- R-4.3.3.orig/Makeconf.in -+++ R-4.3.3/Makeconf.in +--- R-4.4.0.orig/Makeconf.in ++++ R-4.4.0/Makeconf.in @@ -164,3 +164,13 @@ Rexecmodulesdir = $(rhome)/modules$(R_ARCH) ## switching to automake. ## @@ -29,10 +29,10 @@ Index: R-4.3.3/Makeconf.in + LIB_LOC_ARG = lib.loc = \"$(R_INSTALL_LIBRARY)\" + TARGET_LIB_LOC_ARG = target.lib.loc = \"$(R_INSTALL_LIBRARY)\" +endif -Index: R-4.3.3/share/make/basepkg.mk +Index: R-4.4.0/share/make/basepkg.mk =================================================================== ---- R-4.3.3.orig/share/make/basepkg.mk -+++ R-4.3.3/share/make/basepkg.mk +--- R-4.4.0.orig/share/make/basepkg.mk ++++ R-4.4.0/share/make/basepkg.mk @@ -127,7 +127,7 @@ mklazy: ## only used if byte-compilation is disabled mklazy: @@ -42,10 +42,10 @@ Index: R-4.3.3/share/make/basepkg.mk R_DEFAULT_PACKAGES=$(DEFPKGS) LC_ALL=C $(R_EXE) > /dev/null mklazycomp: $(top_builddir)/library/$(pkg)/R/$(pkg).rdb -Index: R-4.3.3/share/make/lazycomp.mk +Index: R-4.4.0/share/make/lazycomp.mk =================================================================== ---- R-4.3.3.orig/share/make/lazycomp.mk -+++ R-4.3.3/share/make/lazycomp.mk +--- R-4.4.0.orig/share/make/lazycomp.mk ++++ R-4.4.0/share/make/lazycomp.mk @@ -7,11 +7,11 @@ $(top_builddir)/library/$(pkg)/R/$(pkg).rdb: all.R $(top_builddir)/library/$(pkg)/R/$(pkg).rdb: all.R @$(INSTALL_DATA) all.R $(top_builddir)/library/$(pkg)/R/$(pkg) @@ -60,10 +60,10 @@ Index: R-4.3.3/share/make/lazycomp.mk _R_COMPILE_PKGS_=1 R_COMPILER_SUPPRESS_ALL=1 \ R_DEFAULT_PACKAGES=$(DEFPKGS) LC_ALL=C $(R_EXE) > /dev/null; \ fi -Index: R-4.3.3/src/library/methods/Makefile.in +Index: R-4.4.0/src/library/methods/Makefile.in =================================================================== ---- R-4.3.3.orig/src/library/methods/Makefile.in -+++ R-4.3.3/src/library/methods/Makefile.in +--- R-4.4.0.orig/src/library/methods/Makefile.in ++++ R-4.4.0/src/library/methods/Makefile.in @@ -37,6 +37,9 @@ RfilesLazy: $(top_builddir)/library/$(pkg)/R/$(pkg).rd RfilesLazy: $(top_builddir)/library/$(pkg)/R/$(pkg).rdb @@ -98,10 +98,10 @@ Index: R-4.3.3/src/library/methods/Makefile.in ## not supported Rsimple: -Index: R-4.3.3/src/library/methods/R/zzz.R +Index: R-4.4.0/src/library/methods/R/zzz.R =================================================================== ---- R-4.3.3.orig/src/library/methods/R/zzz.R -+++ R-4.3.3/src/library/methods/R/zzz.R +--- R-4.4.0.orig/src/library/methods/R/zzz.R ++++ R-4.4.0/src/library/methods/R/zzz.R @@ -21,6 +21,8 @@ ## Initialize the methods package. function(libname, pkgname) @@ -109,34 +109,34 @@ Index: R-4.3.3/src/library/methods/R/zzz.R + # WEBR: Loading this later throws an error about missing `is` export + loadNamespace("tools") where <- environment(sys.function()) # the namespace - initMethodDispatch(where) - ## temporary empty reference to the package's own namespace -Index: R-4.3.3/src/library/tools/Makefile.in + coerceVars <- c("as", "as<-", "is", "new", "S3Part", "S3Part<-", "slot", + "slot<-") +Index: R-4.4.0/src/library/tools/Makefile.in =================================================================== ---- R-4.3.3.orig/src/library/tools/Makefile.in -+++ R-4.3.3/src/library/tools/Makefile.in -@@ -51,7 +51,7 @@ $(top_builddir)/library/$(pkg)/R/$(pkg).rdb: all.R $(t +--- R-4.4.0.orig/src/library/tools/Makefile.in ++++ R-4.4.0/src/library/tools/Makefile.in +@@ -52,7 +52,7 @@ $(top_builddir)/library/$(pkg)/R/$(pkg).rdb: Makefile @$(ECHO) "byte-compiling package '$(pkg)'" @$(INSTALL_DATA) all.R $(top_builddir)/library/$(pkg)/R/$(pkg) @(cat $(srcdir)/R/makeLazyLoad.R; \ - $(ECHO) "makeLazyLoading(\"$(pkg)\")") | \ + $(ECHO) "makeLazyLoading(\"$(pkg)\", $(TARGET_LIB_LOC_ARG))") | \ _R_COMPILE_PKGS_=1 R_COMPILER_SUPPRESS_ALL=1 \ + R_SYSTEM_ABI='@R_SYSTEM_ABI@' \ R_DEFAULT_PACKAGES=NULL LC_ALL=C $(R_EXE) > /dev/null - -@@ -60,7 +60,7 @@ Rlazy: mkR mkRsimple +@@ -62,7 +62,7 @@ Rlazy: mkR mkRsimple Rlazy: mkR mkRsimple @$(INSTALL_DATA) all.R $(top_builddir)/library/$(pkg)/R/$(pkg) @(cat $(srcdir)/R/makeLazyLoad.R; \ - $(ECHO) "makeLazyLoading(\"$(pkg)\")") | \ + $(ECHO) "makeLazyLoading(\"$(pkg)\", $(TARGET_LIB_LOC_ARG))") | \ + R_SYSTEM_ABI='@R_SYSTEM_ABI@' \ R_DEFAULT_PACKAGES=NULL LC_ALL=C $(R_EXE) > /dev/null - Rlazycomp: mkR mkRsimple mklazycomp -Index: R-4.3.3/src/library/tools/R/makeLazyLoad.R +Index: R-4.4.0/src/library/tools/R/makeLazyLoad.R =================================================================== ---- R-4.3.3.orig/src/library/tools/R/makeLazyLoad.R -+++ R-4.3.3/src/library/tools/R/makeLazyLoad.R +--- R-4.4.0.orig/src/library/tools/R/makeLazyLoad.R ++++ R-4.4.0/src/library/tools/R/makeLazyLoad.R @@ -20,11 +20,12 @@ code2LazyLoadDB <- function(package, lib.loc = NULL, keep.source = getOption("keep.source.pkgs"), @@ -166,7 +166,7 @@ Index: R-4.3.3/src/library/tools/R/makeLazyLoad.R makeLazyLoadDB(ns, dbbase, compress = compress, set.install.dir = set.install.dir) } -@@ -333,7 +340,7 @@ makeLazyLoading <- +@@ -331,7 +338,7 @@ makeLazyLoading <- function(package, lib.loc = NULL, compress = TRUE, keep.source = getOption("keep.source.pkgs"), keep.parse.data = getOption("keep.parse.data.pkgs"), @@ -175,7 +175,7 @@ Index: R-4.3.3/src/library/tools/R/makeLazyLoad.R { if(!is.logical(compress) && compress %notin% c(2,3)) stop(gettextf("invalid value for '%s' : %s", "compress", -@@ -350,7 +357,7 @@ makeLazyLoading <- +@@ -348,7 +355,7 @@ makeLazyLoading <- stop("this cannot be used for package 'base'") loaderFile <- file.path(R.home("share"), "R", "nspackloader.R") @@ -184,7 +184,7 @@ Index: R-4.3.3/src/library/tools/R/makeLazyLoad.R codeFile <- file.path(pkgpath, "R", package) if (!file.exists(codeFile)) { -@@ -364,7 +371,8 @@ makeLazyLoading <- +@@ -362,7 +369,8 @@ makeLazyLoading <- keep.source = keep.source, keep.parse.data = keep.parse.data, compress = compress, @@ -194,10 +194,10 @@ Index: R-4.3.3/src/library/tools/R/makeLazyLoad.R file.copy(loaderFile, codeFile, TRUE) } -Index: R-4.3.3/src/library/base/makebasedb.R +Index: R-4.4.0/src/library/base/makebasedb.R =================================================================== ---- R-4.3.3.orig/src/library/base/makebasedb.R -+++ R-4.3.3/src/library/base/makebasedb.R +--- R-4.4.0.orig/src/library/base/makebasedb.R ++++ R-4.4.0/src/library/base/makebasedb.R @@ -116,7 +116,11 @@ local({ if (length(search()[search()!="Autoloads"]) != 2) stop("start R with NO packages loaded to create the data base") @@ -211,11 +211,11 @@ Index: R-4.3.3/src/library/base/makebasedb.R if (file.info(baseFileBase)["size"] < 20000) # crude heuristic stop("may already be using lazy loading on base"); -Index: R-4.3.3/src/library/base/R/library.R +Index: R-4.4.0/src/library/base/R/library.R =================================================================== ---- R-4.3.3.orig/src/library/base/R/library.R -+++ R-4.3.3/src/library/base/R/library.R -@@ -765,7 +765,7 @@ function(package = NULL, lib.loc = NULL, quiet = FALSE +--- R-4.4.0.orig/src/library/base/R/library.R ++++ R-4.4.0/src/library/base/R/library.R +@@ -771,7 +771,7 @@ function(package = NULL, lib.loc = NULL, quiet = FALSE ## don't waste time looking for the standard packages: ## we know where they are and this can take a significant ## time with 1000+ packages installed. diff --git a/patches/R-4.3.3/emscripten-makefiles.diff b/patches/R-4.4.0/emscripten-makefiles.diff similarity index 94% rename from patches/R-4.3.3/emscripten-makefiles.diff rename to patches/R-4.4.0/emscripten-makefiles.diff index 0429f2be..12a4690c 100644 --- a/patches/R-4.3.3/emscripten-makefiles.diff +++ b/patches/R-4.4.0/emscripten-makefiles.diff @@ -1,7 +1,7 @@ -Index: R-4.3.3/Makefile.in +Index: R-4.4.0/Makefile.in =================================================================== ---- R-4.3.3.orig/Makefile.in -+++ R-4.3.3/Makefile.in +--- R-4.4.0.orig/Makefile.in ++++ R-4.4.0/Makefile.in @@ -91,6 +91,13 @@ javaconf: R javaconf: R @$(MAKE) stamp-java @@ -16,10 +16,10 @@ Index: R-4.3.3/Makefile.in install install-strip: installdirs svnonly @for d in $(SUBDIRS); do \ -Index: R-4.3.3/src/main/Makefile.in +Index: R-4.4.0/src/main/Makefile.in =================================================================== ---- R-4.3.3.orig/src/main/Makefile.in -+++ R-4.3.3/src/main/Makefile.in +--- R-4.4.0.orig/src/main/Makefile.in ++++ R-4.4.0/src/main/Makefile.in @@ -148,7 +148,57 @@ $(R_binary): $(R_bin_OBJECTS) $(R_bin_DEPENDENCIES) $(R_binary): $(R_bin_OBJECTS) $(R_bin_DEPENDENCIES) diff --git a/patches/R-4.3.3/emscripten-r-home-stderr.diff b/patches/R-4.4.0/emscripten-r-home-stderr.diff similarity index 77% rename from patches/R-4.3.3/emscripten-r-home-stderr.diff rename to patches/R-4.4.0/emscripten-r-home-stderr.diff index 29a651c1..f1637e3f 100644 --- a/patches/R-4.3.3/emscripten-r-home-stderr.diff +++ b/patches/R-4.4.0/emscripten-r-home-stderr.diff @@ -1,7 +1,7 @@ -Index: R-4.3.3/src/scripts/R.sh.in +Index: R-4.4.0/src/scripts/R.sh.in =================================================================== ---- R-4.3.3.orig/src/scripts/R.sh.in -+++ R-4.3.3/src/scripts/R.sh.in +--- R-4.4.0.orig/src/scripts/R.sh.in ++++ R-4.4.0/src/scripts/R.sh.in @@ -28,7 +28,7 @@ if test -n "${R_HOME}" && \ if test -n "${R_HOME}" && \ diff --git a/patches/R-4.3.3/emscripten-unimplmented.diff b/patches/R-4.4.0/emscripten-unimplmented.diff similarity index 82% rename from patches/R-4.3.3/emscripten-unimplmented.diff rename to patches/R-4.4.0/emscripten-unimplmented.diff index e4653d54..67bc1a89 100644 --- a/patches/R-4.3.3/emscripten-unimplmented.diff +++ b/patches/R-4.4.0/emscripten-unimplmented.diff @@ -1,7 +1,7 @@ -Index: R-4.3.3/src/unix/sys-unix.c +Index: R-4.4.0/src/unix/sys-unix.c =================================================================== ---- R-4.3.3.orig/src/unix/sys-unix.c -+++ R-4.3.3/src/unix/sys-unix.c +--- R-4.4.0.orig/src/unix/sys-unix.c ++++ R-4.4.0/src/unix/sys-unix.c @@ -60,7 +60,20 @@ #include diff --git a/patches/R-4.3.3/emscripten-xhr-download.diff b/patches/R-4.4.0/emscripten-xhr-download.diff similarity index 86% rename from patches/R-4.3.3/emscripten-xhr-download.diff rename to patches/R-4.4.0/emscripten-xhr-download.diff index 1daf218f..d439afba 100644 --- a/patches/R-4.3.3/emscripten-xhr-download.diff +++ b/patches/R-4.4.0/emscripten-xhr-download.diff @@ -1,7 +1,59 @@ -Index: R-4.3.3/src/modules/internet/Makefile.in +Index: R-4.4.0/src/modules/internet/libcurl.c =================================================================== ---- R-4.3.3.orig/src/modules/internet/Makefile.in -+++ R-4.3.3/src/modules/internet/Makefile.in +--- R-4.4.0.orig/src/modules/internet/libcurl.c ++++ R-4.4.0/src/modules/internet/libcurl.c +@@ -55,6 +55,7 @@ static int current_timeout = 0; + + static int current_timeout = 0; + ++#ifdef HAVE_LIBCURL + # if LIBCURL_VERSION_MAJOR < 7 || (LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR < 28) + + // curl/curl.h includes and headers it requires. +@@ -93,6 +94,7 @@ R_curl_multi_wait(CURLM *multi_handle, + return mc; + } + #endif ++#endif // HAVE_LIBCURL + + SEXP attribute_hidden in_do_curlVersion(SEXP call, SEXP op, SEXP args, SEXP rho) + { +@@ -322,7 +324,6 @@ rcvBody(void *buffer, size_t size, size_t nmemb, void + // needed to discard spurious ftp 'body' otherwise written to stdout + return size * nmemb; + } +-#endif + + static void handle_cleanup(void *data) + { +@@ -330,6 +331,7 @@ static void handle_cleanup(void *data) + if (hnd) + curl_easy_cleanup(hnd); + } ++#endif // HAVE_LIBCURL + + SEXP attribute_hidden + in_do_curlGetHeaders(SEXP call, SEXP op, SEXP args, SEXP rho) +@@ -522,7 +524,6 @@ int progress(void *clientp, CURL_LEN dltotal, CURL_LEN + return 0; + # endif + } +-#endif // HAVE_LIBCURL + + typedef struct { + struct curl_slist *headers; +@@ -575,6 +576,7 @@ static void download_cleanup(void *data) + hide(c->pbar->wprog); + #endif + } ++#endif // HAVE_LIBCURL + + /* download(url, destfile, quiet, mode, headers, cacheOK) */ + +Index: R-4.4.0/src/modules/internet/Makefile.in +=================================================================== +--- R-4.4.0.orig/src/modules/internet/Makefile.in ++++ R-4.4.0/src/modules/internet/Makefile.in @@ -11,7 +11,7 @@ SOURCES = Rhttpd.c Rsock.c internet.c libcurl.c sock.c include $(top_builddir)/Makeconf @@ -11,10 +63,10 @@ Index: R-4.3.3/src/modules/internet/Makefile.in HEADERS = sock.h DEPENDS = $(SOURCES:.c=.d) OBJECTS = $(SOURCES:.c=.o) -Index: R-4.3.3/src/library/utils/R/unix/download.file.R +Index: R-4.4.0/src/library/utils/R/unix/download.file.R =================================================================== ---- R-4.3.3.orig/src/library/utils/R/unix/download.file.R -+++ R-4.3.3/src/library/utils/R/unix/download.file.R +--- R-4.4.0.orig/src/library/utils/R/unix/download.file.R ++++ R-4.4.0/src/library/utils/R/unix/download.file.R @@ -25,13 +25,17 @@ download.file <- if (missing(method)) method <- getOption("download.file.method", default = "auto") @@ -54,11 +106,11 @@ Index: R-4.3.3/src/library/utils/R/unix/download.file.R "lynx" = stop("method 'lynx' is defunct", domain = NA), ## otherwise {should never happen} -Index: R-4.3.3/src/main/names.c +Index: R-4.4.0/src/main/names.c =================================================================== ---- R-4.3.3.orig/src/main/names.c -+++ R-4.3.3/src/main/names.c -@@ -1005,6 +1005,10 @@ FUNTAB R_FunTab[] = +--- R-4.4.0.orig/src/main/names.c ++++ R-4.4.0/src/main/names.c +@@ -1010,6 +1010,10 @@ FUNTAB R_FunTab[] = {"curlGetHeaders",do_curlGetHeaders,0, 11, 5, {PP_FUNCALL, PREC_FN, 0}}, {"curlDownload",do_curlDownload, 0, 11, 6, {PP_FUNCALL, PREC_FN, 0}}, {"compilerVersion",do_compilerVersion, 0, 11, 0, {PP_FUNCALL, PREC_FN, 0}}, @@ -69,10 +121,10 @@ Index: R-4.3.3/src/main/names.c {NULL, NULL, 0, 0, 0, {PP_INVALID, PREC_FN, 0}}, }; -Index: R-4.3.3/src/modules/internet/internet.c +Index: R-4.4.0/src/modules/internet/internet.c =================================================================== ---- R-4.3.3.orig/src/modules/internet/internet.c -+++ R-4.3.3/src/modules/internet/internet.c +--- R-4.4.0.orig/src/modules/internet/internet.c ++++ R-4.4.0/src/modules/internet/internet.c @@ -41,6 +41,11 @@ in_newCurlUrl(const char *description, const char * co SEXP in_do_curlDownload(SEXP call, SEXP op, SEXP args, SEXP rho); Rconnection @@ -96,10 +148,10 @@ Index: R-4.3.3/src/modules/internet/internet.c + R_setInternetRoutines(tmp); } -Index: R-4.3.3/src/modules/internet/xhr.c +Index: R-4.4.0/src/modules/internet/xhr.c =================================================================== --- /dev/null -+++ R-4.3.3/src/modules/internet/xhr.c ++++ R-4.4.0/src/modules/internet/xhr.c @@ -0,0 +1,351 @@ +/* + * R : A Computer Language for Statistical Data Analysis @@ -452,10 +504,10 @@ Index: R-4.3.3/src/modules/internet/xhr.c + return ScalarInteger(0); +} +#endif -Index: R-4.3.3/src/include/Internal.h +Index: R-4.4.0/src/include/Internal.h =================================================================== ---- R-4.3.3.orig/src/include/Internal.h -+++ R-4.3.3/src/include/Internal.h +--- R-4.4.0.orig/src/include/Internal.h ++++ R-4.4.0/src/include/Internal.h @@ -119,6 +119,9 @@ SEXP do_D2POSIXlt(SEXP, SEXP, SEXP, SEXP); SEXP do_curlDownload(SEXP, SEXP, SEXP, SEXP); SEXP do_curlGetHeaders(SEXP, SEXP, SEXP, SEXP); @@ -466,10 +518,10 @@ Index: R-4.3.3/src/include/Internal.h SEXP do_D2POSIXlt(SEXP, SEXP, SEXP, SEXP); SEXP do_date(SEXP, SEXP, SEXP, SEXP); SEXP do_debug(SEXP, SEXP, SEXP, SEXP); -Index: R-4.3.3/src/include/Rmodules/Rinternet.h +Index: R-4.4.0/src/include/Rmodules/Rinternet.h =================================================================== ---- R-4.3.3.orig/src/include/Rmodules/Rinternet.h -+++ R-4.3.3/src/include/Rmodules/Rinternet.h +--- R-4.4.0.orig/src/include/Rmodules/Rinternet.h ++++ R-4.4.0/src/include/Rmodules/Rinternet.h @@ -68,6 +68,11 @@ typedef struct { R_CurlRoutine curlGetHeaders; R_CurlRoutine curlDownload; @@ -482,10 +534,10 @@ Index: R-4.3.3/src/include/Rmodules/Rinternet.h } R_InternetRoutines; R_InternetRoutines *R_setInternetRoutines(R_InternetRoutines *routines); -Index: R-4.3.3/src/main/internet.c +Index: R-4.4.0/src/main/internet.c =================================================================== ---- R-4.3.3.orig/src/main/internet.c -+++ R-4.3.3/src/main/internet.c +--- R-4.4.0.orig/src/main/internet.c ++++ R-4.4.0/src/main/internet.c @@ -298,3 +298,28 @@ R_newCurlUrl(const char *description, const char * con return (Rconnection)0; /* -Wall in gcc, but Solaris compiler complains */ } @@ -515,11 +567,11 @@ Index: R-4.3.3/src/main/internet.c + return (Rconnection)0; +} +#endif -Index: R-4.3.3/src/main/connections.c +Index: R-4.4.0/src/main/connections.c =================================================================== ---- R-4.3.3.orig/src/main/connections.c -+++ R-4.3.3/src/main/connections.c -@@ -5399,6 +5399,10 @@ R_newCurlUrl(const char *description, const char * con +--- R-4.4.0.orig/src/main/connections.c ++++ R-4.4.0/src/main/connections.c +@@ -5501,6 +5501,10 @@ R_newCurlUrl(const char *description, const char * con // in internet module: 'type' is unused extern Rconnection R_newCurlUrl(const char *description, const char * const mode, SEXP headers, int type); @@ -530,7 +582,7 @@ Index: R-4.3.3/src/main/connections.c /* op = 0: .Internal( url(description, open, blocking, encoding, method, headers)) -@@ -5413,7 +5417,7 @@ attribute_hidden SEXP do_url(SEXP call, SEXP op, SEXP +@@ -5515,7 +5519,7 @@ attribute_hidden SEXP do_url(SEXP call, SEXP op, SEXP char *class2 = "url"; const char *url, *open; int ncon, block, raw = 0, defmeth, @@ -539,7 +591,7 @@ Index: R-4.3.3/src/main/connections.c winmeth = 0; // 0: "internal", 1: "wininet" (Windows only) cetype_t ienc = CE_NATIVE; Rconnection con = NULL; -@@ -5487,10 +5491,17 @@ attribute_hidden SEXP do_url(SEXP call, SEXP op, SEXP +@@ -5589,10 +5593,17 @@ attribute_hidden SEXP do_url(SEXP call, SEXP op, SEXP // --------- method const char *cmeth = CHAR(asChar(CAD4R(args))); meth = streql(cmeth, "libcurl"); // 1 if "libcurl", else 0 @@ -557,7 +609,7 @@ Index: R-4.3.3/src/main/connections.c if (streql(cmeth, "wininet")) { #ifdef Win32 winmeth = 1; -@@ -5554,12 +5565,19 @@ attribute_hidden SEXP do_url(SEXP call, SEXP op, SEXP +@@ -5656,12 +5667,19 @@ attribute_hidden SEXP do_url(SEXP call, SEXP op, SEXP con = newfile(url + nh, ienc, strlen(open) ? open : "r", raw); class2 = "file"; } else if (inet) { diff --git a/patches/R-4.3.3/fix-sink-release.diff b/patches/R-4.4.0/fix-sink-release.diff similarity index 64% rename from patches/R-4.3.3/fix-sink-release.diff rename to patches/R-4.4.0/fix-sink-release.diff index a4a44fba..df105b5d 100644 --- a/patches/R-4.3.3/fix-sink-release.diff +++ b/patches/R-4.4.0/fix-sink-release.diff @@ -1,8 +1,8 @@ -Index: R-4.3.3/src/main/connections.c +Index: R-4.4.0/src/main/connections.c =================================================================== ---- R-4.3.3.orig/src/main/connections.c -+++ R-4.3.3/src/main/connections.c -@@ -5262,7 +5262,7 @@ attribute_hidden SEXP do_sink(SEXP call, SEXP op, SEXP +--- R-4.4.0.orig/src/main/connections.c ++++ R-4.4.0/src/main/connections.c +@@ -5356,7 +5356,7 @@ attribute_hidden SEXP do_sink(SEXP call, SEXP op, SEXP error(_("sink stack is full")); switch_or_tee_stdout(icon, closeOnExit, tee); } else { diff --git a/patches/R-4.3.3/flang-avoid-maxloc.diff b/patches/R-4.4.0/flang-avoid-maxloc.diff similarity index 87% rename from patches/R-4.3.3/flang-avoid-maxloc.diff rename to patches/R-4.4.0/flang-avoid-maxloc.diff index 923b5dfd..5ca8b131 100644 --- a/patches/R-4.3.3/flang-avoid-maxloc.diff +++ b/patches/R-4.4.0/flang-avoid-maxloc.diff @@ -1,9 +1,9 @@ -Index: R-4.3.3/src/modules/lapack/dlapack.f +Index: R-4.4.0/src/modules/lapack/dlapack.f =================================================================== ---- R-4.3.3.orig/src/modules/lapack/dlapack.f -+++ R-4.3.3/src/modules/lapack/dlapack.f -@@ -113097,6 +113097,20 @@ - *> \ingroup doubleOTHERcomputational +--- R-4.4.0.orig/src/modules/lapack/dlapack.f ++++ R-4.4.0/src/modules/lapack/dlapack.f +@@ -113014,6 +113014,20 @@ + *> \ingroup pstf2 * * ===================================================================== + INTEGER FUNCTION MAXLOCD( N, ARR ) @@ -23,7 +23,7 @@ Index: R-4.3.3/src/modules/lapack/dlapack.f SUBROUTINE DPSTF2( UPLO, N, A, LDA, PIV, RANK, TOL, WORK, INFO ) * * -- LAPACK computational routine -- -@@ -113121,7 +113135,7 @@ +@@ -113038,7 +113052,7 @@ * .. * .. Local Scalars .. DOUBLE PRECISION AJJ, DSTOP, DTEMP @@ -32,7 +32,7 @@ Index: R-4.3.3/src/modules/lapack/dlapack.f LOGICAL UPPER * .. * .. External Functions .. -@@ -113133,7 +113147,7 @@ +@@ -113050,7 +113064,7 @@ EXTERNAL DGEMV, DSCAL, DSWAP, XERBLA * .. * .. Intrinsic Functions .. @@ -41,7 +41,7 @@ Index: R-4.3.3/src/modules/lapack/dlapack.f * .. * .. Executable Statements .. * -@@ -113214,7 +113228,7 @@ +@@ -113131,7 +113145,7 @@ 120 CONTINUE * IF( J.GT.1 ) THEN @@ -50,7 +50,7 @@ Index: R-4.3.3/src/modules/lapack/dlapack.f PVT = ITEMP + J - 1 AJJ = WORK( N+PVT ) IF( AJJ.LE.DSTOP.OR.DISNAN( AJJ ) ) THEN -@@ -113277,7 +113291,7 @@ +@@ -113194,7 +113208,7 @@ 140 CONTINUE * IF( J.GT.1 ) THEN @@ -59,7 +59,7 @@ Index: R-4.3.3/src/modules/lapack/dlapack.f PVT = ITEMP + J - 1 AJJ = WORK( N+PVT ) IF( AJJ.LE.DSTOP.OR.DISNAN( AJJ ) ) THEN -@@ -113505,7 +113519,7 @@ +@@ -113422,7 +113436,7 @@ * .. * .. Local Scalars .. DOUBLE PRECISION AJJ, DSTOP, DTEMP @@ -68,7 +68,7 @@ Index: R-4.3.3/src/modules/lapack/dlapack.f LOGICAL UPPER * .. * .. External Functions .. -@@ -113518,7 +113532,7 @@ +@@ -113435,7 +113449,7 @@ EXTERNAL DGEMV, DPSTF2, DSCAL, DSWAP, DSYRK, XERBLA * .. * .. Intrinsic Functions .. @@ -77,7 +77,7 @@ Index: R-4.3.3/src/modules/lapack/dlapack.f * .. * .. Executable Statements .. * -@@ -113620,7 +113634,7 @@ +@@ -113537,7 +113551,7 @@ 120 CONTINUE * IF( J.GT.1 ) THEN @@ -86,7 +86,7 @@ Index: R-4.3.3/src/modules/lapack/dlapack.f PVT = ITEMP + J - 1 AJJ = WORK( N+PVT ) IF( AJJ.LE.DSTOP.OR.DISNAN( AJJ ) ) THEN -@@ -113707,7 +113721,7 @@ +@@ -113624,7 +113638,7 @@ 160 CONTINUE * IF( J.GT.1 ) THEN diff --git a/patches/R-4.3.3/fontconfig-typeof.diff b/patches/R-4.4.0/fontconfig-typeof.diff similarity index 80% rename from patches/R-4.3.3/fontconfig-typeof.diff rename to patches/R-4.4.0/fontconfig-typeof.diff index 04d5fd3a..96b9ff0f 100644 --- a/patches/R-4.3.3/fontconfig-typeof.diff +++ b/patches/R-4.4.0/fontconfig-typeof.diff @@ -1,7 +1,7 @@ -Index: R-4.3.3/src/library/grDevices/src/cairo/cairoFns.c +Index: R-4.4.0/src/library/grDevices/src/cairo/cairoFns.c =================================================================== ---- R-4.3.3.orig/src/library/grDevices/src/cairo/cairoFns.c -+++ R-4.3.3/src/library/grDevices/src/cairo/cairoFns.c +--- R-4.4.0.orig/src/library/grDevices/src/cairo/cairoFns.c ++++ R-4.4.0/src/library/grDevices/src/cairo/cairoFns.c @@ -1679,10 +1679,13 @@ PangoCairo_Text(double x, double y, with freetype2/fontconfig (FT implies FC in Cairo). */ diff --git a/patches/R-4.3.3/series b/patches/R-4.4.0/series similarity index 82% rename from patches/R-4.3.3/series rename to patches/R-4.4.0/series index 3fce68ae..a43e9345 100644 --- a/patches/R-4.3.3/series +++ b/patches/R-4.4.0/series @@ -2,8 +2,6 @@ emscripten-configure.diff emscripten-includes.diff emscripten-makefiles.diff emscripten-lazyload.diff -emscripten-dotcode-fortran-fix.diff -emscripten-xdr.diff emscripten-unimplmented.diff emscripten-input.diff emscripten-disable-system.diff @@ -13,8 +11,6 @@ emscripten-disable-bcEval.diff emscripten-fix-blas-dlsym-search.diff emscripten-avoid-testing-issues.diff emscripten-r-home-stderr.diff -fix-signrank-wilcox.diff -fix-devUp.diff flang-avoid-maxloc.diff fontconfig-typeof.diff fix-sink-release.diff From a2738dfd999e5d93e48590edd85a7b21ddc1d85a Mon Sep 17 00:00:00 2001 From: George Stagg Date: Thu, 25 Apr 2024 11:36:31 +0100 Subject: [PATCH 2/8] Use R 4.4.0 --- Dockerfile | 2 +- R/R-VERSION | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 850be7c2..d49044cc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -72,7 +72,7 @@ RUN curl -L https://rig.r-pkg.org/deb/rig.gpg -o /etc/apt/trusted.gpg.d/rig.gpg # Because $HOME gets masked by GHA with the host $HOME ENV R_LIBS_USER=/opt/R/current/lib/R/site-library -RUN rig add 4.3.3 +RUN rig add 4.4.0 # Download webR and configure for LLVM flang RUN git clone https://github.com/r-wasm/webr.git /opt/webr diff --git a/R/R-VERSION b/R/R-VERSION index e91d9be2..fdc66988 100644 --- a/R/R-VERSION +++ b/R/R-VERSION @@ -1 +1 @@ -4.3.3 +4.4.0 From 266125b0296e4ada7513d36e839da5233590b3db Mon Sep 17 00:00:00 2001 From: George Stagg Date: Thu, 25 Apr 2024 11:36:41 +0100 Subject: [PATCH 3/8] Remove package subdirectory override New subdirectory for R 4.4 series, no longer require individual patch level Wasm package builds. --- packages/webr/R/install.R | 9 --------- 1 file changed, 9 deletions(-) diff --git a/packages/webr/R/install.R b/packages/webr/R/install.R index f7c41485..9353e5d7 100644 --- a/packages/webr/R/install.R +++ b/packages/webr/R/install.R @@ -29,15 +29,6 @@ install <- function(packages, repos <- gsub("/$", "", repos) contrib <- sprintf("%s/bin/emscripten/contrib/%s", repos, ver) - # Handle webR 0.3.x - R 4.3.3 on repo.r-wasm.org - # TODO: Once R 4.4.0 is released this can be removed from future webR builds - contrib <- gsub( - "repo.r-wasm.org/bin/emscripten/contrib/4.3", - "repo.r-wasm.org/bin/emscripten/contrib/4.3.3", - contrib, - fixed = TRUE - ) - if (is.null(info)) { info <- utils::available.packages(contriburl = contrib) } From f489a276cf2acf44b9e6257f82a76563ce94f7f2 Mon Sep 17 00:00:00 2001 From: George Stagg Date: Thu, 25 Apr 2024 11:38:25 +0100 Subject: [PATCH 4/8] Don't hard-code Wasm repository in package tests --- src/tests/webR/webr-worker.test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tests/webR/webr-worker.test.ts b/src/tests/webR/webr-worker.test.ts index f5c883da..5018b5eb 100644 --- a/src/tests/webR/webr-worker.test.ts +++ b/src/tests/webR/webr-worker.test.ts @@ -19,14 +19,14 @@ describe('Download and install binary webR packages', () => { // Downloading and extracting a .tgz package await webR.evalR( - 'webr::install("cli", repos="https://repo.r-wasm.org/", mount = FALSE)' + 'webr::install("cli", mount = FALSE)' ); let pkg = (await webR.evalR('"cli" %in% library(cli)')) as RLogical; expect(await pkg.toBoolean()).toEqual(true); // Downloading and mounting an Emscripten FS image await webR.evalR( - 'webr::install("lattice", repos="https://repo.r-wasm.org/", mount = TRUE)' + 'webr::install("lattice", mount = TRUE)' ); pkg = (await webR.evalR('"lattice" %in% library(lattice)')) as RLogical; expect(await pkg.toBoolean()).toEqual(true); @@ -37,7 +37,7 @@ describe('Download and install binary webR packages', () => { test('Install packages quietly', async () => { const warnSpy = jest.spyOn(console, 'warn').mockImplementation(() => null); await webR.evalR( - 'webr::install("Matrix", repos="https://repo.r-wasm.org/", mount = FALSE, quiet = TRUE)' + 'webr::install("Matrix", mount = FALSE, quiet = TRUE)' ); expect(warnSpy).not.toHaveBeenCalled(); warnSpy.mockRestore(); From 7ed7b44784ee5ece5a24e99adbaad34135ec7af5 Mon Sep 17 00:00:00 2001 From: George Stagg Date: Thu, 25 Apr 2024 15:53:54 +0100 Subject: [PATCH 5/8] Avoid incompatible grDevices/iconv tests --- .../emscripten-avoid-testing-issues.diff | 158 ++++++++++++++++++ 1 file changed, 158 insertions(+) diff --git a/patches/R-4.4.0/emscripten-avoid-testing-issues.diff b/patches/R-4.4.0/emscripten-avoid-testing-issues.diff index 67f9b793..408ad0c8 100644 --- a/patches/R-4.4.0/emscripten-avoid-testing-issues.diff +++ b/patches/R-4.4.0/emscripten-avoid-testing-issues.diff @@ -152,3 +152,161 @@ Index: R-4.4.0/src/library/grDevices/tests/saved-recordPlot.R identical(tt[[1]], tt[[2]]), identical(tt[[3]], tt[[2]])) +} +Index: R-4.4.0/src/library/grDevices/tests/encodings.R +=================================================================== +--- R-4.4.0.orig/src/library/grDevices/tests/encodings.R ++++ R-4.4.0/src/library/grDevices/tests/encodings.R +@@ -12,6 +12,7 @@ musl <- grepl("musl", R.version$os) + q("no") + } + musl <- grepl("musl", R.version$os) ++emscripten <- grepl("emscripten", R.version$os) + + Sys.unsetenv("_R_CHECK_MBCS_CONVERSION_FAILURE_") + +@@ -96,12 +97,14 @@ dev.off() + dev.off() + + ##if(!musl) { ## musl's iconv does not support "latin2", only "iso88592" ++if(!emscripten) { + ## works in default Helvetica but not in NimbusSan + pdf("PDF-latin2.pdf", width = 5, height = 5, + encoding = "ISOLatin2", compress = FALSE) + plot(1:10, 1:10, type = "n") + text(1.5, 9, eight, adj = c(0,0)) + dev.off() ++} + ##} + + +@@ -126,10 +129,12 @@ dev.off() + dev.off() + + ##if(!musl) { ++if(!emscripten) { + postscript("PS-latin2.ps", width = 5, height = 5, encoding = "ISOLatin2") + plot(1:10, 1:10, type = "n") + text(1.5, 9, eight, adj = c(0,0)) + dev.off() ++} + #} + + ## Now with --as-cran settings in recent R, only. +Index: R-4.4.0/src/library/grDevices/tests/encodings2.R +=================================================================== +--- R-4.4.0.orig/src/library/grDevices/tests/encodings2.R ++++ R-4.4.0/src/library/grDevices/tests/encodings2.R +@@ -15,11 +15,12 @@ pdfenc <- c("ISOLatin1", "ISOLatin2", "ISOLatin7", "IS + q("no") + } + +-pdfenc <- c("ISOLatin1", "ISOLatin2", "ISOLatin7", "ISOLatin9", ++# No "latin2" under Emscripten, incompatible musl iconv ++pdfenc <- c("ISOLatin1", "ISOLatin7", "ISOLatin9", + "Greek", "Cyrillic", "KOI8-R", "KOI8-U", + "WinAnsi", "CP1250", "CP1251", "CP1253", "CP1257") + +-enc <- c("latin1", "latin2", "iso-8859-13", "latin-9", ++enc <- c("latin1", "iso-8859-13", "latin-9", + "iso-8859-7", "iso-8859-5", "KOI8-R", "KOI8-U", + "CP1252", "CP1250", "CP1251", "CP1253", "CP1257") + +@@ -99,6 +100,9 @@ if(!capabilities("cairo")) q("no") + } + } + ++# Cairo is optional for webR under Emscripten ++emscripten <- grepl("emscripten", R.version$os) ++if(!emscripten) { + if(!capabilities("cairo")) q("no") + ## Now test cairo_pdf(): do not expect any messages + cairo_pdf("cairo_pdf-encodings.pdf", width = 9, height = 9, onefile = TRUE) +@@ -107,3 +111,4 @@ dev.off() + do_one(e, e) + } + dev.off() ++} +Index: R-4.4.0/src/library/grDevices/tests/urw-fonts.R +=================================================================== +--- R-4.4.0.orig/src/library/grDevices/tests/urw-fonts.R ++++ R-4.4.0/src/library/grDevices/tests/urw-fonts.R +@@ -59,7 +59,8 @@ for(i in seq_along(pdfenc)) { + try(do_one(pdfenc[i], enc[i], i >= 7)) + dev.off() + ## needs ghostscript +- try(embedFonts(f, , ff)) ++ # Disable under emscripten, no GS binary ++ #try(embedFonts(f, , ff)) + unlink(f) + } + } +@@ -90,7 +91,8 @@ for(i in seq_along(pdfenc)) { + ## and this may not work either + try(do_one(pdfenc[i], enc[i], i >= 7)) + dev.off() +- try(embedFonts(f, , ff)) ++ # Disable under emscripten, no GS binary ++ #try(embedFonts(f, , ff)) + unlink(f) + } + } +Index: R-4.4.0/src/library/grDevices/tests/zzcheck-encodings.R +=================================================================== +--- R-4.4.0.orig/src/library/grDevices/tests/zzcheck-encodings.R ++++ R-4.4.0/src/library/grDevices/tests/zzcheck-encodings.R +@@ -1,5 +1,8 @@ + ### Optonally compare encodings results with the ref directories + ++# Disable tests under emscripten, musl iconv ++emscripten <- grepl("emscripten", R.version$os) ++if(!emscripten) { + if(is.na(Sys.getenv("R_GRDEVICES_COMPARE_PS_PDF", unset = NA))) q("no") + ## mustl has a very different libiconv. + musl <- grepl("musl", R.version$os) +@@ -38,3 +41,4 @@ if(cnt) stop("Differences found") + } + + if(cnt) stop("Differences found") ++} +Index: R-4.4.0/src/library/base/man/source.Rd +=================================================================== +--- R-4.4.0.orig/src/library/base/man/source.Rd ++++ R-4.4.0/src/library/base/man/source.Rd +@@ -213,6 +213,9 @@ withAutoprint({ formals(sourceDir); body(sourceDir) }, + max.deparse.length = 20, verbose = TRUE) + %% --> tests in ../../../../tests/eval-etc.R + ++# Disable example - The `abort` is successfully captured and ignored, but the ++# error condition is still raised and caught by our custom `tryCatch()` wrapper. ++\dontrun{ + ## Continuing after (catchable) errors: + tc <- textConnection('1:3 + 2 + "3" +@@ -223,6 +226,7 @@ stopifnot(identical(r, list(value = 42, visible=TRUE)) + ## .. in spite of error: happily continuing! .. + stopifnot(identical(r, list(value = 42, visible=TRUE))) + } ++} + \keyword{file} + \keyword{programming} + \keyword{connection} +Index: R-4.4.0/src/library/grDevices/tests/encodings3.R +=================================================================== +--- R-4.4.0.orig/src/library/grDevices/tests/encodings3.R ++++ R-4.4.0/src/library/grDevices/tests/encodings3.R +@@ -50,6 +50,9 @@ if(!capabilities("cairo")) q("no") + text(0.5+seq_along(four), 4, four) + dev.off() + ++# Cairo is optional for webR under Emscripten ++emscripten <- grepl("emscripten", R.version$os) ++if(!emscripten) { + if(!capabilities("cairo")) q("no") + cairo_pdf("cairo_pdf-encodings3.pdf", width = 7, height = 7, onefile = TRUE) + plot(1:10, 1:10, type = "n") +@@ -61,4 +64,5 @@ dev.off() + text(0.5+seq_along(three), 3, three) + text(0.5+seq_along(four), 4, four) + dev.off() ++} + From 6cce0ece94270d33c054bfc2864a9b3296d329d0 Mon Sep 17 00:00:00 2001 From: George Stagg Date: Mon, 29 Apr 2024 10:00:58 +0100 Subject: [PATCH 6/8] Add de-duplicating pkg-config shim --- R/Makefile | 8 ++++++-- tools/shims/pkg-config | 24 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) create mode 100755 tools/shims/pkg-config diff --git a/R/Makefile b/R/Makefile index 374b7745..c5b077e1 100644 --- a/R/Makefile +++ b/R/Makefile @@ -72,7 +72,7 @@ STAGE1_FC ?= gfortran # Stage 1: Build a native version of R so we can compile the default packages $(BUILD)/state/R-$(R_VERSION)/r-stage1-configured: $(BUILD)/state/R-$(R_VERSION)/r-patched - mkdir -p $(R_SOURCE)/build-stage1/doc + @mkdir -p $(R_SOURCE)/build-stage1/doc # Workaround for the lack of LaTeX packages cd $(R_SOURCE)/build-stage1/doc && \ touch NEWS NEWS.pdf NEWS.rds NEWS.2.rds NEWS.3.rds @@ -156,8 +156,12 @@ SHLIB_LDFLAGS += -s WASM_BIGINT $(WASM_OPT_LDADD) # Stage 2: Reconfigure and build for wasm32-unknown-emscripten target $(BUILD)/state/R-$(R_VERSION)/r-stage2-configured: $(BUILD)/state/R-$(R_VERSION)/r-patched $(FORTRAN_WASM_LIB) - mkdir -p $(R_SOURCE)/build + @mkdir -p $(R_SOURCE)/build + @cp $(TOOLS)/shims/pkg-config $(HOST)/bin/pkg-config + @chmod +x $(HOST)/bin/pkg-config cd $(R_SOURCE)/build && \ + PKG_CONFIG="$(HOST)/bin/pkg-config" \ + EM_PKG_CONFIG="$(shell which pkg-config)" \ EM_PKG_CONFIG_PATH="$(WASM)/lib/pkgconfig" \ MAIN_LDFLAGS="$(MAIN_LDFLAGS)" \ SHLIB_LDFLAGS="$(SHLIB_LDFLAGS)" \ diff --git a/tools/shims/pkg-config b/tools/shims/pkg-config new file mode 100755 index 00000000..d6e70860 --- /dev/null +++ b/tools/shims/pkg-config @@ -0,0 +1,24 @@ +#!/bin/sh + +# Exit script with same status code as EM_PKG_CONFIG +set -e + +# pkg-config wrapper script +# Based on r-universe-org/macos-cross/R-4.3-x86_64/pkg-config-x86_64.sh +# Outputs library link flags suitable for static linking with Emscripten + +if [ -z "$EM_PKG_CONFIG" ]; then + echo "Error: Can't find pkg-config. Set the EM_PKG_CONFIG environment variable when using this wrapper." + exit 1 +fi + +# Invoke the true `pkg-config` expected by Emscripten's `emconfigure` script +PKG_CONFIG_LIBS=$("$EM_PKG_CONFIG" "$@") + +# With Emscripten, static libraries must be linked only once +# https://emscripten.org/docs/compiling/Building-Projects.html#troubleshooting +# +# Remove duplicates in `pkg-config` output, maintaining the original order, +# and working from right to left. +tac() { awk '{ buf[NR]=$0 } END { for (i=NR; i>=1; i--) print buf[i] }'; } +echo "$PKG_CONFIG_LIBS" | xargs -n1 | tac | awk '!x[$0]++' | tac | xargs From 3f0496b3ae86dbf5aab068263eb14a1e3b7a702b Mon Sep 17 00:00:00 2001 From: George Stagg Date: Mon, 29 Apr 2024 10:03:41 +0100 Subject: [PATCH 7/8] Add glib patch for Python 3.12 compatibility Co-authored-by: Jeroen Ooms --- patches/glib-2.56.4/fix-python12.diff | 42 +++++++++++++++++++++++++++ patches/glib-2.56.4/series | 1 + 2 files changed, 43 insertions(+) create mode 100644 patches/glib-2.56.4/fix-python12.diff diff --git a/patches/glib-2.56.4/fix-python12.diff b/patches/glib-2.56.4/fix-python12.diff new file mode 100644 index 00000000..ee4559b6 --- /dev/null +++ b/patches/glib-2.56.4/fix-python12.diff @@ -0,0 +1,42 @@ +diff -aurp glib-2.56.4.orig/py-compile glib-2.56.4/py-compile +--- glib-2.56.4.orig/py-compile 2024-04-28 22:15:25 ++++ glib-2.56.4/py-compile 2024-04-28 22:16:15 +@@ -116,7 +116,7 @@ $PYTHON -c " + fi + + $PYTHON -c " +-import sys, os, py_compile, imp ++import sys, os, py_compile + + files = '''$files''' + +@@ -129,15 +129,12 @@ for file in files.split(): + continue + sys.stdout.write(file) + sys.stdout.flush() +- if hasattr(imp, 'get_tag'): +- py_compile.compile(filepath, imp.cache_from_source(filepath), path) +- else: +- py_compile.compile(filepath, filepath + 'c', path) ++ py_compile.compile(filepath, filepath + 'c', path) + sys.stdout.write('\n')" || exit $? + + # this will fail for python < 1.5, but that doesn't matter ... + $PYTHON -O -c " +-import sys, os, py_compile, imp ++import sys, os, py_compile + + # pypy does not use .pyo optimization + if hasattr(sys, 'pypy_translation_info'): +@@ -153,10 +150,7 @@ for file in files.split(): + continue + sys.stdout.write(file) + sys.stdout.flush() +- if hasattr(imp, 'get_tag'): +- py_compile.compile(filepath, imp.cache_from_source(filepath, False), path) +- else: +- py_compile.compile(filepath, filepath + 'o', path) ++ py_compile.compile(filepath, filepath + 'o', path) + sys.stdout.write('\n')" 2>/dev/null || : + + # Local Variables: diff --git a/patches/glib-2.56.4/series b/patches/glib-2.56.4/series index 83f8f8dc..309e3369 100644 --- a/patches/glib-2.56.4/series +++ b/patches/glib-2.56.4/series @@ -2,3 +2,4 @@ emscripten-configure.diff emscripten-function-ptr.diff emscripten-wasm.diff emscripten-disable-pcre.diff +fix-python12.diff From ebe6dca5c10b88f5585cbf67c469f5c6e16783d5 Mon Sep 17 00:00:00 2001 From: Jeroen Ooms Date: Tue, 30 Apr 2024 11:43:39 +0200 Subject: [PATCH 8/8] Use default nodejs in docker image (#421) * Use default nodejs in docker image --- Dockerfile | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index d49044cc..a75e51fe 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,14 +26,8 @@ RUN mkdir /opt/fake_rust/ && \ # Step 2: Do the necessary setups FROM webr as scratch -# Install node 18 -RUN mkdir -p /etc/apt/keyrings && \ - curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | \ - gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \ - echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] \ - https://deb.nodesource.com/node_18.x nodistro main" | \ - tee /etc/apt/sources.list.d/nodesource.list && \ - apt-get update && \ +# Install nodejs +RUN apt-get update && \ apt-get install nodejs -y # Install Rust; these lines are based on the official Rust docker image: