)]}'
{
  "log": [
    {
      "commit": "44fc4fe66a484b91844c302f03eaa8438e065d17",
      "tree": "43b6dbb1a142311ddedb4520a136ee6c47b005d7",
      "parents": [
        "06b4d6bea1e742a8e5ea2c4433abd381db054337"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 29 13:02:42 2024 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 29 13:02:42 2024 +0000"
      },
      "message": "Pin to C99.\n\nThat\u0027s what the autoconf stuff seems to assume, and the code won\u0027t build as C23 (because it assumes that `void foo()` means \"I haven\u0027t told you how many arguments\" rather than \"no arguments\").\n\nChange-Id: I6623a6848c76656f5c1b3e6d61a5ce03ade3ea13\n"
    },
    {
      "commit": "06b4d6bea1e742a8e5ea2c4433abd381db054337",
      "tree": "9b22a3ff7fd64a84e628a618ab79861597984047",
      "parents": [
        "6cb2d295189f4687a3bbade6f897b0928f656a37"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 02 11:12:37 2023 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 02 11:12:37 2023 -0700"
      },
      "message": "GNU make doesn\u0027t need libc++.\n\nTest: readelf -aW | grep NEEDED\nChange-Id: I4f0fbdd014a8976ecfb887c5b7df850a26e591ed\n"
    },
    {
      "commit": "6cb2d295189f4687a3bbade6f897b0928f656a37",
      "tree": "5a52751fef17f7f1b1920a592a8a295b7a9ea23f",
      "parents": [
        "775750a236dd28f6edb77bb08895f186b9a9476c"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Wed Jul 20 18:29:04 2022 +0800"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Wed Jul 20 18:30:02 2022 +0800"
      },
      "message": "Turn off -Wdeprecated-non-prototype\n\nTest: presubmit\nChange-Id: Idee5fa022c6b9332ac637a163a4b1e4666b57c85\n"
    },
    {
      "commit": "775750a236dd28f6edb77bb08895f186b9a9476c",
      "tree": "4e92f381ec8745c3fc3ef0ee77af99ed06e21cb1",
      "parents": [
        "487fc2844455704b6faae3622e620ca7b62bb047"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu May 19 22:46:38 2022 +0800"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu May 19 22:47:48 2022 +0800"
      },
      "message": "Suppress string-compare warning\n\nTest: presubmit\nBug: 153764102\nChange-Id: Ib86f4d63de02944e30cc19aae94994ad20b8450f\n"
    },
    {
      "commit": "487fc2844455704b6faae3622e620ca7b62bb047",
      "tree": "3ac93aa7df3cd67309c5e383f70a0b21c83e3270",
      "parents": [
        "357e01e484cc4d59ffae623bc7a9eb211e877135"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Sep 01 23:53:02 2021 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Sep 02 01:48:52 2021 -0700"
      },
      "message": "Build make using cmake+ninja\n\nFor Windows, we need to avoid cross-compiling using the configure\nscript, because it will link with more gnulib modules than is\nsupported. gnulib\u0027s fcntl.c module breaks --output-sync (NDK bug 1492).\nInstead, mimic build_w32.bat by:\n - building the same list of C files\n - copying the same gnulib headers\n - reusing the same config.h.W32.template file\n\nFor Darwin, the host-cpu-c-abi gnulib module breaks universal builds,\nbut it\u0027s easy to disable the module by editing config.h by hand\nafterwards. (Removing that module from bootstrap.conf and rerunning\nbootstrap might also be an option, but it changes a lot of stuff.)\n\nI created CMakeLists.txt by translating Android.bp manually.\n\nBug: https://github.com/android/ndk/issues/1492\nBug: https://github.com/android/ndk/issues/1546\nChange-Id: I367109233967ec6f0a1637b3ab262a234c93bc5b\n"
    },
    {
      "commit": "357e01e484cc4d59ffae623bc7a9eb211e877135",
      "tree": "ed057fe6485ae41ef04183dffa3797918354016e",
      "parents": [
        "08c75185eb6e9173b8502cfa12cbe6ebcff9c891"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Jul 21 15:59:19 2021 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jul 23 11:58:46 2021 -0700"
      },
      "message": "Add support for compiling make against musl\n\nAdd generated headers from runing configure and make against a musl\nsysroot.\n\nmkdir -p soong/linux_musl/tmp\ncd soong/linux_musl/tmp\n../../../configure CC\u003d/tmp/musl-sysroot/bin/musl-clang\nmake -j32 -k\ncp src/config.h lib/fnmatch.h lib/glob.h ..\n\nBug: 190084016\nTest: m out/soong/host/linux-x86/bin/make with  musl\nChange-Id: Ic45275d1dd601481307a9a8dd090bdfb34b7a138\n"
    },
    {
      "commit": "08c75185eb6e9173b8502cfa12cbe6ebcff9c891",
      "tree": "74fe78e3c0cf1a201a936a092466a56065a2c2cf",
      "parents": [
        "7424963d66959fdf2868ba66eff5360b0eadf2ea"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Thu Jan 21 15:21:30 2021 -0800"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Thu Jan 21 15:22:57 2021 -0800"
      },
      "message": "Fix mac builds due to unguarded-availability error\n\nJust bump our required base version up, as developing Android already\neffectively requires 10.13, and these tools won\u0027t be distributed to\nend-user developers (like fastboot/adb/aapt/etc are).\n\ntoolchain/make/src/file.c:898:9: error: \u0027clock_gettime\u0027 is only available on macOS 10.12 or newer [-Wunguarded-availability]\n\nTest: build\nChange-Id: I5aef02e9fc6f91fd04381b8895bf656675ccac51\n"
    },
    {
      "commit": "7424963d66959fdf2868ba66eff5360b0eadf2ea",
      "tree": "3852e48ba4299520faa207990ed1fd1eb55346f6",
      "parents": [
        "89b1ab9946c5a8955abb93593d83994659ee77e4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 14 08:42:26 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 14 08:42:26 2020 -0700"
      },
      "message": "Fix old macOS build.\n\nEven the \"new\" macOS build bots (running 10.13) with my attempted\nLC_ALL\u003dC workaround are failing to build the new GNU Make.\n\n  sed: RE error: illegal byte sequence\n\nThe error is because of the \u0027ä\u0027 in \"Klaus Kämpf\", so as a workaround\nlet\u0027s just mangle that into ASCII for now.\n\nBug: http://b/153310680\nTest: suck it and see\nChange-Id: I973e0a29c10a129062dff8d902ac4322ba90f561\n"
    },
    {
      "commit": "89b1ab9946c5a8955abb93593d83994659ee77e4",
      "tree": "0e6125eab450a1e74a9c2fa73c221f78e7305bd8",
      "parents": [
        "db2ce78d2829bccc4a8da23cd97cd0b60f5e5956"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 09 08:15:36 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 09 08:15:36 2020 -0700"
      },
      "message": "make: fix build.\n\nThe .gitignore file hid the build-aux and gnulib directories that were\nneeded to successfully build locally, breaking the NDK build (but not\nthe soong build).\n\nI\u0027m not sure why presubmit didn\u0027t catch this.\n\nTested locally with `mv toolchain/make /tmp \u0026\u0026 repo sync toolchain/make`\nand then restoring files until checkbuild.py succeeded.\n\nBug: http://b/153310680\nTest: checkbuild.py --module make\nChange-Id: I9602060e61fcfb01df6a4ae2d50b27bd78592b15\n"
    },
    {
      "commit": "db2ce78d2829bccc4a8da23cd97cd0b60f5e5956",
      "tree": "b87d6ecf6eef8ae5edf62d15ec756a0ed1a41724",
      "parents": [
        "0e5088b737c763044b8d125b5c018b6e75f0c5a9",
        "0c326a66c9eb3a3b5e4ab7892578b016b0590b1f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 06 12:22:30 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 06 18:31:36 2020 -0700"
      },
      "message": "Upgrade to GNU Make 4.3.\n\nAlso ran `./bootstrap`.\n\nAlso removed -C from MAKE_CFLAGS in maintMakefile because clang doesn\u0027t\nlike that:\n\n  clang-9: error: invalid argument \u0027-C\u0027 only allowed with \u0027-E\u0027\n\nAlso copied in an updated config.h for soong\u0027s glibc build, and a\nconfig.h and glob.h for the darwin build.\n\nBug: http://b/153310680\nTest: checkbuild.py --module make\nChange-Id: I9aca8c79279488b2e56820da2ca7f8efa3ed2a06\n"
    },
    {
      "commit": "0c326a66c9eb3a3b5e4ab7892578b016b0590b1f",
      "tree": "9b31aa163417015ebfb05b870eedaf2ff2ed8b5e",
      "parents": [
        "f79bde1a6d6899641370835fb2aafcd8ec224301"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Wed Apr 01 01:13:02 2020 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Wed Apr 01 02:02:57 2020 -0400"
      },
      "message": "[SV 57674] Use the system default PATH if $PATH is not set\n\nWhen using execvp() if $PATH is not present in the environment\nit will automatically search the system default PATH string.  Emulate\nthis by passing the system default PATH to find_in_given_path() if\nwe don\u0027t find PATH in the environment.\n\n* src/job.c (child_execute_job): Use confstr(_CS_PATH) if PATH is not\nfound.\n"
    },
    {
      "commit": "f79bde1a6d6899641370835fb2aafcd8ec224301",
      "tree": "35f9a3e5a3dfc8c8363ca42ec38cbae13c1a276d",
      "parents": [
        "289108cc9bef892a46bba9b11e6989b36107415d"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Wed Apr 01 01:58:33 2020 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Wed Apr 01 02:02:57 2020 -0400"
      },
      "message": "tests: Simplify customization of %ENV\n\nRather than having an %extraENV that is added to the default %ENV\nand resetting %ENV _before_ each test, allow the test setup to\nmodify %ENV directly as needed then reset %ENV _after_ each test.\n\n* tests/test_driver.pl: Remove unused %extraENV.\n(resetENV): Don\u0027t add in %extraENV.\n(_run_command): Reset after we run the command rather than before.\n* tests/scripts/features/export: Convert %extraENV to %ENV\n* tests/scripts/features/jobserver: Ditto\n* tests/scripts/features/parallelism: Ditto\n* tests/scripts/features/targetvars: Ditto\n* tests/scripts/functions/eval: Ditto\n* tests/scripts/functions/foreach: Ditto\n* tests/scripts/functions/origin: Ditto\n* tests/scripts/misc/general4: Ditto\n* tests/scripts/options/dash-e: Ditto\n* tests/scripts/targets/POSIX: Ditto\n* tests/scripts/variables/GNUMAKEFLAGS: Ditto\n* tests/scripts/variables/SHELL: Ditto\n"
    },
    {
      "commit": "289108cc9bef892a46bba9b11e6989b36107415d",
      "tree": "42b3a994641bc191357b0cd1eb523ced86b67690",
      "parents": [
        "61c413d5ea98593b204739604966f3ada7e29118"
      ],
      "author": {
        "name": "Jens Rehsack",
        "email": "sno@netbsd.org",
        "time": "Fri Feb 21 19:29:49 2020 +0100"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Mar 31 01:07:43 2020 -0400"
      },
      "message": "* src/output.h: [WINDOWS32] [SV 57888] Use gnulib fcntl if available\n\nIf gnulib fcntl is available (for MinGW32) use it rather than our\nhomegrown version.\n\nSigned-off-by: Jens Rehsack \u003csno@netbsd.org\u003e\nCopyright-paperwork-exempt: yes\n"
    },
    {
      "commit": "61c413d5ea98593b204739604966f3ada7e29118",
      "tree": "41630e00aaf33cd29b472bf74d2cf8db8e80bee4",
      "parents": [
        "d3a53d5d16acb6db90e39a02889aea88b5241bfc"
      ],
      "author": {
        "name": "Jens Rehsack",
        "email": "sno@netbsd.org",
        "time": "Mon Feb 24 11:12:43 2020 +0100"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Mar 31 00:50:21 2020 -0400"
      },
      "message": "* src/w32/compat/dirent.c: [SV 57888] Use gnulib opendir on MinGW32\n\nSigned-off-by: Jens Rehsack \u003csno@netbsd.org\u003e\nCopyright-paperwork-exempt: yes\n"
    },
    {
      "commit": "d3a53d5d16acb6db90e39a02889aea88b5241bfc",
      "tree": "a9f8d3bd91dca1c6c7cbcc391ee512c4793486bd",
      "parents": [
        "1306023a4f0bbae1721a6f323d52c8e4e16ca287"
      ],
      "author": {
        "name": "Jens Rehsack",
        "email": "sno@netbsd.org",
        "time": "Mon Feb 24 10:52:21 2020 +0100"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Mar 31 00:48:57 2020 -0400"
      },
      "message": "* src/dir.c (local_stat): [WINDOWS32] Fix buffer-overflow warning.\n\n[SV 57888] Provide space for the path to use MAXPATHLEN plus nul.\n\nSigned-off-by: Jens Rehsack \u003csno@netbsd.org\u003e\nCopyright-paperwork-exempt: yes\n"
    },
    {
      "commit": "1306023a4f0bbae1721a6f323d52c8e4e16ca287",
      "tree": "fa77a9d55f92591302b68ed7f9ec748e74cdb595",
      "parents": [
        "80b90b7866a83a7ddec7b960cd2f9917ab2a2fc6"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Mar 30 22:01:09 2020 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Mar 31 00:33:13 2020 -0400"
      },
      "message": "[SV 57896] Change directories before checking jobserver auth\n\nWe want to process -C options as early as possible, before we might\nwrite informational messages, so that Entering/Leaving messages have\nthe correct directory.\n\n* src/main.c (main): Move code dealing with changing directories\nbefore parsing of the jobserver auth flag.\n* tests/scripts/features/jobserver: Test the order of enter/leave.\n"
    },
    {
      "commit": "80b90b7866a83a7ddec7b960cd2f9917ab2a2fc6",
      "tree": "0ad9669145270459b12fdf69ea2517b74e932fec",
      "parents": [
        "8e024a253273a1e98b005d71c8ae4f6d2651fed4"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Mar 30 14:38:47 2020 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Mar 31 00:19:20 2020 -0400"
      },
      "message": "[SV 57967] Only set APPEND mode for regular files\n\nAPPEND is a permanent mode shared by all users of a file.  If we\nset it on a tty, pipe, etc. it will stay in effect even after make\nexits, which can cause problems.\n\nPatch provided by 0xef967c36@gmail.com\n\n* src/output.c (set_append_mode): Check for a regular file.\n\nCopyright-paperwork-exempt: yes\n"
    },
    {
      "commit": "8e024a253273a1e98b005d71c8ae4f6d2651fed4",
      "tree": "84db1882beac5d5d86a442ca06d2ea484e9b3b5d",
      "parents": [
        "660a2eafe52b8fad0dbee8ccddb990015dc68b54"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Mar 30 14:07:10 2020 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Mar 31 00:17:49 2020 -0400"
      },
      "message": "Obey order of multiple print/no-print directory options\n\nPreviously if --no-print-directory was seen anywhere even once\n(environment, command line, etc.) it would always take precedence\nover any --print-directory option.  Change this so that the last\nseen option (which will be the command line, if present there) takes\nprecedence.\n\n* NEWS: Mark this change in behavior.\n* src/makeint.h (print_directory): A new variable to control printing.\n* src/output.c (output_dump): Use the new variable.\n(output_start): Ditto.\n* src/main.c: Add a new variable print_directory.  Use -1 for\nprint_directory_flag so we know of the option was seen or not.  Add a\nnew default_print_directory_flag set to -1 to keep options from being\nadded.\n(switches): Use flag_off for --no-print-directory, rather than a\nseparate inhibit_print_directory_flag.\n(main): If print_directory_flag was set by the user, use that for\nprint_directory.  If not, compute the print_directory value based on\n-s, -C, and sub-makes as before.\n* tests/scripts/variables/GNUMAKEFLAGS: -w is not added automatically\n* tests/scripts/options/print-directory: Add tests for overriding\nprint-directory options.\n"
    },
    {
      "commit": "660a2eafe52b8fad0dbee8ccddb990015dc68b54",
      "tree": "cf215f26a699fcf2f1dded1a43fc862c33347b43",
      "parents": [
        "8277806db63f3b0f25bbd09c06e4c476cb2efbcb"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Mar 29 17:50:34 2020 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Mar 29 17:50:34 2020 -0400"
      },
      "message": "* NEWS: Update 4.3 with information on .SILENT / -s\n"
    },
    {
      "commit": "8277806db63f3b0f25bbd09c06e4c476cb2efbcb",
      "tree": "15d0ccb2b20d5a09a7af83cf3d3d032dce263749",
      "parents": [
        "6ba5ea022ad642e33c1102800a52da79ff829d5f"
      ],
      "author": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Sat Feb 29 11:16:19 2020 +0200"
      },
      "committer": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Sat Feb 29 11:16:19 2020 +0200"
      },
      "message": "* NEWS: Mention the new tcc support.\n"
    },
    {
      "commit": "6ba5ea022ad642e33c1102800a52da79ff829d5f",
      "tree": "9f4dced8c0803198052337afd6e88e9fd7534d53",
      "parents": [
        "453334882668f7e21a85491965f9d369cdd762c4"
      ],
      "author": {
        "name": "Christian Jullien",
        "email": "eligis@orange.fr",
        "time": "Fri Jan 24 09:13:12 2020 +0100"
      },
      "committer": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Sat Feb 29 11:14:46 2020 +0200"
      },
      "message": "Add support for building with Tiny C for MS-Windows\n\n* src/config.h.W32.template (HAVE_DIRECT_H, HAVE_STRCASECMP)\n(HAVE_STRNCASECMP, HAVE_UMASK): Add __TINYC__ to MinGW condition.\n(BATCH_MODE_ONLY_SHELL): Make this the default for Tiny C.\n\n* build_w32.bat: Support building with Tiny C\u0027s tcc compiler.\n"
    },
    {
      "commit": "453334882668f7e21a85491965f9d369cdd762c4",
      "tree": "fe140a936ce352b5e65c80c2d2186c6d956d9d32",
      "parents": [
        "68fbad666703308648984fbac983a40b506aa9b4"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Jan 20 19:16:52 2020 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Jan 20 19:25:54 2020 -0500"
      },
      "message": "Apply spelling corrections from Fossies spellcheck\n\nSee https://fossies.org/features.html#codespell\nSpelling issues in Git commit messages or lib/* source are not applied.\n\n* README.OS2.template: Apply spelling corrections.\n* README.VMS: Ditto.\n* src/commands.c: Ditto.\n* src/config.ami.template: Ditto.\n* src/configh.dos.template: Ditto.\n* src/job.c: Ditto.\n* src/job.h: Ditto.\n* src/read.c: Ditto.\n* src/variable.c: Ditto.\n* src/vms_exit.c: Ditto.\n* src/vms_export_symbol.c: Ditto.\n* src/vms_progname.c: Ditto.\n* src/vmsfunctions.c: Ditto.\n* src/vmsjobs.c: Ditto.\n* src/w32/pathstuff.c: Ditto.\n* tests/scripts/variables/automatic: Ditto.\n* tests/test_driver.pl: Ditto.\n"
    },
    {
      "commit": "68fbad666703308648984fbac983a40b506aa9b4",
      "tree": "4bca502e496f943944c43b20e302c149b462c5d5",
      "parents": [
        "f430a65ccb5e85eb465f6a64afcbdd09f9c708ed"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Jan 20 19:24:57 2020 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Jan 20 19:25:54 2020 -0500"
      },
      "message": "Update to GNU make 4.3.90\n\n* NEWS: Add a 4.3.90 section and update Savannah bug URL\n* configure.ac (AC_INIT): Change release to 4.3.90\n"
    },
    {
      "commit": "f430a65ccb5e85eb465f6a64afcbdd09f9c708ed",
      "tree": "2b75d089ef990e146987a599f8080ce2b5778df4",
      "parents": [
        "c30da63fd22771bdf1ef34ea60cef56c88e0ffdb"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Jan 17 19:01:49 2020 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Jan 19 17:04:52 2020 -0500"
      },
      "message": "GNU Make release 4.3\n\n* NEWS: Update for the release\n* configure.ac: New release number\n* doc/make.texi: New edition number\n"
    },
    {
      "commit": "c30da63fd22771bdf1ef34ea60cef56c88e0ffdb",
      "tree": "e95e2c5bfa9adda5219c2e75e0731647912cd135",
      "parents": [
        "3fb7312e9f738c497dcab0fbcad9771f775e10f8"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Jan 19 15:25:33 2020 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Jan 19 17:04:52 2020 -0500"
      },
      "message": "* configure.ac (guile): Check for Guile 3.0 installations\n"
    },
    {
      "commit": "3fb7312e9f738c497dcab0fbcad9771f775e10f8",
      "tree": "63cc862ef124568574a1a23224c9ddc6bab42711",
      "parents": [
        "dd6adfa454ab2782fca998c377f2dabafa3eca51"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Jan 18 10:14:35 2020 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Jan 19 17:04:52 2020 -0500"
      },
      "message": "* src/job.c (sh_cmds): [SV 57625] Update builtin shell command list\n"
    },
    {
      "commit": "dd6adfa454ab2782fca998c377f2dabafa3eca51",
      "tree": "b49d8942c8b39f044627287fdc357201d1b0b64a",
      "parents": [
        "3b5e47b2e2904884a9d853848be3348b7cdd4f8a"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Thu Jan 16 15:14:53 2020 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Jan 19 17:04:52 2020 -0500"
      },
      "message": "Resolve some documentation issues\n\n* doc/make.texi (Interrupts): [SV 46193] Recommend defensive recipes\n* doc/make.texi: [SV 49262] Clarify interaction of prerequisites and\nnon-terminal match-anything rules.\n"
    },
    {
      "commit": "3b5e47b2e2904884a9d853848be3348b7cdd4f8a",
      "tree": "73b2e64406f08c325f129ca977fd69d62e6f7239",
      "parents": [
        "4e277f6fbdc9361a006f00f18a13125cc709d0f8"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Thu Jan 16 13:49:07 2020 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Jan 19 17:04:52 2020 -0500"
      },
      "message": "[SV 40657] Reinstate old behavior for suffix rules with prereqs\n\nPOSIX says that suffix rules cannot have prerequisites, but after\nmaking this change we observed a number of makefiles \"in the wild\"\nthat were relying on this behavior and failed.\n\nFor .POSIX: makefiles, obey POSIX.  Otherwise preserve the old\nbehavior.  However, generate a warning so users know this is a\nproblem.  In a future version we will change all behavior to be\nPOSIX-conforming.\n\n* NEWS: describe the change\n* src/rule.c (convert_to_pattern): If posix_pedantic don\u0027t make a\npattern rule if prereqs exist.  Otherwise show a warning.\n* tests/scripts/features/suffixrules: Add tests for the new behavior\nincluding .POSIX vs. non-.POSIX.\n"
    },
    {
      "commit": "4e277f6fbdc9361a006f00f18a13125cc709d0f8",
      "tree": "f9020edff4b8ddbd64e808f8ce0f6ae02ace25a1",
      "parents": [
        "ec946d7e21ca55cc03d056f61bd2abc068ede5c0"
      ],
      "author": {
        "name": "Dmitry Goncharov",
        "email": "dgoncharov@users.sf.net",
        "time": "Sun Jan 05 10:46:58 2020 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Jan 05 10:46:58 2020 -0500"
      },
      "message": "* tests/test_driver.pl: Enhance error messages\n"
    },
    {
      "commit": "ec946d7e21ca55cc03d056f61bd2abc068ede5c0",
      "tree": "c49177e955cc32a4643f74099ef5108eeebbdac8",
      "parents": [
        "16d06006a419b02bc1630ed748c5bef4b775f2ee"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Jan 04 13:11:21 2020 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Jan 04 13:24:39 2020 -0500"
      },
      "message": "* doc/make.texi: Change the GFDL to an Appendix\n"
    },
    {
      "commit": "16d06006a419b02bc1630ed748c5bef4b775f2ee",
      "tree": "9b095b4c3f5eaadc080f1489ac45026d7b75ddc4",
      "parents": [
        "b774aebffadd5f8374ff435b4c5d660ee899add7"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Jan 04 13:10:53 2020 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Jan 04 13:24:39 2020 -0500"
      },
      "message": "* NEWS: Clarify authorship of new features.\n"
    },
    {
      "commit": "b774aebffadd5f8374ff435b4c5d660ee899add7",
      "tree": "c57832e89a23bedd0c791646d424e0a5cb513e7e",
      "parents": [
        "06de697268492b72297b02ef69f68becc1874b54"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Jan 03 18:19:33 2020 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Jan 04 13:23:23 2020 -0500"
      },
      "message": "Enable compilation with C90 compilers\n\n* configure.ac: Try compiling Guile headers: they don\u0027t work with C90.\n* maintMakefile: Simplify config checks via target-specific variables.\n* src/makeint.h: Use ATTRIBUTE rather than defining __attribute__,\nas that causes compile issues with system headers.\n(ENUM_BITFIELD): Don\u0027t use enum bitfields in ANSI mode.\n* src/main.c: Use ATTRIBUTE instead of __attribute__.\n* src/job.h: Ditto.\n* src/file.c: Don\u0027t define variables inside for loops.\n* src/rule.c: Ditto.\n* src/dep.h (SI): Only use static inline in non-ANSI mode.\n"
    },
    {
      "commit": "06de697268492b72297b02ef69f68becc1874b54",
      "tree": "aead9af0847a5f6d393fc97303228cd862a856fd",
      "parents": [
        "fdfe0446b6d2c5321a0ff098e57357c8ee30f971"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Jan 03 15:44:13 2020 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Jan 03 15:44:13 2020 -0500"
      },
      "message": "* bootstrap: Update to the latest gnulib version\n"
    },
    {
      "commit": "fdfe0446b6d2c5321a0ff098e57357c8ee30f971",
      "tree": "e256fb9bdff020f1dd1c4e50413ad36d7bc38f3c",
      "parents": [
        "12b14f04842a58de96ca45519dd6c056897a729e"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Jan 03 01:54:47 2020 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Jan 03 02:08:59 2020 -0500"
      },
      "message": "Release GNU make 4.2.93\n\n* NEWS: Update the release and date\n* configure.ac: Update the release number\n"
    },
    {
      "commit": "12b14f04842a58de96ca45519dd6c056897a729e",
      "tree": "f5b9480772f4b4af01fdc634e120393f6bb2d21b",
      "parents": [
        "4e12a5fa458e8e6a28d6728d5d14a9dbc25f6bef"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Jan 03 00:13:02 2020 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Jan 03 02:08:59 2020 -0500"
      },
      "message": "Update copyright statements for 2020\n"
    },
    {
      "commit": "4e12a5fa458e8e6a28d6728d5d14a9dbc25f6bef",
      "tree": "4c5301da843bcec66104e548ee72d43b017335b5",
      "parents": [
        "e56243fe57710124d4e5eb6c05179065f49d1333"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Thu Jan 02 05:08:06 2020 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Jan 03 02:08:59 2020 -0500"
      },
      "message": "Support the .EXTRA_PREREQS special variable\n\nInitial implementation by Christof Warlich \u003ccwarlich@gmx.de\u003e\n\n* NEWS: Announce the new feature.\n* doc/make.texi (Other Special Variables): Document .EXTRA_PREREQS.\n* src/dep.h (struct dep): New flag to note extra prereq deps.\n* src/filedef.h (expand_extra_prereqs): Declare a function to expand\nthe value of .EXTRA_PREREQS.\n* src/file.c (expand_extra_prereqs): Given a struct variable lookup\nof .EXTRA_PREREQS, convert it into a list of deps and for each one\nmake sure it has a struct file and has the new flag set.\n(snap_file): A new function invoked by hash_map that will perform\nper-file operations: set up second expansion, intermediate, and also\n.EXTRA_PREREQS.  Manage circular dependencies by ignoring them.\n(snap_deps): Defer per-file operations until the end.  Look up the\nglobal .EXTRA_PREREQS and pass it along to snap_file for each file.\n* src/implicit.c (struct patdeps): Remember the extra prereqs flag.\n(pattern_search): Transfer extra prereqs flag settings into the\nmatched pattern rule.\n* src/rule.h (snap_implicit_rules): Rename count_implicit_rules to\nsnap_implicit_rules since we now do more than count.\n* src/rule.c (snap_implicit_rules): As we walk through all the pattern\nrules, add in any global .EXTRA_PREREQS to the dep list.  Ensure we\ntake them into account for the max number of prereqs and name length.\n* src/main.c (main): Add extra-prereqs to .FEATURES.\nCall the renamed snap_implicit_rules.\n* tests/scripts/variables/EXTRA_PREREQS: Add tests.\n"
    },
    {
      "commit": "e56243fe57710124d4e5eb6c05179065f49d1333",
      "tree": "01b249755b091f0d0f695c333ae4a53b6066a1dd",
      "parents": [
        "7449abfe1b50f15e5de040ba20aa1916de24bfe1"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Jan 03 02:07:38 2020 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Jan 03 02:08:59 2020 -0500"
      },
      "message": "* tests/scripts/features/patternrules: Use Windows-compatible quoting\n"
    },
    {
      "commit": "7449abfe1b50f15e5de040ba20aa1916de24bfe1",
      "tree": "f480fb8d9ac9836b5e4082f9116aa42a2fd80916",
      "parents": [
        "53b9770b403303ed536f82b320dc2eadeef46a16"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Jan 03 01:53:47 2020 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Jan 03 02:08:59 2020 -0500"
      },
      "message": "* tests/test_driver.pl: Compute full path to Perl interpreter\n"
    },
    {
      "commit": "53b9770b403303ed536f82b320dc2eadeef46a16",
      "tree": "ec1c0f82a13a36a67e7d078cf1f2d8dfdb724396",
      "parents": [
        "766baeef0a59529743567a1aa9a8c30fe4a02c9d"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Jan 03 01:53:18 2020 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Jan 03 02:08:59 2020 -0500"
      },
      "message": "* tests/scripts/features/exec: Don\u0027t use $ENV in the description\n"
    },
    {
      "commit": "766baeef0a59529743567a1aa9a8c30fe4a02c9d",
      "tree": "8ddd15dcbc841ec03e56b06d8c06e44203f40334",
      "parents": [
        "ee204c78f2e585cedb7f92ca68f9f036d10743eb"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Jan 03 01:52:46 2020 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Jan 03 02:08:59 2020 -0500"
      },
      "message": "* src/makeint.h: Add a declaration for memrchr()\n"
    },
    {
      "commit": "ee204c78f2e585cedb7f92ca68f9f036d10743eb",
      "tree": "5f9c51d7f63e70a226b1bcad4b1282af371f379c",
      "parents": [
        "e64674b718600bd4fad0b5ac1cc37eb89fba5ef7"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Dec 27 01:42:25 2019 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Dec 27 01:42:25 2019 -0500"
      },
      "message": "* NEWS: Remove info about disabled /proc/loadavg usage.\n"
    },
    {
      "commit": "e64674b718600bd4fad0b5ac1cc37eb89fba5ef7",
      "tree": "7bb82458a418fdf9b3af48954b76e0bbdddc29d4",
      "parents": [
        "564fb212a727a6b6773f454d192a7e02de62d2ef"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Dec 27 01:27:09 2019 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Dec 27 01:37:17 2019 -0500"
      },
      "message": "[SV 57022] Avoid posix_spawn which fails asynchronously\n\nAvoid using posix_spawn implementations that fail asynchronously when\nthe spawned program can\u0027t be invoked: this means instead of getting\nan error such as \"No such file or directory\" we get just \"Exit 127\".\n\nOriginal implementation of the configure.ac macro provided by\nMartin Dorey \u003cmartin.dorey@hds.com\u003e\n\nOriginal implementation of the regression tests provided by\nDmitry Goncharov \u003cdgoncharov@users.sf.net\u003e\n\n* configure.ac: Test whether posix_spawn fails asynchronously.  In a\ncross-compilation environment, assume that it does not.  If we detect\nthat it does, fall back to fork/exec.\n* tests/scripts/features/exec: Add regression tests for different\nshebang invocation methods.\n"
    },
    {
      "commit": "564fb212a727a6b6773f454d192a7e02de62d2ef",
      "tree": "a80bdb08f01875f1795c87ef5c0bbb939221829a",
      "parents": [
        "30cc10093b4b17d6a823fa7cc96cd937115af9fb"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Thu Dec 26 18:39:56 2019 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Thu Dec 26 18:39:56 2019 -0500"
      },
      "message": "[SV 56655] Allow pattern expansion to contain spaces\n\n* src/dep.h: Add a new flag PARSEFS_ONEWORD\n* src/read.c (parse_file_seq): If PARSEFS_ONEWORD is given, treat the\nentire incoming string as a single pattern.\n* src/implicit.c (pattern_search): Pass PARSEFS_ONEWORD when parsing\npatterns for wildcards.\n* tests/scripts/features/patternrules: Add a new test.\n"
    },
    {
      "commit": "30cc10093b4b17d6a823fa7cc96cd937115af9fb",
      "tree": "1f79722ba9f8fa91a0e8a217e2b3110c9e7a5d50",
      "parents": [
        "69c5a2128b140ab0caa973ef242b16a7a276d0b6"
      ],
      "author": {
        "name": "Ben Wijen",
        "email": "ben@wijen.net",
        "time": "Wed Oct 30 07:33:39 2019 +0100"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Wed Dec 18 09:05:40 2019 -0500"
      },
      "message": "* src/misc.c (spin): On WINDOWS32 use Sleep() instead of sleep()\n"
    },
    {
      "commit": "69c5a2128b140ab0caa973ef242b16a7a276d0b6",
      "tree": "bb41f45f9f404e7997c6bed1355dee1596083585",
      "parents": [
        "577dd1ff6df7d03ced3ca6129f6d83543da533fd"
      ],
      "author": {
        "name": "Ben Wijen",
        "email": "ben@wijen.net",
        "time": "Wed Oct 30 07:33:21 2019 +0100"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Wed Dec 18 09:05:40 2019 -0500"
      },
      "message": "* bootstrap.bat: Fix typo in batch file name\n"
    },
    {
      "commit": "577dd1ff6df7d03ced3ca6129f6d83543da533fd",
      "tree": "030a354d9cc4fb70c590c98365830f5d7b8aa1e2",
      "parents": [
        "86f2f8bcb5b4a03da8eb37e9a99c22d8fec4bfb2"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Dec 17 15:26:06 2019 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Wed Dec 18 09:05:40 2019 -0500"
      },
      "message": "* src/config.h.W32.template: [SV 57152] MinGW32 doesn\u0027t support d_type\n"
    },
    {
      "commit": "86f2f8bcb5b4a03da8eb37e9a99c22d8fec4bfb2",
      "tree": "191a44ac166f35b7c56c5b93d85fd48886c6977d",
      "parents": [
        "c72205b28b93ee546027ad5297ba1771f31256a6"
      ],
      "author": {
        "name": "Jouke Witteveen",
        "email": "j.witteveen@gmail.com",
        "time": "Sat Oct 26 12:24:15 2019 +0200"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Wed Dec 18 09:05:17 2019 -0500"
      },
      "message": "[SV 54161] Fix second expansion of $* for paths\n\nIf the stem matches a path containing a directory not just a\nfilename, make sure the second expansion of $* in the\nprerequisites matches $* in the recipe.  This requires using\n$(*F) when replacing % in the first expansion to preserve the\nsimple filename.\n\n* src/implicit.c (pattern_search): If lastslash is set prepend\nthe directory onto the stem.  Then use $(*F) when expanding %.\n* tests/scripts/features/se_implicit: Add a test case\n"
    },
    {
      "commit": "c72205b28b93ee546027ad5297ba1771f31256a6",
      "tree": "52353cc828dbb04dbda99b51bf22599ffb945e02",
      "parents": [
        "057e33d6b5bb41d8e0deed0c5ac4d5d72047e7f4"
      ],
      "author": {
        "name": "Jouke Witteveen",
        "email": "j.witteveen@gmail.com",
        "time": "Sat Oct 26 12:24:29 2019 +0200"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Dec 17 15:06:28 2019 -0500"
      },
      "message": "* src/implicit.c (pattern_search): Set lastslash correctly\n\nIf filename contained multiple slashes lastslash is wrongly set to 0.\n* configure.ac: Check for the GNU memrchr() extension function.\n* src/misc.c (memrchr): Supply memrchr() if not available.\n"
    },
    {
      "commit": "057e33d6b5bb41d8e0deed0c5ac4d5d72047e7f4",
      "tree": "962d7106099c4c7006991b3095949af153c1652b",
      "parents": [
        "e4499a1fb51d560d9a29ba75176a7cb2b2c65b03"
      ],
      "author": {
        "name": "Jouke Witteveen",
        "email": "j.witteveen@gmail.com",
        "time": "Sat Oct 26 12:24:09 2019 +0200"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Dec 17 15:06:28 2019 -0500"
      },
      "message": "* src/implicit.c (pattern-search): Remove unneeded \u0027dir\u0027 variable\n"
    },
    {
      "commit": "e4499a1fb51d560d9a29ba75176a7cb2b2c65b03",
      "tree": "c2d3741787a7e7f1fc9362777fcb219e51d3c820",
      "parents": [
        "57b043c7fb6a220b8cf0f022e4161bbe87f2b0f1"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Dec 17 13:36:26 2019 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Dec 17 15:06:28 2019 -0500"
      },
      "message": "* Makefile.am: Build lzip package instead of bzip2\n\n* README.git: Mention changed requirements.\n"
    },
    {
      "commit": "57b043c7fb6a220b8cf0f022e4161bbe87f2b0f1",
      "tree": "cc28cbee82c4ab595411cfea5e0fd2b72388fc77",
      "parents": [
        "f389aabde6ac986036f7e0c6c0d297e217dbdc85"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Dec 17 12:29:44 2019 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Dec 17 15:06:28 2019 -0500"
      },
      "message": "* src/job.c (load_too_high): Disable Linux /proc/loadavg for now\n\nThis new feature has a problem: if you provide a load which is\nlarger than the number of cores then it will always run every job.\nBefore we can enable it we need to at the least learn how to clamp\nthis value to the number of cores.  To experiment with it, set\nPROC_FD_INIT to -2 in job.c to re-enable the feature.\n"
    },
    {
      "commit": "f389aabde6ac986036f7e0c6c0d297e217dbdc85",
      "tree": "42d1340775fffa72eeba6fd111302f58dace93bb",
      "parents": [
        "acbef3f612f46411e720c52bee70014df1c2f4fd"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Dec 17 14:58:53 2019 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Dec 17 15:06:28 2019 -0500"
      },
      "message": "* tests/run_make_tests.pl (set_more_defaults): Fix typo\n"
    },
    {
      "commit": "acbef3f612f46411e720c52bee70014df1c2f4fd",
      "tree": "58734fb0ef929f134a6f8318d8c69769d49c8612",
      "parents": [
        "3822f77c1d10f4c0789a0262aab35adb00c8d22d"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Dec 16 16:18:58 2019 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Dec 16 16:18:58 2019 -0500"
      },
      "message": "* tests/run_make_tests.pl (subst_make_string): Force use of /\n\nOn Windows the path to the helper tool will contain \u0027\\\u0027: this will\nfail if recipes are run with a POSIX shell.  Convert \u0027\\\u0027 to \u0027/\u0027\non Windows.  While here, escape any spaces in the path as well.\n"
    },
    {
      "commit": "3822f77c1d10f4c0789a0262aab35adb00c8d22d",
      "tree": "2509783777ca88606d596b3c669ec67614f8e1d9",
      "parents": [
        "1cf3932a39057789ca525afb02bcfc823b238cb7"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Oct 12 16:22:01 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Dec 16 09:31:31 2019 -0500"
      },
      "message": "Rename jhelp.pl to thelp.pl and make it a generic test helper.\n\n* tests/thelp.pl: Rename from tests/jhelp.pl.\n(op): Use names instead of options for the operations.\n(op): Add new operations for sleep, mkdir, and rm.\n(op): Enhance wait to time out\n* tests/run_make_tests.pl: Add a new #HELPER# replacement\n(subst_make_string): Use fully-qualified path to thelp.pl\n* tests/scripts/features/parallelism: Update to use thelp.pl\nand the new named operations.  Use thelp.pl sleep instead of\nsystem-specific sleep commands.\n* tests/scripts/features/output-sync: Update to use thelp.pl\ninstead of complex shell scripts.\n* Makefile.am: Distribute tests/thelp.pl instead of tests/jhelp.pl\n"
    },
    {
      "commit": "1cf3932a39057789ca525afb02bcfc823b238cb7",
      "tree": "0c6e5e59769a7724614a0a2166d69a8c79848018",
      "parents": [
        "33bda4008650c48816331c04022176f48c213fb3"
      ],
      "author": {
        "name": "Paul Eggert",
        "email": "eggert@cs.ucla.edu",
        "time": "Tue Oct 08 15:28:10 2019 -0700"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Thu Oct 10 18:31:50 2019 -0400"
      },
      "message": "Port functions/shell test to Solaris 10\n\n* tests/scripts/functions/shell: Port exit-status calculation\nto Solaris 10 with Perl 5.8.4.\n"
    },
    {
      "commit": "33bda4008650c48816331c04022176f48c213fb3",
      "tree": "5eda39f77f14f700a7ae66ade435bd78967a4ba4",
      "parents": [
        "e666a6a021ec96ab0785ef2874d272d34d6c2e3c"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Oct 08 08:35:39 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Oct 08 08:35:39 2019 -0400"
      },
      "message": "Release GNU make 4.2.92\n\n* NEWS: Update the release and date\n* configure.ac: Update the release number\n"
    },
    {
      "commit": "e666a6a021ec96ab0785ef2874d272d34d6c2e3c",
      "tree": "c835ba45d25bf30cee9da7cbff1c5b00cb41acff",
      "parents": [
        "5920d6d2b352f5f2630d1ea227b2e94517c175e7"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Oct 06 15:47:47 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Oct 06 15:48:53 2019 -0400"
      },
      "message": "* doc/make.text (Reading Makefiles): Rewrite to be more clear.\n"
    },
    {
      "commit": "5920d6d2b352f5f2630d1ea227b2e94517c175e7",
      "tree": "ebbaeeacc47494e64f904efd8aaac9b36bf91249",
      "parents": [
        "2e6468c811ca89419f79692ef73445d6402720ac"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Oct 05 15:14:32 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Oct 05 17:48:19 2019 -0400"
      },
      "message": "* Makefile.am (check-regression): Use PERLFLAGS when running Perl\n\n* maintMakefile: Set PERLFLAGS to enable warnings.\n* tests/run_make_tests.pl: Clean up issues pointed out by perl -w.\n"
    },
    {
      "commit": "2e6468c811ca89419f79692ef73445d6402720ac",
      "tree": "86e2433328b854e6051ec25108f63c0a2aacf957",
      "parents": [
        "393d2a2d4a250d293945b65f017668336a75383f"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Oct 05 14:45:45 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Oct 05 17:48:19 2019 -0400"
      },
      "message": "* tests/scripts/functions/wildcard: Skip slash tests for local glob.\n"
    },
    {
      "commit": "393d2a2d4a250d293945b65f017668336a75383f",
      "tree": "b24afe89db2fadfc909f9327f71f265dd4db7029",
      "parents": [
        "bd7d03f8cd24511824cb2a6003007052555cc42f"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Oct 05 14:26:52 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Oct 05 17:47:52 2019 -0400"
      },
      "message": "tests: Convert %CONFIG_FLAGS to get_config()\n\n* tests/config-flags.pm.W32: Create a predefined Windows file.\n* Makefile.am (test_FILES): Add it to the distribution.\n* build_w32.bat: Install tests/config-flags.pm if not existing.\n* tests/run_make_tests.pl (get_config): Create new function.\n* tests/scripts/features/archives: Call get_config() rather than\nusing %CONFIG_FLAGS directly.\n* tests/scripts/features/load: Ditto.\n* tests/scripts/features/loadapi: Ditto.\n* tests/scripts/functions/wildcard: Ditto.\n"
    },
    {
      "commit": "bd7d03f8cd24511824cb2a6003007052555cc42f",
      "tree": "e8133de4760b68d3f79f0d8955617d28acc58bb4",
      "parents": [
        "a4a173928ff07f87e3ed6cc164d0b5d684f86c64"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Oct 05 11:23:31 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Oct 05 11:23:31 2019 -0400"
      },
      "message": "* src/hash.c (jhash_string): Don\u0027t read past end of string.\n\nOriginal patch from Dmitry Goncharov \u003cdgoncharov@users.sf.net\u003e.\n"
    },
    {
      "commit": "a4a173928ff07f87e3ed6cc164d0b5d684f86c64",
      "tree": "2e4517a83999f1a6650165b62f452de5b4c7d745",
      "parents": [
        "0e113897f70a96a7711ae26cd41b534adedd10e3"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Oct 05 07:43:52 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Oct 05 07:43:52 2019 -0400"
      },
      "message": "* tests/run_make_tests.pl (valid_option): Add missing File::Spec\n"
    },
    {
      "commit": "0e113897f70a96a7711ae26cd41b534adedd10e3",
      "tree": "4cb1c26d64b8a0dd56881791a730fe4c510471c3",
      "parents": [
        "b0eab8ecb92577819519e9f401d1115ffbea17c1"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Sep 23 00:34:12 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Sep 23 00:34:12 2019 -0400"
      },
      "message": "* src/function.c (func_realpath) [AIX]: Remove trailing slashes.\n"
    },
    {
      "commit": "b0eab8ecb92577819519e9f401d1115ffbea17c1",
      "tree": "394ccf1b0f52859cc91c24eb4119bf22daf0c9bb",
      "parents": [
        "f84821b249715f3e4150ee85915219b2122831f1"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Sep 22 17:35:51 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Sep 22 17:35:51 2019 -0400"
      },
      "message": "* tests/scripts/features/vpathplus: Fix output for big-endian systems.\n\nOur hashing algorithm gives different ordering on LE vs BE systems.\nPatch from Dmitry Goncharov \u003cdgoncharov@users.sf.net\u003e.\n"
    },
    {
      "commit": "f84821b249715f3e4150ee85915219b2122831f1",
      "tree": "63f899bae356ffcae7129fe2d61a329f9bbcaab3",
      "parents": [
        "99d14230598e7d35f5fc8c50b4795b2f7976e40e"
      ],
      "author": {
        "name": "Florian Weimer",
        "email": "fweimer@redhat.com",
        "time": "Tue Sep 10 13:33:34 2019 +0200"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Sep 22 17:32:29 2019 -0400"
      },
      "message": "* configure.ac (HAVE_GETTIMEOFDAY): Avoid undeclared exit function.\n\nCopyright-paperwork-exempt: yes\n"
    },
    {
      "commit": "99d14230598e7d35f5fc8c50b4795b2f7976e40e",
      "tree": "02565f3229d72ec0904b14b7f0e35608c1c29e1f",
      "parents": [
        "7fbd58cd6bcac3a911833ee5d653ed659ce6b231"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Sep 22 17:03:05 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Sep 22 17:03:05 2019 -0400"
      },
      "message": "* test/test_driver.el (_run_with_timeout): Show error message.\n"
    },
    {
      "commit": "7fbd58cd6bcac3a911833ee5d653ed659ce6b231",
      "tree": "360426ec95e1cf878b9708ac094c67c7558b6032",
      "parents": [
        "3ede0b96ac2dd99c20027c8f176f0d27e9442619"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Sep 22 17:02:57 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Sep 22 17:02:57 2019 -0400"
      },
      "message": "* job.c (child_error): Modify error message string.\n\nThis reverts commit 6264deece3bb77798240a906ceed79097adbcf48.\nFurther investigation discovers that the real issue is that\nGNU Emacs compile mode doesn\u0027t have a matching regex for GNU\nmake error messages generated when targets fail.  I submitted\na patch to GNU Emacs adding a matcher for compile mode.\n"
    },
    {
      "commit": "3ede0b96ac2dd99c20027c8f176f0d27e9442619",
      "tree": "ca70f459f77f9351bfb50fdc760f6c96c6dae0af",
      "parents": [
        "1d289b424a5795e7c385634d80e4eb1bbcdf146e"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 21 16:37:56 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 21 16:37:56 2019 -0400"
      },
      "message": "* tests: Convert from File::Spec::Functions to File::Spec.\n\nUsers report the Functions version doesn\u0027t work correctly for some\nolder versions of Perl.\n"
    },
    {
      "commit": "1d289b424a5795e7c385634d80e4eb1bbcdf146e",
      "tree": "625d88324b258b28d4bc71d6e0dde59b3613d9cf",
      "parents": [
        "96285f875bdb3936e03c854fbdb1379b0733cfa3"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 21 15:38:01 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 21 15:38:52 2019 -0400"
      },
      "message": "* tests/scripts/function/guile: Valgrind doesn\u0027t work with Guile.\n"
    },
    {
      "commit": "96285f875bdb3936e03c854fbdb1379b0733cfa3",
      "tree": "165edfe37e5a0d61466056a397acdd51492e0691",
      "parents": [
        "bd4ce86785a1b12a76d3d4638f20d1e033dad1ec"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 21 15:11:42 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 21 15:38:52 2019 -0400"
      },
      "message": "* src/job.c (child_execute_job): Allocate space for argv NULL.\n"
    },
    {
      "commit": "bd4ce86785a1b12a76d3d4638f20d1e033dad1ec",
      "tree": "3023b82cb60d4bccfbfda39c543e326a9dbfc492",
      "parents": [
        "e1c072aa7ec68b85240a8eee8fea889831450b08"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 21 15:11:21 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 21 15:38:48 2019 -0400"
      },
      "message": "[SV 56918] Compute job slots properly on failing command\n\nEnsure we properly reduce job_slots_used if a command fails because\nit doesn\u0027t exist/can\u0027t be started.\n\n* src/job.h (struct child): Add a field jobslot to be set when using\na job slot.\n* src/job.c (start_waiting_job): Remember if we are using a job slot.\n(reap_children): Reduce number of job slots used by jobslot.\n"
    },
    {
      "commit": "e1c072aa7ec68b85240a8eee8fea889831450b08",
      "tree": "b4ae934fb440464b25172cf029915d6a067fd8c3",
      "parents": [
        "af0074547dd9e2d6e1821c0b77c57f41aef55e8c"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 21 14:01:46 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 21 15:13:32 2019 -0400"
      },
      "message": "* src/arscan.c (ar_scan): Restrict length for sscanf of ar_mode.\n"
    },
    {
      "commit": "af0074547dd9e2d6e1821c0b77c57f41aef55e8c",
      "tree": "23f4d88ba6a2b9b52e4343dbc8179aca74905504",
      "parents": [
        "4a7a8278e8459ca29cb5f528f4d8c6d49e743a88"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 21 14:01:19 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 21 15:13:32 2019 -0400"
      },
      "message": "* tests/scripts/functions/shell: Detect correct SHELLSTATUS code.\n"
    },
    {
      "commit": "4a7a8278e8459ca29cb5f528f4d8c6d49e743a88",
      "tree": "4048f6a23e469a3b1241ac92a316e3c185541f69",
      "parents": [
        "00fa3ca3a51169584fed5160907c7aef1aa6ca07"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 21 12:39:51 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 21 15:13:24 2019 -0400"
      },
      "message": "* tests/run_make_test.pl: Fix support for valgrind.\n\nChange the variable holding the make command to be a list that can\nhold extra commands and options, not just a string.\n"
    },
    {
      "commit": "00fa3ca3a51169584fed5160907c7aef1aa6ca07",
      "tree": "f0dfb778780d984ceea6db4b0f00ff99143605e5",
      "parents": [
        "00e590fdefe59744cfa03c780d73a6a01ab450a3"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 21 12:39:07 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 21 12:39:07 2019 -0400"
      },
      "message": "* tests/run_make_tests.pl (find_prog): Fix syntax error.\n"
    },
    {
      "commit": "00e590fdefe59744cfa03c780d73a6a01ab450a3",
      "tree": "26e96fed4c908dde8fa1acb30a4410a0583b705a",
      "parents": [
        "4c64a5f986d9574ae864cd5e2852be6cf2cd5fa0"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Sep 16 08:24:51 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Sep 16 08:25:34 2019 -0400"
      },
      "message": "* NEWS: Update date and clarify -l change.\n"
    },
    {
      "commit": "4c64a5f986d9574ae864cd5e2852be6cf2cd5fa0",
      "tree": "f33983a870cc61b4be0a115a9a4b618685cec15a",
      "parents": [
        "414af96a5010353643d2e8691d86dc3416ffbd75"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Sep 15 16:39:22 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Sep 16 08:25:33 2019 -0400"
      },
      "message": "* tests/run_make_tests.pl: Create $scriptsuffix for Windows/VMS.\n\n* tests/scripts/features/targetvars: Add a suffix to scripts.\n* tests/scripts/misc/general4: Ditto.\n"
    },
    {
      "commit": "414af96a5010353643d2e8691d86dc3416ffbd75",
      "tree": "645ff3248b37bb7e5f5828bd38cd4feb30c90287",
      "parents": [
        "1b976397e542e310d5932d6d847e7f24ee441f6d"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Sep 15 15:30:34 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Sep 16 08:25:33 2019 -0400"
      },
      "message": "Refresh the test suite framework implementation.\n\nGo through both run_make_tests.pl and test_driver.pl and slightly\nmodernize the Perl and clean up indentation etc.  Fix a number of\nwarnings in the test scripts detected by running with -w.\n\n* tests/test_driver.pl: Move make error string detection out of the\nbase test driver.\n(run_all_tests): Ensure that we always look for tests in the cwd.\n* tests/run_make_tests.pl: Use File::Spec for path manipulations.\nCorrectly use setlocale() when detecting error strings.\nGet configuration from the config-flags.pm file not config.status.\n* tests/scripts/features/archives: Use new $cwddir variable.\n* tests/scripts/features/reinvoke: Add missing semicolon.\n* tests/scripts/features/vpath2: Avoid non-existent variable.\n* tests/scripts/functions/foreach: Escape variables.\n* tests/scripts/misc/bs-nl: Remove non-existing \\v escape sequence.\n* tests/scripts/misc/general4: Use handy create_file().\n* tests/scripts/options/dash-C: Use Cwd/$cwddir.\n* tests/scripts/options/dash-I: Use subst_make_string() and #PWD#.\n* tests/scripts/options/symlinks: Use File::Spec.\n* tests/scripts/targets/DEFAULT: Use create_file and run_make_test.\n* tests/scripts/variables/CURDIR: Use run_make_test.\n* tests/scripts/variables/automatic: Remove extraneous \"\\\".\n* tests/scripts/vms/library: Remove extra \"my\" and extraneous \"\\\".\n"
    },
    {
      "commit": "1b976397e542e310d5932d6d847e7f24ee441f6d",
      "tree": "277bf396f36d4a32f61684fa149294f73aa08305",
      "parents": [
        "9bc5491712711a299eb88ddd9ea1eb03bcc19bdf"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Sep 15 15:29:12 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Sep 16 08:25:33 2019 -0400"
      },
      "message": "* tests/config-flags.pm.in: Add USE_SYSTEM_GLOB.\n\n* tests/config_flags_pm.com [VMS]: Ditto.\n"
    },
    {
      "commit": "9bc5491712711a299eb88ddd9ea1eb03bcc19bdf",
      "tree": "ae13e8e6a45e3d66a9b37878309b8f4a9d975f1f",
      "parents": [
        "57b13c80200f896ab919c5e3fb2c3b6bb43a1c3c"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Sep 15 15:26:23 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Sep 16 08:25:33 2019 -0400"
      },
      "message": "* README.git: [SV 56895] Provide more info about \"maintainer mode\".\n\n* src/read.c (get_next_mword) [HAVE_DOS_PATHS]: Don\u0027t fall through to\nparsing variable references if we find a drivespec in a word!\n"
    },
    {
      "commit": "57b13c80200f896ab919c5e3fb2c3b6bb43a1c3c",
      "tree": "714cde805294ae42f96aeed21ef4d84bd0acbb0f",
      "parents": [
        "02a4c2913a47c988e958b965e53197feff281f38"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 14 15:58:57 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Sep 16 08:25:33 2019 -0400"
      },
      "message": "* tests/test_driver.pl: Remember error for \"running\" a directory.\n\n* tests/scripts/features/errors: Check errors \"running\" a directory.\n"
    },
    {
      "commit": "02a4c2913a47c988e958b965e53197feff281f38",
      "tree": "db6e1af045188b01e8f81b97fa18adfcc61a64bd",
      "parents": [
        "8acb89c8c4c7a65dcd29719778cb759468738a6a"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 14 15:41:58 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Sep 16 08:25:33 2019 -0400"
      },
      "message": "* src/job.c (child_execute_job): Use errno from find_in_given_path().\n\n* tests/test_driver.pl: Determine non-executable error message.\n* tests/scripts/features/errors: Use the local non-executable error.\n"
    },
    {
      "commit": "8acb89c8c4c7a65dcd29719778cb759468738a6a",
      "tree": "c17c1b62de5899a55778a12353937242f6edaa8a",
      "parents": [
        "271e572ba2f16f8d5b1d45c768bdec060073c279"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Sep 13 19:56:20 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Sep 16 08:25:33 2019 -0400"
      },
      "message": "* src/job.c (child_execute_job): Use newer gnulib findprog version.\n"
    },
    {
      "commit": "271e572ba2f16f8d5b1d45c768bdec060073c279",
      "tree": "5b347597f39b781fd949202c9f90afefc9195e89",
      "parents": [
        "bde990bfeaa8797723e11cad216a9b074fa804fa"
      ],
      "author": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Tue Sep 10 19:09:39 2019 +0300"
      },
      "committer": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Tue Sep 10 19:09:39 2019 +0300"
      },
      "message": "Revert \"[SV 56449] (Windows) Use slow path if \u0027%\u0027 appears in the command\"\n\nThis reverts commit 38e96eadea6e2cd42a0f414959bac327de9f468a.\nPer discussion on Savannah, the modified behavior matches\nthe way % is handled in batch files, but not in cmd command\nlines.  And since Make mostly tries to emulate the command\nline, the new behavior is unexpected and backward-incompatible.\n"
    },
    {
      "commit": "bde990bfeaa8797723e11cad216a9b074fa804fa",
      "tree": "f311ba982969eb3ee6ea4370b7e7791d5e10f076",
      "parents": [
        "60e54608bdfa29c57ac4d934f413a8cf100c38d2"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Sep 08 15:41:20 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Sep 09 18:38:31 2019 -0400"
      },
      "message": "Rework the creation of build.sh so it\u0027s not a template.\n\n* build.sh: Rename from build.template.  Get the list of objects\nfrom the Makefile.  Move configure-replaced variables ...\n* build.cfg.in: to this new .in file.\n* configure.ac: Remove special handling of build.sh.in and add\nbuild.cfg as a generated file.\n* Makefile.am (EXTRA_DIST): Remove build.sh.in and add build.sh\nand build.cfg.in for build.sh.in.\n* maintMakefile: Remove handling for build.template.  Treat\nbuild.sh as a source file, not a generated file.\n* .gitignore: Ignore generated build.cfg file.\n"
    },
    {
      "commit": "60e54608bdfa29c57ac4d934f413a8cf100c38d2",
      "tree": "4ba96332d2c0a02b0fdb151c15e538888f12e6c8",
      "parents": [
        "60905a8afb012aa38ac6d56cee24754cc678947c"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Sep 08 15:17:06 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Sep 08 15:17:06 2019 -0400"
      },
      "message": "* gl/modules/make-glob: Move local glob configure.ac to here\n\n* configure.ac: from here.\n"
    },
    {
      "commit": "60905a8afb012aa38ac6d56cee24754cc678947c",
      "tree": "7ffd8f9802f624bc3ded7e5ab409e8a149de4bd1",
      "parents": [
        "ebe1d371040d4962c0c4add280f70878b3255118"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Sep 06 22:24:46 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Sep 08 15:12:40 2019 -0400"
      },
      "message": "[SV 56834] Support local PATH search with posix_spawnp\n\nWhen using exec we install the child\u0027s environment before invoking\nexeclp(), so commands are found on the child\u0027s PATH.  posix_spawnp\nsearches on the parent\u0027s PATH, which we don\u0027t want.\n\nImport gnulib\u0027s findprog-in module and use it to search the child\u0027s\nPATH, then use posix_spawn() to run it.\n\nAlso, posix_spawn() does not fall back to trying sh on ENOEXEC, as\nexeclp() does, so implement that as well.\n\n* bootstrap.conf: Add the findprog-in gnulib module\n* src/job.c: Include findprog.h if we\u0027re using posix_spawn.\n(start_job_command): Remove the handling of child-\u003ecmd_name,\n(child_execute_job): and add it here.  Look up the command to be\nrun in the child\u0027s path and invoke it if found.  If it fails with\nENOEXEC then retry it as an argument to the default shell.\n* tests/scripts/misc/general4: Test makefile PATH assignments.\n* tests/scripts/features/targetvars: Ditto, for target variables.\n"
    },
    {
      "commit": "ebe1d371040d4962c0c4add280f70878b3255118",
      "tree": "d8e46704186be9d96c480b88408591788c2a0db1",
      "parents": [
        "c0cb9c8b3d0b163f845a867138379b0ef586a0c8"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 07 20:08:43 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 07 20:12:44 2019 -0400"
      },
      "message": "* doc/make.texi (Recipe Execution): Correct example to use $(\u003c[DF])\n"
    },
    {
      "commit": "c0cb9c8b3d0b163f845a867138379b0ef586a0c8",
      "tree": "dffb12625d65c889527ff102337315edd6e3ebd2",
      "parents": [
        "34ee9adaed8e5dc094456a901386aee24ee114f3"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 07 16:59:46 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 07 20:12:44 2019 -0400"
      },
      "message": "* configure.ac: Check whether struct dirent has a d_type field\n\n* src/dir.c (dir_contents_file_exists_p): Use the autoconf macro\nHAVE_STRUCT_DIRENT_D_TYPE rather than relying on the GNU libc-\nspecific _DIRENT_HAVE_D_TYPE.\n* lib/glob.c: Set HAVE_D_TYPE if HAVE_STRUCT_DIRENT_D_TYPE.\n"
    },
    {
      "commit": "34ee9adaed8e5dc094456a901386aee24ee114f3",
      "tree": "b1e7671bd140ee1bcac52ebed08d66ffd4cf68c3",
      "parents": [
        "64f5375fe008eff8fde4e2bc639e1d786035fd96"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 07 18:27:50 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 07 20:12:44 2019 -0400"
      },
      "message": "* src/config.h.W32.template [W32]: Add support for dirent.d_type\n\n* src/w32/include/dirent.h: Add DT_* values for dirent.d_type\n(struct dirent): Add d_type\n* src/w32/compat/durent.c (readdir): Set dirent.d_type based on\nWindows file attributes.\n"
    },
    {
      "commit": "64f5375fe008eff8fde4e2bc639e1d786035fd96",
      "tree": "f9aad73d467c53453d38ed666cf1058b039e0589",
      "parents": [
        "da81e0815fd5385dfbf827fb5a88d7316609278b"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 07 14:52:38 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 07 20:12:44 2019 -0400"
      },
      "message": "* src/makeint.h: Add typedef for mode_t if !HAVE_UMASK\n"
    },
    {
      "commit": "da81e0815fd5385dfbf827fb5a88d7316609278b",
      "tree": "89b41c61dac844c6a4dd55d3a1154084a9471cef",
      "parents": [
        "9be3c0e2b28c700d63444ff3c28e463113591d20"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 07 12:12:41 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 07 20:12:44 2019 -0400"
      },
      "message": "* build.template: Rewrite to allow gnulib support.\n"
    },
    {
      "commit": "9be3c0e2b28c700d63444ff3c28e463113591d20",
      "tree": "e2d32f1638b6916412bfe51c42b2be71551b0731",
      "parents": [
        "9da708772cd9b48121c7e5ac539ff36f086f1438"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Sep 06 21:18:48 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 07 18:27:26 2019 -0400"
      },
      "message": "* doc/make.texi: Clarify that the jobserver pipe is \"blocking\"\n"
    },
    {
      "commit": "9da708772cd9b48121c7e5ac539ff36f086f1438",
      "tree": "6726d5634b8e151bd26ee6769ac7f061f52cb38e",
      "parents": [
        "09676240506f6d7f76d5beb6d80734a89168b0be"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Sep 06 20:56:19 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 07 18:27:26 2019 -0400"
      },
      "message": "Align child_execute_job among different ports\n\nCreate a struct childbase which is the basics of struct child needed\nto invoke child_execute_job(), and can be cast back and forth to a\nstruct child.  Ensure all implementations of child_execute_job() take\nthe same arguments.\n\n* src/job.h (CHILDBASE): Create a macro to hold the base parts.\n(struct childbase): A structure containing CHILDBASE.\n(struct child): Use CHILDBASE as the initial part of child.\n[VMS]: Remove declaration of VMS version of child_execute_job.\n* src/job.c (start_job_command): Use new child_execute_job() call.\n(child_execute_job) [__EMX__]: Implement new calling signature.\n(child_execute_job): Implement new calling signature.\n* src/main.c (main) [__EMX__]: Use new child_execute_job() call.\n* src/function.c (func_shell_base): Use new child_execute_job() call.\n* src/vmsjobs.c (vmsHandleChildTerm): Accept struct childbase.\n* src/vmsjobs.c (child_execute_job): Implement new calling signature.\nModify the return value to be pid_t, not a boolean, and return the\nPID rather than setting it in the child.  This is OK because our only\ncaller immediately reset PID to -1 anyway if we return 0.\n"
    },
    {
      "commit": "09676240506f6d7f76d5beb6d80734a89168b0be",
      "tree": "19eda0f213f4e0eb07ffbe21648bf31e35fc8e8b",
      "parents": [
        "ba950a796a460da92258c26c67244d17818eca1e"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Sep 03 16:28:36 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 07 18:27:26 2019 -0400"
      },
      "message": "* doc/make.tex (Substitution Refs): Clarify patsubst relationship.\n"
    },
    {
      "commit": "ba950a796a460da92258c26c67244d17818eca1e",
      "tree": "f3f744f045ae5b6a8ae83b6e5d2ca6de3292b113",
      "parents": [
        "005a251689d90d4cd311151e5da7015719b918b9"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Sep 03 16:18:49 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 07 18:27:26 2019 -0400"
      },
      "message": "* src/job.c (start_job_command) [VMS]: Correct VMS comment.\n"
    },
    {
      "commit": "005a251689d90d4cd311151e5da7015719b918b9",
      "tree": "1d53fc19ee524aa81a50c0ece0607f8954a1306c",
      "parents": [
        "76b6e668a60d4c1eff5e231198f52e6d5f948be1"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Sep 03 16:17:50 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 07 18:27:26 2019 -0400"
      },
      "message": "Show useful errors when posix_spawn() doesn\u0027t do so\n\nThe posix_spawn() function may not detect that the command to run is\ninvalid when it\u0027s invoked.  Instead, it will run then exit with\nerror code 127.  If that happens do our best to present the user\nwith a useful error message.\n\n* src/job.h (struct child): Add cmd_name to hold the command we ran.\n* src/job.c (start_job_command): On success, remember the cmd_name.\n(reap_children): On exit 127, stat cmd_name and show a useful error.\n(free_child): Free cmd_name.\n"
    },
    {
      "commit": "76b6e668a60d4c1eff5e231198f52e6d5f948be1",
      "tree": "3c5479765f6d56ec7e3688fa0c28185d04f5dca6",
      "parents": [
        "5ff6ae6177ffcc426aae5c5386d13017d2f58ca6"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Sep 03 12:24:54 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 07 18:27:26 2019 -0400"
      },
      "message": "* README.git: Describe GCC and GNU make requirements\n\n* maintMakefile: Put custom C flags into a separate variable\nso they can be overridden more easily on the command line.\n"
    },
    {
      "commit": "5ff6ae6177ffcc426aae5c5386d13017d2f58ca6",
      "tree": "ade8d9c181ff36fb39ffe6b4984d805c59e8119d",
      "parents": [
        "7c202b50fa76f2fa9809be15848ab4cbeb229af8"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Sep 03 00:26:05 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 07 18:27:26 2019 -0400"
      },
      "message": "* tests/scripts/features/archives: Fix expected long ar name output.\n"
    },
    {
      "commit": "7c202b50fa76f2fa9809be15848ab4cbeb229af8",
      "tree": "940ec8cbe7841ea3e3cf49b5101b25a27f29cce9",
      "parents": [
        "f0182df865da59fe500dc2df110833d161ca3976"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Sep 03 00:09:51 2019 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Sep 07 18:27:26 2019 -0400"
      },
      "message": "* tetss/run_make_test.pl: Avoid \u0027sh -c\u0027 for Windows portability.\n"
    }
  ],
  "next": "f0182df865da59fe500dc2df110833d161ca3976"
}
