Skip to content

build-gnu.sh: Use MULTICALL=y for faster build time - #9236

Closed
oech3 wants to merge 16 commits into
uutils:mainfrom
oech3:multicall-gtest
Closed

oech3 wants to merge 16 commits into
uutils:mainfrom
oech3:multicall-gtest

Conversation

@oech3

@oech3 oech3 commented Nov 12, 2025

Copy link
Copy Markdown
Contributor

No description provided.

@github-actions

Copy link
Copy Markdown

GNU testsuite comparison:

GNU test failed: tests/id/context. tests/id/context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/id/no-context. tests/id/no-context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/basic-1. tests/install/basic-1 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/create-leading. tests/install/create-leading is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/d-slashdot. tests/install/d-slashdot is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/install-C. tests/install/install-C is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/install-C-root. tests/install/install-C-root is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/install-C-selinux. tests/install/install-C-selinux is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/install-Z-selinux. tests/install/install-Z-selinux is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/strip-program. tests/install/strip-program is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ln/misc. tests/ln/misc is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/misc/invalid-opt. tests/misc/invalid-opt is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/restorecon. tests/mkdir/restorecon is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/selinux. tests/mkdir/selinux is passing on 'main'. Maybe you have to rebase?
Skip an intermittent issue tests/misc/usage_vs_getopt (fails in this run but passes in the 'main' branch)
Skipping an intermittent issue tests/tail/overlay-headers (passes in this run but fails in the 'main' branch)
Note: The gnu test tests/chcon/chcon is now being skipped but was previously passing.
Note: The gnu test tests/cp/no-ctx is now being skipped but was previously passing.
Note: The gnu test tests/ls/selinux is now being skipped but was previously passing.
Note: The gnu test tests/misc/selinux is now being skipped but was previously passing.
Note: The gnu test tests/misc/xattr is now being skipped but was previously passing.

@github-actions

Copy link
Copy Markdown

GNU testsuite comparison:

GNU test failed: tests/id/context. tests/id/context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/id/no-context. tests/id/no-context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/basic-1. tests/install/basic-1 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/install-C-selinux. tests/install/install-C-selinux is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/restorecon. tests/mkdir/restorecon is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/selinux. tests/mkdir/selinux is passing on 'main'. Maybe you have to rebase?
Skipping an intermittent issue tests/tail/overlay-headers (passes in this run but fails in the 'main' branch)
Note: The gnu test tests/chcon/chcon is now being skipped but was previously passing.
Note: The gnu test tests/cp/no-ctx is now being skipped but was previously passing.
Note: The gnu test tests/ls/selinux is now being skipped but was previously passing.
Note: The gnu test tests/misc/selinux is now being skipped but was previously passing.

@github-actions

Copy link
Copy Markdown

GNU testsuite comparison:

GNU test failed: tests/id/context. tests/id/context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/id/no-context. tests/id/no-context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/basic-1. tests/install/basic-1 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/install-C-selinux. tests/install/install-C-selinux is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/restorecon. tests/mkdir/restorecon is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/selinux. tests/mkdir/selinux is passing on 'main'. Maybe you have to rebase?
Skip an intermittent issue tests/tail/overlay-headers (fails in this run but passes in the 'main' branch)
Note: The gnu test tests/chcon/chcon is now being skipped but was previously passing.
Note: The gnu test tests/cp/no-ctx is now being skipped but was previously passing.
Note: The gnu test tests/ls/selinux is now being skipped but was previously passing.
Note: The gnu test tests/misc/selinux is now being skipped but was previously passing.

@github-actions

Copy link
Copy Markdown

GNU testsuite comparison:

GNU test failed: tests/id/context. tests/id/context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/id/no-context. tests/id/no-context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/basic-1. tests/install/basic-1 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/install-C-selinux. tests/install/install-C-selinux is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/restorecon. tests/mkdir/restorecon is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/selinux. tests/mkdir/selinux is passing on 'main'. Maybe you have to rebase?
Skip an intermittent issue tests/misc/tee (fails in this run but passes in the 'main' branch)
Note: The gnu test tests/chcon/chcon is now being skipped but was previously passing.
Note: The gnu test tests/cp/no-ctx is now being skipped but was previously passing.
Note: The gnu test tests/ls/selinux is now being skipped but was previously passing.
Note: The gnu test tests/misc/selinux is now being skipped but was previously passing.

