{"thread":{"id":"61515","subject":"chainlint test failing on Linux sparc64","startedAt":"2024-05-20T07:56:26Z","lastAt":"2024-05-20T16:07:15Z","messageCount":11,"participants":["John Paul Adrian Glaubitz","Eric Sunshine","Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"495065","messageId":"8baa12f8d044265f1ddeabd64209e7ac0d3700ae.camel@physik.fu-berlin.de","threadId":"61515","inReplyTo":null,"subject":"chainlint test failing on Linux sparc64","fromName":"John Paul Adrian Glaubitz","fromEmail":"glaubitz@physik.fu-berlin.de","sentAt":"2024-05-20T07:56:17Z","receivedAt":"2024-05-20T07:56:26Z","isPatch":false,"sender":{"key":"glaubitz@physik.fu-berlin.de","avatar":"https://avatars.githubusercontent.com/u/1647645?v=4"},"body":"Hello,\n\nthe chainlint test is failing on sparc64 (see below) and I'm wondering if anyone\ncan tell me how to run tests manually. I suspect there might be an unaligned access\nwhich causes a crash on sparc64 only.\n\nThanks,\nAdrian\n\n===================================================================================\n\n    SUBDIR git-gui\n    SUBDIR gitk-git\n    SUBDIR templates\nmake -C t/ all\nmake[1]: Entering directory '/home/glaubitz/git/t'\nrm -f -r 'test-results'\n--- chainlinttmp/expect\t2024-05-19 12:26:50.051507198 +0000\n+++ chainlinttmp/actual\t2024-05-19 12:26:50.051507198 +0000\n@@ -1,955 +0,0 @@\n-# chainlint: chainlinttmp/tests\n-# chainlint: arithmetic-expansion\n-(\n-\tfoo &&\n-\tbar=$((42 + 1)) &&\n-\tbaz\n-) &&\n-(\n-\tbar=$((42 + 1)) ?!AMP?!\n-\tbaz\n-)\n-# chainlint: bash-array\n-(\n-\tfoo &&\n-\tbar=(gumbo stumbo wumbo) &&\n-\tbaz\n-) &&\n-(\n-\tfoo &&\n-\tbar=${#bar[@]} &&\n-\tbaz\n-)\n-# chainlint: blank-line\n-(\n-\n-\tnothing &&\n-\n-\tsomething\n-\n-\n-)\n-# chainlint: blank-line-before-esac\n-test_done () {\n-\tcase \"$test_failure\" in\n-\t0)\n-\t\ttest_at_end_hook_\n-\n-\t\texit 0 ;;\n-\n-\t*)\n-\t\tif test $test_external_has_tap -eq 0\n-\t\tthen\n-\t\t\tsay_color error \"# failed $test_failure among $msg\"\n-\t\t\tsay \"1..$test_count\"\n-\t\tfi\n-\n-\t\texit 1 ;;\n-\n-\tesac\n-}\n-# chainlint: block\n-(\n-\tfoo &&\n-\t{\n-\t\techo a ?!AMP?!\n-\t\techo b\n-\t} &&\n-\tbar &&\n-\t{\n-\t\techo c\n-\t} ?!AMP?!\n-\tbaz\n-) &&\n-\n-{\n-\techo a; ?!AMP?! echo b\n-} &&\n-{ echo a; ?!AMP?! echo b; } &&\n-\n-{\n-\techo \"${var}9\" &&\n-\techo \"done\"\n-} &&\n-finis\n-# chainlint: block-comment\n-(\n-\t{\n-\t\t# show a\n-\t\techo a &&\n-\t\t# show b\n-\t\techo b\n-\t}\n-)\n-# chainlint: broken-chain\n-(\n-\tfoo &&\n-\tbar ?!AMP?!\n-\tbaz &&\n-\twop\n-)\n-# chainlint: case\n-(\n-\tcase \"$x\" in\n-\tx) foo ;;\n-\t*) bar ;;\n-\tesac &&\n-\tfoobar\n-) &&\n-(\n-\tcase \"$x\" in\n-\tx) foo ;;\n-\t*) bar ;;\n-\tesac ?!AMP?!\n-\tfoobar\n-) &&\n-(\n-\tcase \"$x\" in 1) true;; esac &&\n-\tcase \"$y\" in 2) false;; esac ?!AMP?!\n-\tfoobar\n-)\n-# chainlint: case-comment\n-(\n-\tcase \"$x\" in\n-\t# found foo\n-\tx) foo ;;\n-\t# found other\n-\t*)\n-\t\t# treat it as bar\n-\t\tbar\n-\t\t;;\n-\tesac\n-)\n-# chainlint: chain-break-background\n-JGIT_DAEMON_PID= &&\n-git init --bare empty.git &&\n->empty.git/git-daemon-export-ok &&\n-mkfifo jgit_daemon_output &&\n-{\n-\tjgit daemon --port=\"$JGIT_DAEMON_PORT\" . >jgit_daemon_output &\n-\tJGIT_DAEMON_PID=$!\n-} &&\n-test_expect_code 2 git ls-remote --exit-code git://localhost:$JGIT_DAEMON_PORT/empty.git\n-# chainlint: chain-break-continue\n-git ls-tree --name-only -r refs/notes/many_notes |\n-while read path\n-do\n-\ttest \"$path\" = \"foobar/non-note.txt\" && continue\n-\ttest \"$path\" = \"deadbeef\" && continue\n-\ttest \"$path\" = \"de/adbeef\" && continue\n-\n-\tif test $(expr length \"$path\") -ne $hexsz\n-\tthen\n-\t\treturn 1\n-\tfi\n-done\n-# chainlint: chain-break-false\n-if condition not satisified\n-then\n-\techo it did not work...\n-\techo failed!\n-\tfalse\n-else\n-\techo it went okay ?!AMP?!\n-\tcongratulate user\n-fi\n-# chainlint: chain-break-return-exit\n-case \"$(git ls-files)\" in\n-one) echo pass one ;;\n-*) echo bad one; return 1 ;;\n-esac &&\n-(\n-\tcase \"$(git ls-files)\" in\n-\ttwo) echo pass two ;;\n-\t*) echo bad two; exit 1 ;;\n-\tesac\n-) &&\n-case \"$(git ls-files)\" in\n-dir/two\"$LF\"one) echo pass both ;;\n-*) echo bad; return 1 ;;\n-esac &&\n-\n-for i in 1 2 3 4 ; do\n-\tgit checkout main -b $i || return $?\n-\ttest_commit $i $i $i tag$i || return $?\n-done\n-# chainlint: chain-break-status\n-OUT=$( ((large_git; echo $? 1>&3) | :) 3>&1 ) &&\n-test_match_signal 13 \"$OUT\" &&\n-\n-{ test-tool sigchain >actual; ret=$?; } &&\n-{\n-\ttest_match_signal 15 \"$ret\" ||\n-\ttest \"$ret\" = 3\n-} &&\n-test_cmp expect actual\n-# chainlint: chained-block\n-echo nobody home && {\n-\ttest the doohicky ?!AMP?!\n-\tright now\n-} &&\n-\n-GIT_EXTERNAL_DIFF=echo git diff | {\n-\tread path oldfile oldhex oldmode newfile newhex newmode &&\n-\ttest \"z$oh\" = \"z$oldhex\"\n-}\n-# chainlint: chained-subshell\n-mkdir sub && (\n-\tcd sub &&\n-\tfoo the bar ?!AMP?!\n-\tnuff said\n-) &&\n-\n-cut \"-d \" -f actual | (read s1 s2 s3 &&\n-test -f $s1 ?!AMP?!\n-test $(cat $s2) = tree2path1 &&\n-test $(cat $s3) = tree3path1)\n-# chainlint: close-nested-and-parent-together\n-(cd foo &&\n-\t(bar &&\n-\t\tbaz))\n-# chainlint: close-subshell\n-(\n-\tfoo\n-) &&\n-(\n-\tbar\n-) >out &&\n-(\n-\tbaz\n-) 2>err &&\n-(\n-\tboo\n-) <input &&\n-(\n-\tbip\n-) | wuzzle &&\n-(\n-\tbop\n-) | fazz \\\n-\tfozz &&\n-(\n-\tbup\n-) |\n-fuzzle &&\n-(\n-\tyop\n-)\n-# chainlint: command-substitution\n-(\n-\tfoo &&\n-\tbar=$(gobble) &&\n-\tbaz\n-) &&\n-(\n-\tbar=$(gobble blocks) ?!AMP?!\n-\tbaz\n-)\n-# chainlint: command-substitution-subsubshell\n-OUT=$( ((large_git 1>&3) | :) 3>&1 ) &&\n-test_match_signal 13 \"$OUT\"\n-# chainlint: comment\n-(\n-\t# comment 1\n-\tnothing &&\n-\t# comment 2\n-\tsomething\n-\t# comment 3\n-\t# comment 4\n-)\n-# chainlint: complex-if-in-cuddled-loop\n-(for i in a b c; do\n-   if test \"$(echo $(waffle bat))\" = \"eleventeen\" &&\n-     test \"$x\" = \"$y\"; then\n-     :\n-   else\n-     echo >file\n-   fi ?!LOOP?!\n- done) &&\n-test ! -f file\n-# chainlint: cuddled\n-(cd foo &&\n-\tbar\n-) &&\n-\n-(cd foo ?!AMP?!\n-\tbar\n-) &&\n-\n-(\n-\tcd foo &&\n-\tbar) &&\n-\n-(cd foo &&\n-\tbar) &&\n-\n-(cd foo ?!AMP?!\n-\tbar)\n-# chainlint: cuddled-if-then-else\n-(if test -z \"\"; then\n-    echo empty\n- else\n-    echo bizzy\n- fi) &&\n-echo foobar\n-# chainlint: cuddled-loop\n-( while read x\n-  do foobar bop || exit 1\n-  done <file ) &&\n-outside subshell\n-# chainlint: double-here-doc\n-run_sub_test_lib_test_err run-inv-range-start \\\n-\t\"--run invalid range start\" \\\n-\t--run=\"a-5\" <<-\\EOF &&\n-test_expect_success \"passing test #1\" \"true\"\n-test_done\n-EOF\n-check_sub_test_lib_test_err run-inv-range-start \\\n-\t<<-\\EOF_OUT 3<<-EOF_ERR\n-> FATAL: Unexpected exit with code 1\n-EOF_OUT\n-> error: --run: invalid non-numeric in range start: ${SQ}a-5${SQ}\n-EOF_ERR\n-# chainlint: dqstring-line-splice\n-\n-echo 'fatal: reword option of --fixup is mutually exclusive with'\t'--patch/--interactive/--all/--include/--only' >expect &&\n-test_must_fail git commit --fixup=reword:HEAD~ $1 2>actual &&\n-test_cmp expect actual\n-\n-# chainlint: dqstring-no-interpolate\n-grep \"^ ! [rejected][ ]*$BRANCH -> $BRANCH (non-fast-forward)$\" out &&\n-\n-grep \"^\\.git$\" output.txt &&\n-\n-\n-(\n-\tcd client$version &&\n-\tGIT_TEST_PROTOCOL_VERSION=$version git fetch-pack --no-progress .. $(cat ../input)\n-) >output &&\n-\tcut -d ' ' -f 2 <output | sort >actual &&\n-\ttest_cmp expect actual\n-\n-# chainlint: empty-here-doc\n-git ls-tree $tree path >current &&\n-cat >expected <<\\EOF &&\n-EOF\n-test_output\n-# chainlint: exclamation\n-if ! condition; then echo nope; else yep; fi &&\n-test_prerequisite !MINGW &&\n-mail uucp!address &&\n-echo !whatever!\n-# chainlint: exit-loop\n-(\n-\tfor i in a b c\n-\tdo\n-\t\tfoo || exit 1\n-\t\tbar &&\n-\t\tbaz\n-\tdone\n-) &&\n-(\n-\twhile true\n-\tdo\n-\t\tfoo || exit 1\n-\t\tbar &&\n-\t\tbaz\n-\tdone\n-) &&\n-(\n-\ti=0 &&\n-\twhile test $i -lt 10\n-\tdo\n-\t\techo $i || exit\n-\t\ti=$(($i + 1))\n-\tdone\n-)\n-# chainlint: exit-subshell\n-(\n-\tfoo || exit 1\n-\tbar &&\n-\tbaz\n-)\n-# chainlint: for-loop\n-(\n-\tfor i in a b c\n-\tdo\n-\t\techo $i ?!AMP?!\n-\t\tcat <<-\\EOF ?!LOOP?!\n-\t\tbar\n-\t\tEOF\n-\tdone ?!AMP?!\n-\n-\tfor i in a b c; do\n-\t\techo $i &&\n-\t\tcat $i ?!LOOP?!\n-\tdone\n-)\n-# chainlint: for-loop-abbreviated\n-for it\n-do\n-\tpath=$(expr \"$it\" : ([^:]*)) &&\n-\tgit update-index --add \"$path\" || exit\n-done\n-# chainlint: function\n-sha1_file() {\n-\techo \"$*\" | sed \"s#..#.git/objects/&/#\"\n-} &&\n-\n-remove_object() {\n-\tfile=$(sha1_file \"$*\") &&\n-\ttest -e \"$file\" ?!AMP?!\n-\trm -f \"$file\"\n-} ?!AMP?!\n-\n-sha1_file arg && remove_object arg\n-# chainlint: here-doc\n-boodle wobba \\\n-       gorgo snoot \\\n-       wafta snurb <<EOF &&\n-quoth the raven,\n-nevermore...\n-EOF\n-\n-cat <<-Arbitrary_Tag_42 >foo &&\n-snoz\n-boz\n-woz\n-Arbitrary_Tag_42\n-\n-cat <<\"zump\" >boo &&\n-snoz\n-boz\n-woz\n-zump\n-\n-horticulture <<\\EOF\n-gomez\n-morticia\n-wednesday\n-pugsly\n-EOF\n-# chainlint: here-doc-close-subshell\n-(\n-\tcat <<-\\INPUT)\n-\tfizz\n-\tINPUT\n-# chainlint: here-doc-indent-operator\n-cat >expect <<- EOF &&\n-header: 43475048 1 $(test_oid oid_version) $NUM_CHUNKS 0\n-num_commits: $1\n-chunks: oid_fanout oid_lookup commit_metadata generation_data bloom_indexes bloom_data\n-EOF\n-\n-cat >expect << -EOF ?!AMP?!\n-this is not indented\n--EOF\n-\n-cleanup\n-# chainlint: here-doc-multi-line-command-subst\n-(\n-\tx=$(bobble <<-\\END &&\n-\t\tfossil\n-\t\tvegetable\n-\t\tEND\n-\t\twiffle) ?!AMP?!\n-\techo $x\n-)\n-# chainlint: here-doc-multi-line-string\n-(\n-\tcat <<-\\TXT && echo \"multi-line\n-\tstring\" ?!AMP?!\n-\tfizzle\n-\tTXT\n-\tbap\n-)\n-# chainlint: if-condition-split\n-if bob &&\n-   marcia ||\n-   kevin\n-then\n-\techo \"nomads\" ?!AMP?!\n-\techo \"for sure\"\n-fi\n-# chainlint: if-in-loop\n-(\n-\tfor i in a b c\n-\tdo\n-\t\tif false\n-\t\tthen\n-\t\t\techo \"err\"\n-\t\t\texit 1\n-\t\tfi ?!AMP?!\n-\t\tfoo\n-\tdone ?!AMP?!\n-\tbar\n-)\n-# chainlint: if-then-else\n-(\n-\tif test -n \"\"\n-\tthen\n-\t\techo very ?!AMP?!\n-\t\techo empty\n-\telif test -z \"\"\n-\tthen\n-\t\techo foo\n-\telse\n-\t\techo foo &&\n-\t\tcat <<-\\EOF\n-\t\tbar\n-\t\tEOF\n-\tfi ?!AMP?!\n-\techo poodle\n-) &&\n-(\n-\tif test -n \"\"; then\n-\t\techo very &&\n-\t\techo empty\n-\tfi\n-)\n-# chainlint: incomplete-line\n-line 1 \\\n-line 2 \\\n-line 3 \\\n-line 4 &&\n-(\n-\tline 5 \\\n-\tline 6 \\\n-\tline 7 \\\n-\tline 8\n-)\n-# chainlint: inline-comment\n-(\n-\tfoobar && # comment 1\n-\tbarfoo ?!AMP?! # wrong position for &&\n-\tflibble \"not a # comment\"\n-) &&\n-\n-(cd foo &&\n-\tflibble \"not a # comment\")\n-# chainlint: loop-detect-failure\n-git init r1 &&\n-for n in 1 2 3 4 5\n-do\n-\techo \"This is file: $n\" > r1/file.$n &&\n-\tgit -C r1 add file.$n &&\n-\tgit -C r1 commit -m \"$n\" || return 1\n-done &&\n-\n-git init r2 &&\n-for n in 1000 10000\n-do\n-\tprintf \"%\"$n\"s\" X > r2/large.$n &&\n-\tgit -C r2 add large.$n &&\n-\tgit -C r2 commit -m \"$n\" ?!LOOP?!\n-done\n-# chainlint: loop-detect-status\n-(while test $i -le $blobcount\n- do\n-\tprintf \"Generating blob $i/$blobcount\\r\" >&2 &&\n-\tprintf \"blob\\nmark :$i\\ndata $blobsize\\n\" &&\n-\t#test-tool genrandom $i $blobsize &&\n-\tprintf \"%-${blobsize}s\" $i &&\n-\techo \"M 100644 :$i $i\" >> commit &&\n-\ti=$(($i+1)) ||\n-\techo $? > exit-status\n- done &&\n- echo \"commit refs/heads/main\" &&\n- echo \"author A U Thor <author@email.com> 123456789 +0000\" &&\n- echo \"committer C O Mitter <committer@email.com> 123456789 +0000\" &&\n- echo \"data 5\" &&\n- echo \">2gb\" &&\n- cat commit) |\n-git fast-import --big-file-threshold=2 &&\n-test ! -f exit-status\n-# chainlint: loop-in-if\n-(\n-\tif true\n-\tthen\n-\t\twhile true\n-\t\tdo\n-\t\t\techo \"pop\" ?!AMP?!\n-\t\t\techo \"glup\" ?!LOOP?!\n-\t\tdone ?!AMP?!\n-\t\tfoo\n-\tfi ?!AMP?!\n-\tbar\n-)\n-# chainlint: loop-upstream-pipe\n-(\n-\tgit rev-list --objects --no-object-names base..loose |\n-\twhile read oid\n-\tdo\n-\t\tpath=\"$objdir/$(test_oid_to_path \"$oid\")\" &&\n-\t\tprintf \"%s %d\\n\" \"$oid\" \"$(test-tool chmtime --get \"$path\")\" ||\n-\t\techo \"object list generation failed for $oid\"\n-\tdone |\n-\tsort -k1\n-) >expect &&\n-# chainlint: multi-line-nested-command-substitution\n-(\n-\tfoo &&\n-\tx=$(\n-\t\techo bar |\n-\t\tcat\n-\t) &&\n-\techo ok\n-) |\n-sort &&\n-(\n-\tbar &&\n-\tx=$(echo bar |\n-\t\tcat\n-\t) &&\n-\ty=$(echo baz |\n-\t\tfip) &&\n-\techo fail\n-)\n-# chainlint: multi-line-string\n-(\n-\tx=\"line 1\n-\t\tline 2\n-\t\tline 3\" &&\n-\ty=\"line 1\n-\t\tline2\" ?!AMP?!\n-\tfoobar\n-) &&\n-(\n-\techo \"xyz\" \"abc\n-\t\tdef\n-\t\tghi\" &&\n-\tbarfoo\n-)\n-# chainlint: negated-one-liner\n-! (foo && bar) &&\n-! (foo && bar) >baz &&\n-\n-! (foo; ?!AMP?! bar) &&\n-! (foo; ?!AMP?! bar) >baz\n-# chainlint: nested-cuddled-subshell\n-(\n-\t(cd foo &&\n-\t\tbar\n-\t) &&\n-\n-\t(cd foo &&\n-\t\tbar\n-\t) ?!AMP?!\n-\n-\t(\n-\t\tcd foo &&\n-\t\tbar) &&\n-\n-\t(\n-\t\tcd foo &&\n-\t\tbar) ?!AMP?!\n-\n-\t(cd foo &&\n-\t\tbar) &&\n-\n-\t(cd foo &&\n-\t\tbar) ?!AMP?!\n-\n-\tfoobar\n-)\n-# chainlint: nested-here-doc\n-cat <<ARBITRARY >foop &&\n-naddle\n-fub <<EOF\n-\tnozzle\n-\tnoodle\n-EOF\n-formp\n-ARBITRARY\n-\n-(\n-\tcat <<-\\INPUT_END &&\n-\tfish are mice\n-\tbut geese go slow\n-\tdata <<EOF\n-\t\tperl is lerp\n-\t\tand nothing else\n-\tEOF\n-\ttoink\n-\tINPUT_END\n-\n-\tcat <<-\\EOT ?!AMP?!\n-\ttext goes here\n-\tdata <<EOF\n-\t\tdata goes here\n-\tEOF\n-\tmore test here\n-\tEOT\n-\n-\tfoobar\n-)\n-# chainlint: nested-loop-detect-failure\n-for i in 0 1 2 3 4 5 6 7 8 9;\n-do\n-\tfor j in 0 1 2 3 4 5 6 7 8 9;\n-\tdo\n-\t\techo \"$i$j\" >\"path$i$j\" ?!LOOP?!\n-\tdone ?!LOOP?!\n-done &&\n-\n-for i in 0 1 2 3 4 5 6 7 8 9;\n-do\n-\tfor j in 0 1 2 3 4 5 6 7 8 9;\n-\tdo\n-\t\techo \"$i$j\" >\"path$i$j\" || return 1\n-\tdone\n-done &&\n-\n-for i in 0 1 2 3 4 5 6 7 8 9;\n-do\n-\tfor j in 0 1 2 3 4 5 6 7 8 9;\n-\tdo\n-\t\techo \"$i$j\" >\"path$i$j\" ?!LOOP?!\n-\tdone || return 1\n-done &&\n-\n-for i in 0 1 2 3 4 5 6 7 8 9;\n-do\n-\tfor j in 0 1 2 3 4 5 6 7 8 9;\n-\tdo\n-\t\techo \"$i$j\" >\"path$i$j\" || return 1\n-\tdone || return 1\n-done\n-# chainlint: nested-subshell\n-(\n-\tcd foo &&\n-\t(\n-\t\techo a &&\n-\t\techo b\n-\t) >file &&\n-\n-\tcd foo &&\n-\t(\n-\t\techo a ?!AMP?!\n-\t\techo b\n-\t) >file\n-)\n-# chainlint: nested-subshell-comment\n-(\n-\tfoo &&\n-\t(\n-\t\tbar &&\n-\t\t# bottles wobble while fiddles gobble\n-\t\t# minor numbers of cows (or do they?)\n-\t\tbaz &&\n-\t\tsnaff\n-\t) ?!AMP?!\n-\tfuzzy\n-)\n-# chainlint: not-heredoc\n-echo \"<<<<<<< ours\" &&\n-echo ourside &&\n-echo \"=======\" &&\n-echo theirside &&\n-echo \">>>>>>> theirs\" &&\n-\n-(\n-\techo \"<<<<<<< ours\" &&\n-\techo ourside &&\n-\techo \"=======\" &&\n-\techo theirside &&\n-\techo \">>>>>>> theirs\" ?!AMP?!\n-\tpoodle\n-) >merged\n-# chainlint: one-liner\n-(foo && bar) &&\n-(foo && bar) |\n-(foo && bar) >baz &&\n-\n-(foo; ?!AMP?! bar) &&\n-(foo; ?!AMP?! bar) |\n-(foo; ?!AMP?! bar) >baz &&\n-\n-(foo \"bar; baz\")\n-# chainlint: one-liner-for-loop\n-git init dir-rename-and-content &&\n-(\n-\tcd dir-rename-and-content &&\n-\ttest_write_lines 1 2 3 4 5 >foo &&\n-\tmkdir olddir &&\n-\tfor i in a b c; do echo $i >olddir/$i; ?!LOOP?! done ?!AMP?!\n-\tgit add foo olddir &&\n-\tgit commit -m \"original\" &&\n-)\n-# chainlint: p4-filespec\n-(\n-\tp4 print -1 //depot/fiddle#42 >file &&\n-\tfoobar\n-)\n-# chainlint: pipe\n-(\n-\tfoo |\n-\tbar |\n-\tbaz &&\n-\n-\tfish |\n-\tcow ?!AMP?!\n-\n-\tsunder\n-)\n-# chainlint: return-loop\n-while test $i -lt $((num - 5))\n-do\n-\tgit notes add -m \"notes for commit$i\" HEAD~$i || return 1\n-\ti=$((i + 1))\n-done\n-# chainlint: semicolon\n-(\n-\tcat foo ; ?!AMP?! echo bar ?!AMP?!\n-\tcat foo ; ?!AMP?! echo bar\n-) &&\n-(\n-\tcat foo ; ?!AMP?! echo bar &&\n-\tcat foo ; ?!AMP?! echo bar\n-) &&\n-(\n-\techo \"foo; bar\" &&\n-\tcat foo; ?!AMP?! echo bar\n-) &&\n-(\n-\tfoo;\n-) &&\n-(cd foo &&\n-\tfor i in a b c; do\n-\t\techo; ?!LOOP?!\n-\tdone)\n-# chainlint: sqstring-in-sqstring\n-perl -e '\n-\tdefined($_ = -s $_) or die for @ARGV;\n-\texit 1 if $ARGV[0] <= $ARGV[1];\n-' test-2-$packname_2.pack test-3-$packname_3.pack\n-# chainlint: subshell-here-doc\n-(\n-\techo wobba \\\n-\t       gorgo snoot \\\n-\t       wafta snurb <<-EOF &&\n-\tquoth the raven,\n-\tnevermore...\n-\tEOF\n-\n-\tcat <<EOF >bip ?!AMP?!\n-\tfish fly high\n-EOF\n-\n-\techo <<-\\EOF >bop\n-\tgomez\n-\tmorticia\n-\twednesday\n-\tpugsly\n-\tEOF\n-) &&\n-(\n-\tcat <<-\\ARBITRARY >bup &&\n-\tglink\n-\tFIZZ\n-\tARBITRARY\n-\tcat <<-\"ARBITRARY3\" >bup3 &&\n-\tglink\n-\tFIZZ\n-\tARBITRARY3\n-\tmeep\n-)\n-# chainlint: subshell-one-liner\n-(\n-\t(foo && bar) &&\n-\t(foo && bar) |\n-\t(foo && bar) >baz &&\n-\n-\t(foo; ?!AMP?! bar) &&\n-\t(foo; ?!AMP?! bar) |\n-\t(foo; ?!AMP?! bar) >baz &&\n-\n-\t(foo || exit 1) &&\n-\t(foo || exit 1) |\n-\t(foo || exit 1) >baz &&\n-\n-\t(foo && bar) ?!AMP?!\n-\n-\t(foo && bar; ?!AMP?! baz) ?!AMP?!\n-\n-\tfoobar\n-)\n-# chainlint: t7900-subtree\n-(\n-\tchks=\"sub1\n-sub2\n-sub3\n-sub4\" &&\n-\tchks_sub=$(cat <<TXT | sed \"s,^,sub dir/,\"\n-$chks\n-TXT\n-) &&\n-\tchkms=\"main-sub1\n-main-sub2\n-main-sub3\n-main-sub4\" &&\n-\tchkms_sub=$(cat <<TXT | sed \"s,^,sub dir/,\"\n-$chkms\n-TXT\n-) &&\n-\n-\tsubfiles=$(git ls-files) &&\n-\tcheck_equal \"$subfiles\" \"$chkms\n-$chks\"\n-)\n-# chainlint: token-pasting\n-git config filter.rot13.smudge ./rot13.sh &&\n-git config filter.rot13.clean ./rot13.sh &&\n-\n-{\n-    echo \"*.t filter=rot13\" ?!AMP?!\n-    echo \"*.i ident\"\n-} >.gitattributes &&\n-\n-{\n-    echo a b c d e f g h i j k l m ?!AMP?!\n-    echo n o p q r s t u v w x y z ?!AMP?!\n-    echo '$Id$'\n-} >test &&\n-cat test >test.t &&\n-cat test >test.o &&\n-cat test >test.i &&\n-git add test test.t test.i &&\n-rm -f test test.t test.i &&\n-git checkout -- test test.t test.i &&\n-\n-echo \"content-test2\" >test2.o &&\n-echo \"content-test3 - filename with special characters\" >\"test3 'sq',$x=.o\" ?!AMP?!\n-\n-downstream_url_for_sed=$(\n-\tprintf \"%sn\" \"$downstream_url\" |\n-\tsed -e 's/\\/\\\\/g' -e 's/[[/.*^$]/\\&/g'\n-)\n-# chainlint: unclosed-here-doc\n-command_which_is_run &&\n-cat >expect <<\\EOF ?!UNCLOSED-HEREDOC?! &&\n-\twe try to end the here-doc below,\n-\tbut the indentation throws us off\n-\tsince the operator is not \"<<-\".\n-\tEOF\n-command_which_is_gobbled\n-# chainlint: unclosed-here-doc-indent\n-command_which_is_run &&\n-cat >expect <<-\\EOF ?!UNCLOSED-HEREDOC?! &&\n-we forget to end the here-doc\n-command_which_is_gobbled\n-# chainlint: while-loop\n-(\n-\twhile true\n-\tdo\n-\t\techo foo ?!AMP?!\n-\t\tcat <<-\\EOF ?!LOOP?!\n-\t\tbar\n-\t\tEOF\n-\tdone ?!AMP?!\n-\n-\twhile true; do\n-\t\techo foo &&\n-\t\tcat bar ?!LOOP?!\n-\tdone\n-)\nmake[1]: *** [Makefile:110: check-chainlint] Error 1\nmake[1]: Leaving directory '/home/glaubitz/git/t'\nmake: *** [Makefile:3229: test] Error 2\n\n===================================================================================\n\n-- \n .''`.  John Paul Adrian Glaubitz\n: :' :  Debian Developer\n`. `'   Physicist\n  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913\n"},{"id":"495066","messageId":"CAPig+cS+BcQ2t564m8Q4GO+MAThgq8pV0fEFD4S0FBfwokO2Ng@mail.gmail.com","threadId":"61515","inReplyTo":"8baa12f8d044265f1ddeabd64209e7ac0d3700ae.camel@physik.fu-berlin.de","subject":"Re: chainlint test failing on Linux sparc64","fromName":"Eric Sunshine","fromEmail":"sunshine@sunshineco.com","sentAt":"2024-05-20T08:21:02Z","receivedAt":"2024-05-20T08:21:13Z","isPatch":false,"sender":{"key":"sunshine@sunshineco.com","avatar":"https://avatars.githubusercontent.com/u/163641?v=4"},"body":"On Mon, May 20, 2024 at 3:56 AM John Paul Adrian Glaubitz\n<glaubitz@physik.fu-berlin.de> wrote:\n> the chainlint test is failing on sparc64 (see below) and I'm wondering if anyone\n> can tell me how to run tests manually. I suspect there might be an unaligned access\n> which causes a crash on sparc64 only.\n>\n> rm -f -r 'test-results'\n> --- chainlinttmp/expect 2024-05-19 12:26:50.051507198 +0000\n> +++ chainlinttmp/actual 2024-05-19 12:26:50.051507198 +0000\n> @@ -1,955 +0,0 @@\n> -# chainlint: chainlinttmp/tests\n> -# chainlint: arithmetic-expansion\n> -(\n> -       foo &&\n> -       bar=$((42 + 1)) &&\n> -       baz\n> -) &&\n> [...snip...]\n\nThe thing failing here is chainlint's own self-test, which you don't\nactually need if you're merely building Git. You'd only care about\nchainlint (let alone its self-test) if you're modifying tests or\ncreating new ones. You can bypass chainlint altogether by setting\nenvironment variable GIT_TEST_CHAIN_LINT=0.\n\nThat said, chainlint is just a Perl script, and you can manually run\nthe self-test like this:\n\n    cd t\n    make check-chainlint\n\nThe output you posted is coming from this line in t/Makefile:\n\n    diff -u '$(CHAINLINTTMP_SQ)'/expect '$(CHAINLINTTMP_SQ)'/actual\n\nBased upon what you pasted, it looks like the \"actual\" file has no\ncontent. That might suggest a problem with this line which immediately\nprecedes it:\n\n    $(CHAINLINT) --emit-all '$(CHAINLINTTMP_SQ)'/tests | \\\n        sed -e 's/^[1-9][0-9]* //' >'$(CHAINLINTTMP_SQ)'/actual && \\\n\n\"actual\" might end up empty if the Perl script isn't emitting anything\nfor some reason, or if `sed` isn't emitting anything. Presumably you\nhave a working `sed` installed(?), but do you have Perl installed?\n"},{"id":"495068","messageId":"054f58c2de4af289008f28b140d4a4c9ab56f084.camel@physik.fu-berlin.de","threadId":"61515","inReplyTo":"CAPig+cS+BcQ2t564m8Q4GO+MAThgq8pV0fEFD4S0FBfwokO2Ng@mail.gmail.com","subject":"Re: chainlint test failing on Linux sparc64","fromName":"John Paul Adrian Glaubitz","fromEmail":"glaubitz@physik.fu-berlin.de","sentAt":"2024-05-20T08:24:41Z","receivedAt":"2024-05-20T08:24:44Z","isPatch":false,"sender":{"key":"glaubitz@physik.fu-berlin.de","avatar":"https://avatars.githubusercontent.com/u/1647645?v=4"},"body":"Hi Eric,\n\nOn Mon, 2024-05-20 at 04:21 -0400, Eric Sunshine wrote:\n> The thing failing here is chainlint's own self-test, which you don't\n> actually need if you're merely building Git. You'd only care about\n> chainlint (let alone its self-test) if you're modifying tests or\n> creating new ones. You can bypass chainlint altogether by setting\n> environment variable GIT_TEST_CHAIN_LINT=0.\n> \n> That said, chainlint is just a Perl script, and you can manually run\n> the self-test like this:\n> \n>     cd t\n>     make check-chainlint\n> \n> The output you posted is coming from this line in t/Makefile:\n> \n>     diff -u '$(CHAINLINTTMP_SQ)'/expect '$(CHAINLINTTMP_SQ)'/actual\n> \n> Based upon what you pasted, it looks like the \"actual\" file has no\n> content. That might suggest a problem with this line which immediately\n> precedes it:\n> \n>     $(CHAINLINT) --emit-all '$(CHAINLINTTMP_SQ)'/tests | \\\n>         sed -e 's/^[1-9][0-9]* //' >'$(CHAINLINTTMP_SQ)'/actual && \\\n> \n> \"actual\" might end up empty if the Perl script isn't emitting anything\n> for some reason, or if `sed` isn't emitting anything. Presumably you\n> have a working `sed` installed(?), but do you have Perl installed?\n\nThanks a lot for the elaborate answer!\n\nI think the problem seems to be that the testsuite is not properly invoked\nat all. When I run the testsuite with v2.37.7, all tests are run and pass,\nbut starting with v2.38.0, it only runs the chainlint test and exists.\n\nI am trying to bisect this now.\n\nAdrian\n\n-- \n .''`.  John Paul Adrian Glaubitz\n: :' :  Debian Developer\n`. `'   Physicist\n  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913\n"},{"id":"495069","messageId":"bdbf99ae4d6e3669b3506a7d4a26730aa9cd0ed4.camel@physik.fu-berlin.de","threadId":"61515","inReplyTo":"054f58c2de4af289008f28b140d4a4c9ab56f084.camel@physik.fu-berlin.de","subject":"Re: chainlint test failing on Linux sparc64","fromName":"John Paul Adrian Glaubitz","fromEmail":"glaubitz@physik.fu-berlin.de","sentAt":"2024-05-20T09:04:28Z","receivedAt":"2024-05-20T09:04:32Z","isPatch":false,"sender":{"key":"glaubitz@physik.fu-berlin.de","avatar":"https://avatars.githubusercontent.com/u/1647645?v=4"},"body":"Hi,\n\nOn Mon, 2024-05-20 at 10:24 +0200, John Paul Adrian Glaubitz wrote:\n> I think the problem seems to be that the testsuite is not properly invoked\n> at all. When I run the testsuite with v2.37.7, all tests are run and pass,\n> but starting with v2.38.0, it only runs the chainlint test and exists.\n> \n> I am trying to bisect this now.\n\nBisecting was successful and has lead me to this commit:\n\nd00113ec3474a1652a73c11695c7e7b5182d80a7 is the first bad commit\ncommit d00113ec3474a1652a73c11695c7e7b5182d80a7\nAuthor: Eric Sunshine <sunshine@sunshineco.com>\nDate:   Thu Sep 1 00:29:46 2022 +0000\n\n    t/Makefile: apply chainlint.pl to existing self-tests\n    \n    Now that chainlint.pl is functional, take advantage of the existing\n    chainlint self-tests to validate its operation. (While at it, stop\n    validating chainlint.sed against the self-tests since it will soon be\n    retired.)\n(...)\n\nAdrian\n\n-- \n .''`.  John Paul Adrian Glaubitz\n: :' :  Debian Developer\n`. `'   Physicist\n  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913\n"},{"id":"495070","messageId":"CAPig+cQL73gVDDSH_=8Y6D0Pro58W1O2Rb-hettVcfZudXjOZQ@mail.gmail.com","threadId":"61515","inReplyTo":"bdbf99ae4d6e3669b3506a7d4a26730aa9cd0ed4.camel@physik.fu-berlin.de","subject":"Re: chainlint test failing on Linux sparc64","fromName":"Eric Sunshine","fromEmail":"sunshine@sunshineco.com","sentAt":"2024-05-20T09:36:35Z","receivedAt":"2024-05-20T09:36:47Z","isPatch":false,"sender":{"key":"sunshine@sunshineco.com","avatar":"https://avatars.githubusercontent.com/u/163641?v=4"},"body":"On Mon, May 20, 2024 at 5:04 AM John Paul Adrian Glaubitz\n<glaubitz@physik.fu-berlin.de> wrote:\n> Bisecting was successful and has lead me to this commit:\n>\n> d00113ec3474a1652a73c11695c7e7b5182d80a7 is the first bad commit\n> Author: Eric Sunshine <sunshine@sunshineco.com>\n> Date:   Thu Sep 1 00:29:46 2022 +0000\n>     t/Makefile: apply chainlint.pl to existing self-tests\n>\n>     Now that chainlint.pl is functional, take advantage of the existing\n>     chainlint self-tests to validate its operation. (While at it, stop\n>     validating chainlint.sed against the self-tests since it will soon be\n>     retired.)\n\nThat's the point at which chainlint.sed was replaced with\nchainlint.pl. It also leads to the same supposition expressed earlier\nthat the \"actual\" file seems to be empty for some reason, perhaps\nbecause one of the commands which creates it is failing somehow. At\nthat point in time, the creation command for \"actual\" in t/Makefile\nwas:\n\n    $(CHAINLINT) --emit-all '$(CHAINLINTTMP_SQ)'/tests | \\\n        grep -v '^[ ]*$$' >'$(CHAINLINTTMP_SQ)'/actual && \\\n\nwhich uses `grep` rather than the `sed` used in the present-day\nt/Makefile. This may imply that Perl is somehow suspect or that\nPERL_PATH or PERL_PATH_SQ in t/Makefile are incorrectly set, or that\nt/chainlint.pl itself is not generating any output for some reason.\n\nAfter running:\n\n    cd t\n    make check-chainlint\n\nwhat is the output of:\n\n    ls -l chainlinttmp\n\nFor me the output using the latest \"master\" branch is:\n\n    % ls -l chainlinttmp\n    -rw-------  1 me  me  14797 May 20 05:26 actual\n    -rw-------  1 me  me  14797 May 20 05:26 expect\n    -rw-------  1 me  me  15086 May 20 05:26 tests\n\nMy suspicion is that \"actual\" will have size 0 for you. If that's the\ncase, I'd suggest running the commands from the \"check-chainlint\"\ntarget in t/Makefile manually one at a time to see if you can figure\nout which is failing. For instance:\n\n    % ./chainlint.pl --emit-all chainlinttmp/tests\n\nIf that produces output, then that's a good sign. Try capturing that\noutput and feeding it to the `sed` command:\n\n    % ./chainlint.pl --emit-all chainlinttmp/tests >lint.out\n    % sed -e 's/^[1-9][0-9]* //' lint.out\n\nIf that produces output, then something else is going wrong (such as\nPERL_PATH or PERL_PATH_SQ being incorrect).\n"},{"id":"495072","messageId":"506815cf70ea114a3c4177a779481fdc13bca39b.camel@physik.fu-berlin.de","threadId":"61515","inReplyTo":"CAPig+cQL73gVDDSH_=8Y6D0Pro58W1O2Rb-hettVcfZudXjOZQ@mail.gmail.com","subject":"Re: chainlint test failing on Linux sparc64","fromName":"John Paul Adrian Glaubitz","fromEmail":"glaubitz@physik.fu-berlin.de","sentAt":"2024-05-20T09:56:24Z","receivedAt":"2024-05-20T09:56:28Z","isPatch":false,"sender":{"key":"glaubitz@physik.fu-berlin.de","avatar":"https://avatars.githubusercontent.com/u/1647645?v=4"},"body":"Hi Eric,\n\nOn Mon, 2024-05-20 at 05:36 -0400, Eric Sunshine wrote:\n> That's the point at which chainlint.sed was replaced with\n> chainlint.pl. It also leads to the same supposition expressed earlier\n> that the \"actual\" file seems to be empty for some reason, perhaps\n> because one of the commands which creates it is failing somehow. At\n> that point in time, the creation command for \"actual\" in t/Makefile\n> was:\n> \n>     $(CHAINLINT) --emit-all '$(CHAINLINTTMP_SQ)'/tests | \\\n>         grep -v '^[ ]*$$' >'$(CHAINLINTTMP_SQ)'/actual && \\\n> \n> which uses `grep` rather than the `sed` used in the present-day\n> t/Makefile. This may imply that Perl is somehow suspect or that\n> PERL_PATH or PERL_PATH_SQ in t/Makefile are incorrectly set, or that\n> t/chainlint.pl itself is not generating any output for some reason.\n> \n> After running:\n> \n>     cd t\n>     make check-chainlint\n> \n> what is the output of:\n> \n>     ls -l chainlinttmp\n\n(sid_sparc64-dchroot)glaubitz@stadler:~/git/t$ ls -l chainlinttmp\ntotal 32\n-rw-r--r-- 1 glaubitz glaubitz     0 May 20 09:54 actual\n-rw-r--r-- 1 glaubitz glaubitz 14797 May 20 09:54 expect\n-rw-r--r-- 1 glaubitz glaubitz 15086 May 20 09:54 tests\n(sid_sparc64-dchroot)glaubitz@stadler:~/git/t$\n\n> For me the output using the latest \"master\" branch is:\n> \n>     % ls -l chainlinttmp\n>     -rw-------  1 me  me  14797 May 20 05:26 actual\n>     -rw-------  1 me  me  14797 May 20 05:26 expect\n>     -rw-------  1 me  me  15086 May 20 05:26 tests\n> \n> My suspicion is that \"actual\" will have size 0 for you. If that's the\n> case, I'd suggest running the commands from the \"check-chainlint\"\n> target in t/Makefile manually one at a time to see if you can figure\n> out which is failing. For instance:\n> \n>     % ./chainlint.pl --emit-all chainlinttmp/tests\n\nIt does not generate any output for me:\n\n(sid_sparc64-dchroot)glaubitz@stadler:~/git/t$ ./chainlint.pl --emit-all chainlinttmp/tests\n(sid_sparc64-dchroot)glaubitz@stadler:~/git/t$\n\n> If that produces output, then that's a good sign. Try capturing that\n> output and feeding it to the `sed` command:\n> \n>     % ./chainlint.pl --emit-all chainlinttmp/tests >lint.out\n>     % sed -e 's/^[1-9][0-9]* //' lint.out\n> \n> If that produces output, then something else is going wrong (such as\n> PERL_PATH or PERL_PATH_SQ being incorrect).\n\nAdrian\n\n-- \n .''`.  John Paul Adrian Glaubitz\n: :' :  Debian Developer\n`. `'   Physicist\n  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913\n"},{"id":"495073","messageId":"CAPig+cQLsUTpjiZ_TXh2GJAS=tJScUWYxiuR87rtwdTu8H9PXw@mail.gmail.com","threadId":"61515","inReplyTo":"CAPig+cQL73gVDDSH_=8Y6D0Pro58W1O2Rb-hettVcfZudXjOZQ@mail.gmail.com","subject":"Re: chainlint test failing on Linux sparc64","fromName":"Eric Sunshine","fromEmail":"sunshine@sunshineco.com","sentAt":"2024-05-20T09:58:02Z","receivedAt":"2024-05-20T09:58:15Z","isPatch":false,"sender":{"key":"sunshine@sunshineco.com","avatar":"https://avatars.githubusercontent.com/u/163641?v=4"},"body":"On Mon, May 20, 2024 at 5:36 AM Eric Sunshine <sunshine@sunshineco.com> wrote:\n> My suspicion is that \"actual\" will have size 0 for you. If that's the\n> case, I'd suggest running the commands from the \"check-chainlint\"\n> target in t/Makefile manually one at a time to see if you can figure\n> out which is failing. For instance:\n>\n>     % ./chainlint.pl --emit-all chainlinttmp/tests\n\nThis reminded me of an earlier report in which chainlint.pl was\nproducing no output for \"actual\" on Linux for s390x processors. That\nwas due to /proc/cpuinfo producing results which the script wasn't\nexpecting. It was fixed by 1f51b77f4f (chainlint.pl: fix /proc/cpuinfo\nregexp, 2022-11-22)[1]. At the time of that patch, I noted[2]:\n\n    A separate problem is that chainlint.pl doesn't fall back to a\n    sensible non-zero value if ncores() returns 0 (or some other\n    nonsense value). That is, of course, outside the scope of the\n    well-focused problem fix which this standalone patch addresses. I\n    may end up submitting a fix separately to make it fall back\n    sensibly.\n\nwhich probably explains the behavior you're experiencing. To fix it,\nwe'll need to see the output you get from:\n\n    cat /proc/cpuinfo\n\n[1]: https://lore.kernel.org/git/pull.1385.git.git.1669148861635.gitgitgadget@gmail.com/\n[2]: https://lore.kernel.org/git/CAPig+cQ6_7wf6C280Rqi7mcTCiQp-n5GiLWTPazfcUcGFeZi0g@mail.gmail.com/\n"},{"id":"495074","messageId":"7acbd5c6c68bd7ba020e2d1cc457a8954fd6edf4.camel@physik.fu-berlin.de","threadId":"61515","inReplyTo":"CAPig+cQLsUTpjiZ_TXh2GJAS=tJScUWYxiuR87rtwdTu8H9PXw@mail.gmail.com","subject":"Re: chainlint test failing on Linux sparc64","fromName":"John Paul Adrian Glaubitz","fromEmail":"glaubitz@physik.fu-berlin.de","sentAt":"2024-05-20T10:02:34Z","receivedAt":"2024-05-20T10:02:36Z","isPatch":false,"sender":{"key":"glaubitz@physik.fu-berlin.de","avatar":"https://avatars.githubusercontent.com/u/1647645?v=4"},"body":"Hi Eric,\n\nOn Mon, 2024-05-20 at 05:58 -0400, Eric Sunshine wrote:\n> On Mon, May 20, 2024 at 5:36 AM Eric Sunshine <sunshine@sunshineco.com> wrote:\n> > My suspicion is that \"actual\" will have size 0 for you. If that's the\n> > case, I'd suggest running the commands from the \"check-chainlint\"\n> > target in t/Makefile manually one at a time to see if you can figure\n> > out which is failing. For instance:\n> > \n> >     % ./chainlint.pl --emit-all chainlinttmp/tests\n> \n> This reminded me of an earlier report in which chainlint.pl was\n> producing no output for \"actual\" on Linux for s390x processors. That\n> was due to /proc/cpuinfo producing results which the script wasn't\n> expecting. It was fixed by 1f51b77f4f (chainlint.pl: fix /proc/cpuinfo\n> regexp, 2022-11-22)[1]. At the time of that patch, I noted[2]:\n\nYeah, the output for /proc/cpuinfo is not standardized across architectures,\nunfortunately.\n\n>     A separate problem is that chainlint.pl doesn't fall back to a\n>     sensible non-zero value if ncores() returns 0 (or some other\n>     nonsense value). That is, of course, outside the scope of the\n>     well-focused problem fix which this standalone patch addresses. I\n>     may end up submitting a fix separately to make it fall back\n>     sensibly.\n> \n> which probably explains the behavior you're experiencing. To fix it,\n> we'll need to see the output you get from:\n> \n>     cat /proc/cpuinfo\n\nHere you go:\n\nglaubitz@stadler:~$ cat /proc/cpuinfo \ncpu             : UltraSparc T4 (Niagara4)\nfpu             : UltraSparc T4 integrated FPU\npmu             : niagara4\nprom            : OBP 4.38.16 2018/11/28 07:24\ntype            : sun4v\nncpus probed    : 48\nncpus active    : 48\nD$ parity tl1   : 0\nI$ parity tl1   : 0\ncpucaps         :\nflush,stbar,swap,muldiv,v9,blkinit,n2,mul32,div32,v8plus,popc,vis,vis2,ASIBlkInit,fmaf,vis3,hpc,ima,pause,cbcond,aes,des,kasumi,camellia,md5,sha1,sha256,sha512,mpmul,montmul,montsqr,crc32c\nCpu0ClkTck      : 00000000a9beeee4\nCpu1ClkTck      : 00000000a9beeee4\nCpu2ClkTck      : 00000000a9beeee4\nCpu3ClkTck      : 00000000a9beeee4\nCpu4ClkTck      : 00000000a9beeee4\nCpu5ClkTck      : 00000000a9beeee4\nCpu6ClkTck      : 00000000a9beeee4\nCpu7ClkTck      : 00000000a9beeee4\nCpu8ClkTck      : 00000000a9beeee4\nCpu9ClkTck      : 00000000a9beeee4\nCpu10ClkTck     : 00000000a9beeee4\nCpu11ClkTck     : 00000000a9beeee4\nCpu12ClkTck     : 00000000a9beeee4\nCpu13ClkTck     : 00000000a9beeee4\nCpu14ClkTck     : 00000000a9beeee4\nCpu15ClkTck     : 00000000a9beeee4\nCpu16ClkTck     : 00000000a9beeee4\nCpu17ClkTck     : 00000000a9beeee4\nCpu18ClkTck     : 00000000a9beeee4\nCpu19ClkTck     : 00000000a9beeee4\nCpu20ClkTck     : 00000000a9beeee4\nCpu21ClkTck     : 00000000a9beeee4\nCpu22ClkTck     : 00000000a9beeee4\nCpu23ClkTck     : 00000000a9beeee4\nCpu24ClkTck     : 00000000a9beeee4\nCpu25ClkTck     : 00000000a9beeee4\nCpu26ClkTck     : 00000000a9beeee4\nCpu27ClkTck     : 00000000a9beeee4\nCpu28ClkTck     : 00000000a9beeee4\nCpu29ClkTck     : 00000000a9beeee4\nCpu30ClkTck     : 00000000a9beeee4\nCpu31ClkTck     : 00000000a9beeee4\nCpu32ClkTck     : 00000000a9beeee4\nCpu33ClkTck     : 00000000a9beeee4\nCpu34ClkTck     : 00000000a9beeee4\nCpu35ClkTck     : 00000000a9beeee4\nCpu36ClkTck     : 00000000a9beeee4\nCpu37ClkTck     : 00000000a9beeee4\nCpu38ClkTck     : 00000000a9beeee4\nCpu39ClkTck     : 00000000a9beeee4\nCpu40ClkTck     : 00000000a9beeee4\nCpu41ClkTck     : 00000000a9beeee4\nCpu42ClkTck     : 00000000a9beeee4\nCpu43ClkTck     : 00000000a9beeee4\nCpu44ClkTck     : 00000000a9beeee4\nCpu45ClkTck     : 00000000a9beeee4\nCpu46ClkTck     : 00000000a9beeee4\nCpu47ClkTck     : 00000000a9beeee4\nMMU Type        : Hypervisor (sun4v)\nMMU PGSZs       : 8K,64K,4MB,256MB,2GB\nState:\nCPU0:           online\nCPU1:           online\nCPU2:           online\nCPU3:           online\nCPU4:           online\nCPU5:           online\nCPU6:           online\nCPU7:           online\nCPU8:           online\nCPU9:           online\nCPU10:          online\nCPU11:          online\nCPU12:          online\nCPU13:          online\nCPU14:          online\nCPU15:          online\nCPU16:          online\nCPU17:          online\nCPU18:          online\nCPU19:          online\nCPU20:          online\nCPU21:          online\nCPU22:          online\nCPU23:          online\nCPU24:          online\nCPU25:          online\nCPU26:          online\nCPU27:          online\nCPU28:          online\nCPU29:          online\nCPU30:          online\nCPU31:          online\nCPU32:          online\nCPU33:          online\nCPU34:          online\nCPU35:          online\nCPU36:          online\nCPU37:          online\nCPU38:          online\nCPU39:          online\nCPU40:          online\nCPU41:          online\nCPU42:          online\nCPU43:          online\nCPU44:          online\nCPU45:          online\nCPU46:          online\nCPU47:          online\nglaubitz@stadler:~$\n\nAdrian\n\n-- \n .''`.  John Paul Adrian Glaubitz\n: :' :  Debian Developer\n`. `'   Physicist\n  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913\n"},{"id":"495076","messageId":"46caaa2d204844cbe5625428ece5b2fe8656364b.camel@physik.fu-berlin.de","threadId":"61515","inReplyTo":"7acbd5c6c68bd7ba020e2d1cc457a8954fd6edf4.camel@physik.fu-berlin.de","subject":"Re: chainlint test failing on Linux sparc64","fromName":"John Paul Adrian Glaubitz","fromEmail":"glaubitz@physik.fu-berlin.de","sentAt":"2024-05-20T11:02:46Z","receivedAt":"2024-05-20T11:02:52Z","isPatch":false,"sender":{"key":"glaubitz@physik.fu-berlin.de","avatar":"https://avatars.githubusercontent.com/u/1647645?v=4"},"body":"Hi Eric,\n\nOn Mon, 2024-05-20 at 12:02 +0200, John Paul Adrian Glaubitz wrote:\n> > which probably explains the behavior you're experiencing. To fix it,\n> > we'll need to see the output you get from:\n> > \n> >     cat /proc/cpuinfo\n> \n> Here you go:\n> \n> glaubitz@stadler:~$ cat /proc/cpuinfo \n> cpu             : UltraSparc T4 (Niagara4)\n> fpu             : UltraSparc T4 integrated FPU\n> pmu             : niagara4\n> prom            : OBP 4.38.16 2018/11/28 07:24\n> type            : sun4v\n> ncpus probed    : 48\n> ncpus active    : 48\n> D$ parity tl1   : 0\n> I$ parity tl1   : 0\n> cpucaps         :\n> flush,stbar,swap,muldiv,v9,blkinit,n2,mul32,div32,v8plus,popc,vis,vis2,ASIBlkInit,fmaf,vis3,hpc,ima,pause,cbcond,aes,des,kasumi,camellia,md5,sha1,sha256,sha512,mpmul,montmul,montsqr,crc32c\n> Cpu0ClkTck      : 00000000a9beeee4\n> Cpu1ClkTck      : 00000000a9beeee4\n> (...)\n> State:\n> CPU0:           online\n> CPU1:           online\n> CPU2:           online\n> CPU3:           online\n\nIn order to verify this theory, I made the following temporary change:\n\ndiff --git a/t/chainlint.pl b/t/chainlint.pl\nindex 556ee91a15..63cac942ac 100755\n--- a/t/chainlint.pl\n+++ b/t/chainlint.pl\n@@ -718,7 +718,7 @@ sub ncores {\n        # Windows\n        return $ENV{NUMBER_OF_PROCESSORS} if exists($ENV{NUMBER_OF_PROCESSORS});\n        # Linux / MSYS2 / Cygwin / WSL\n-       do { local @ARGV='/proc/cpuinfo'; return scalar(grep(/^processor[\\s\\d]*:/, <>)); } if -r '/proc/cpuinfo';\n+       do { local @ARGV='/proc/cpuinfo'; return scalar(grep(/^processor[\\s\\d]*:||^CPU[\\d]*:/, <>)); } if -r '/proc/cpuinfo';\n        # macOS & BSD\n        return qx/sysctl -n hw.ncpu/ if $^O =~ /(?:^darwin$|bsd)/;\n        return 1;\n\nand I confirm that this fixes the problem.\n\nLet me whip up a patch and post it here.\n\nAdrian\n\n-- \n .''`.  John Paul Adrian Glaubitz\n: :' :  Debian Developer\n`. `'   Physicist\n  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913\n"},{"id":"495080","messageId":"xmqq4jasmpv5.fsf@gitster.g","threadId":"61515","inReplyTo":"46caaa2d204844cbe5625428ece5b2fe8656364b.camel@physik.fu-berlin.de","subject":"Re: chainlint test failing on Linux sparc64","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2024-05-20T16:04:30Z","receivedAt":"2024-05-20T16:04:38Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> writes:\n\n> Hi Eric,\n> ...\n> In order to verify this theory, I made the following temporary change:\n>\n> diff --git a/t/chainlint.pl b/t/chainlint.pl\n> index 556ee91a15..63cac942ac 100755\n> --- a/t/chainlint.pl\n> +++ b/t/chainlint.pl\n> @@ -718,7 +718,7 @@ sub ncores {\n>         # Windows\n>         return $ENV{NUMBER_OF_PROCESSORS} if exists($ENV{NUMBER_OF_PROCESSORS});\n>         # Linux / MSYS2 / Cygwin / WSL\n> -       do { local @ARGV='/proc/cpuinfo'; return scalar(grep(/^processor[\\s\\d]*:/, <>)); } if -r '/proc/cpuinfo';\n> +       do { local @ARGV='/proc/cpuinfo'; return scalar(grep(/^processor[\\s\\d]*:||^CPU[\\d]*:/, <>)); } if -r '/proc/cpuinfo';\n>         # macOS & BSD\n>         return qx/sysctl -n hw.ncpu/ if $^O =~ /(?:^darwin$|bsd)/;\n>         return 1;\n>\n> and I confirm that this fixes the problem.\n>\n> Let me whip up a patch and post it here.\n\nThanks for working so well together.  Very much appreciated.\n"},{"id":"495083","messageId":"001ecb0316534ea5e0fbfaecf0d020220b273210.camel@physik.fu-berlin.de","threadId":"61515","inReplyTo":"xmqq4jasmpv5.fsf@gitster.g","subject":"Re: chainlint test failing on Linux sparc64","fromName":"John Paul Adrian Glaubitz","fromEmail":"glaubitz@physik.fu-berlin.de","sentAt":"2024-05-20T16:07:13Z","receivedAt":"2024-05-20T16:07:15Z","isPatch":false,"sender":{"key":"glaubitz@physik.fu-berlin.de","avatar":"https://avatars.githubusercontent.com/u/1647645?v=4"},"body":"On Mon, 2024-05-20 at 09:04 -0700, Junio C Hamano wrote:\n> John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> writes:\n> \n> > Hi Eric,\n> > ...\n> > In order to verify this theory, I made the following temporary change:\n> > \n> > diff --git a/t/chainlint.pl b/t/chainlint.pl\n> > index 556ee91a15..63cac942ac 100755\n> > --- a/t/chainlint.pl\n> > +++ b/t/chainlint.pl\n> > @@ -718,7 +718,7 @@ sub ncores {\n> >         # Windows\n> >         return $ENV{NUMBER_OF_PROCESSORS} if exists($ENV{NUMBER_OF_PROCESSORS});\n> >         # Linux / MSYS2 / Cygwin / WSL\n> > -       do { local @ARGV='/proc/cpuinfo'; return scalar(grep(/^processor[\\s\\d]*:/, <>)); } if -r '/proc/cpuinfo';\n> > +       do { local @ARGV='/proc/cpuinfo'; return scalar(grep(/^processor[\\s\\d]*:||^CPU[\\d]*:/, <>)); } if -r '/proc/cpuinfo';\n> >         # macOS & BSD\n> >         return qx/sysctl -n hw.ncpu/ if $^O =~ /(?:^darwin$|bsd)/;\n> >         return 1;\n> > \n> > and I confirm that this fixes the problem.\n> > \n> > Let me whip up a patch and post it here.\n> \n> Thanks for working so well together.  Very much appreciated.\n\nThanks for the praise! I very much enjoyed it.\n\nAdrian\n\n-- \n .''`.  John Paul Adrian Glaubitz\n: :' :  Debian Developer\n`. `'   Physicist\n  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913\n"}]}