@oech3

oech3 commented Nov 12, 2025

Copy link
Copy Markdown
Contributor Author

We previously saw multicall binary specific issues. But it was symlink specific. This PR is using hardlinks. Why broken?
@naoNao89

@github-actions

Copy link
Copy Markdown

GNU testsuite comparison:

GNU test failed: tests/id/context. tests/id/context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/id/no-context. tests/id/no-context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/basic-1. tests/install/basic-1 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/install-C-selinux. tests/install/install-C-selinux is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/restorecon. tests/mkdir/restorecon is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/selinux. tests/mkdir/selinux is passing on 'main'. Maybe you have to rebase?
Skip an intermittent issue tests/misc/tee (fails in this run but passes in the 'main' branch)
Skip an intermittent issue tests/tail/overlay-headers (fails in this run but passes in the 'main' branch)
Note: The gnu test tests/chcon/chcon is now being skipped but was previously passing.
Note: The gnu test tests/cp/no-ctx is now being skipped but was previously passing.
Note: The gnu test tests/ls/selinux is now being skipped but was previously passing.
Note: The gnu test tests/misc/selinux is now being skipped but was previously passing.

@github-actions

Copy link
Copy Markdown

GNU testsuite comparison:

GNU test failed: tests/id/context. tests/id/context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/id/no-context. tests/id/no-context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/basic-1. tests/install/basic-1 is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/create-leading. tests/install/create-leading is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/d-slashdot. tests/install/d-slashdot is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/install-C. tests/install/install-C is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/install-C-root. tests/install/install-C-root is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/install-C-selinux. tests/install/install-C-selinux is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/install-Z-selinux. tests/install/install-Z-selinux is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/install/strip-program. tests/install/strip-program is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/ln/misc. tests/ln/misc is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/misc/invalid-opt. tests/misc/invalid-opt is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/restorecon. tests/mkdir/restorecon is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/selinux. tests/mkdir/selinux is passing on 'main'. Maybe you have to rebase?
Skip an intermittent issue tests/misc/usage_vs_getopt (fails in this run but passes in the 'main' branch)
Skip an intermittent issue tests/tail/overlay-headers (fails in this run but passes in the 'main' branch)
Note: The gnu test tests/chcon/chcon is now being skipped but was previously passing.
Note: The gnu test tests/cp/no-ctx is now being skipped but was previously passing.
Note: The gnu test tests/ls/selinux is now being skipped but was previously passing.
Note: The gnu test tests/misc/selinux is now being skipped but was previously passing.
Note: The gnu test tests/misc/xattr is now being skipped but was previously passing.

@codspeed

codspeed Bot commented Nov 12, 2025 •

Copy link
Copy Markdown

CodSpeed Performance Report

Merging #9236 will not alter performance

Comparing oech3:multicall-gtest (61a1874) with main (ceeacf4)

Summary

✅ 123 untouched
⏩ 5 skipped1

Footnotes

  1. 5 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩

@oech3
oech3 marked this pull request as draft November 12, 2025 16:07
@oech3
oech3 marked this pull request as ready for review November 12, 2025 16:07
@github-actions

Copy link
Copy Markdown

GNU testsuite comparison:

GNU test failed: tests/id/context. tests/id/context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/id/no-context. tests/id/no-context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/restorecon. tests/mkdir/restorecon is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/selinux. tests/mkdir/selinux is passing on 'main'. Maybe you have to rebase?
Skipping an intermittent issue tests/misc/tee (passes in this run but fails in the 'main' branch)
Note: The gnu test tests/chcon/chcon is now being skipped but was previously passing.
Note: The gnu test tests/cp/no-ctx is now being skipped but was previously passing.
Note: The gnu test tests/ls/selinux is now being skipped but was previously passing.
Note: The gnu test tests/misc/selinux is now being skipped but was previously passing.

@oech3

oech3 commented Nov 12, 2025

Copy link
Copy Markdown
Contributor Author

Copies (instead of hardlinks) does not work too. Strange...

@naoNao89

Copy link
Copy Markdown
Contributor

Copied binaries inherit wrong SELinux contexts. Try relabeling after copying:

chcon -t bin_t "${UU_BUILD_DIR}/${binary}" 2>/dev/null || true

@oech3

oech3 commented Nov 12, 2025

Copy link
Copy Markdown
Contributor Author

Are labels not provided by test tools after copying automatically?

@naoNao89

Copy link
Copy Markdown
Contributor

No. When using cp --remove-destination, the new file gets the destination directory's default context, not the original file's context. SELinux doesn't auto-relabel copied binaries.

Fix: Add restorecon after copying to restore proper contexts based on system policy rules. This will give each binary (install, id, mkdir, etc.) the correct bin_t context that SELinux policies expect.

ref:

@github-actions

Copy link
Copy Markdown

GNU testsuite comparison:

GNU test failed: tests/id/context. tests/id/context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/id/no-context. tests/id/no-context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/restorecon. tests/mkdir/restorecon is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/selinux. tests/mkdir/selinux is passing on 'main'. Maybe you have to rebase?
Skipping an intermittent issue tests/misc/tee (passes in this run but fails in the 'main' branch)
Skipping an intermittent issue tests/tail/overlay-headers (passes in this run but fails in the 'main' branch)
Note: The gnu test tests/chcon/chcon is now being skipped but was previously passing.
Note: The gnu test tests/cp/no-ctx is now being skipped but was previously passing.
Note: The gnu test tests/ls/selinux is now being skipped but was previously passing.
Note: The gnu test tests/misc/selinux is now being skipped but was previously passing.

@oech3

oech3 commented Nov 12, 2025

Copy link
Copy Markdown
Contributor Author

Would you push suggestion button? Thankyou.

Comment thread util/build-gnu.sh
Co-authored-by: Cả thế giới là Rust <90588855+naoNao89@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown

GNU testsuite comparison:

GNU test failed: tests/id/context. tests/id/context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/id/no-context. tests/id/no-context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/restorecon. tests/mkdir/restorecon is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/selinux. tests/mkdir/selinux is passing on 'main'. Maybe you have to rebase?
Skip an intermittent issue tests/timeout/timeout (fails in this run but passes in the 'main' branch)
Skipping an intermittent issue tests/misc/tee (passes in this run but fails in the 'main' branch)
Note: The gnu test tests/chcon/chcon is now being skipped but was previously passing.
Note: The gnu test tests/cp/no-ctx is now being skipped but was previously passing.
Note: The gnu test tests/ls/selinux is now being skipped but was previously passing.
Note: The gnu test tests/misc/selinux is now being skipped but was previously passing.

@github-actions

Copy link
Copy Markdown

GNU testsuite comparison:

GNU test failed: tests/id/context. tests/id/context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/id/no-context. tests/id/no-context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/restorecon. tests/mkdir/restorecon is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/selinux. tests/mkdir/selinux is passing on 'main'. Maybe you have to rebase?
Skipping an intermittent issue tests/misc/tee (passes in this run but fails in the 'main' branch)
Note: The gnu test tests/chcon/chcon is now being skipped but was previously passing.
Note: The gnu test tests/cp/no-ctx is now being skipped but was previously passing.
Note: The gnu test tests/ls/selinux is now being skipped but was previously passing.
Note: The gnu test tests/misc/selinux is now being skipped but was previously passing.

@oech3

oech3 commented Nov 12, 2025

Copy link
Copy Markdown
Contributor Author

Hmm.. still failing. Saving 10 min+ is large advantage. I don't want giveup.

@github-actions

Copy link
Copy Markdown

GNU testsuite comparison:

GNU test failed: tests/id/context. tests/id/context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/id/no-context. tests/id/no-context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/restorecon. tests/mkdir/restorecon is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/selinux. tests/mkdir/selinux is passing on 'main'. Maybe you have to rebase?
Note: The gnu test tests/chcon/chcon is now being skipped but was previously passing.
Note: The gnu test tests/cp/no-ctx is now being skipped but was previously passing.
Note: The gnu test tests/ls/selinux is now being skipped but was previously passing.
Note: The gnu test tests/misc/selinux is now being skipped but was previously passing.

@naoNao89

Copy link
Copy Markdown
Contributor
- name: Build with SELinux support
  run: |
    SELINUX_ENABLED=1 util/build-gnu.sh

@oech3

oech3 commented Nov 13, 2025

Copy link
Copy Markdown
Contributor Author

It is already done. No?: https://github.com/oech3/coreutils/blob/b3997197e117cf6b9061e8eac58209871cfd6074/.github/workflows/GnuTests.yml#L247

@github-actions

Copy link
Copy Markdown

GNU testsuite comparison:

GNU test failed: tests/id/context. tests/id/context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/id/no-context. tests/id/no-context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/restorecon. tests/mkdir/restorecon is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/selinux. tests/mkdir/selinux is passing on 'main'. Maybe you have to rebase?
Skip an intermittent issue tests/timeout/timeout (fails in this run but passes in the 'main' branch)
Skipping an intermittent issue tests/misc/tee (passes in this run but fails in the 'main' branch)
Note: The gnu test tests/chcon/chcon is now being skipped but was previously passing.
Note: The gnu test tests/cp/no-ctx is now being skipped but was previously passing.
Note: The gnu test tests/ls/selinux is now being skipped but was previously passing.
Note: The gnu test tests/misc/selinux is now being skipped but was previously passing.

@github-actions

Copy link
Copy Markdown

GNU testsuite comparison:

GNU test failed: tests/id/context. tests/id/context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/id/no-context. tests/id/no-context is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/restorecon. tests/mkdir/restorecon is passing on 'main'. Maybe you have to rebase?
GNU test failed: tests/mkdir/selinux. tests/mkdir/selinux is passing on 'main'. Maybe you have to rebase?
Skip an intermittent issue tests/tail/overlay-headers (fails in this run but passes in the 'main' branch)
Note: The gnu test tests/chcon/chcon is now being skipped but was previously passing.
Note: The gnu test tests/cp/no-ctx is now being skipped but was previously passing.
Note: The gnu test tests/ls/selinux is now being skipped but was previously passing.
Note: The gnu test tests/misc/selinux is now being skipped but was previously passing.

@naoNao89

Copy link
Copy Markdown
Contributor

gud luck :))))

@oech3

oech3 commented Nov 13, 2025

Copy link
Copy Markdown
Contributor Author

@Ecordonnier Can you fix this?

@oech3
oech3 marked this pull request as draft November 14, 2025 15:30
@oech3 oech3 closed this Nov 15, 2025
@oech3
oech3 deleted the multicall-gtest branch November 15, 2025 21:11
@oech3

oech3 commented Nov 15, 2025

Copy link
Copy Markdown
Contributor Author

Sad that failed to omit 10 min+. But I can't.

@Ecordonnier

Copy link
Copy Markdown
Collaborator

@Ecordonnier Can you fix this?

Sorry, due to a technical issue I was not receiving notifications per email. This has been fixed now. What do you want me to fix?

@oech3

oech3 commented Nov 24, 2025 via email

Copy link
Copy Markdown
Contributor Author

@Ecordonnier

Copy link
Copy Markdown
Collaborator

What do you want me to fix?
Copies of multicall binary did not work on GNU test suite if SELINUX_ENABLED=1. Is this related with AppArmor things too?

I don't know. I haven't worked on this part.

@oech3

oech3 commented Nov 25, 2025

Copy link
Copy Markdown
Contributor Author

OK. Thankyou.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants