mirror of
https://github.com/uutils/coreutils.git
synced 2026-06-10 15:48:22 -07:00
Merge branch 'main' into fix-doc-hashs
This commit is contained in:
@@ -2,3 +2,8 @@ CONFIG_FEATURE_FANCY_HEAD=y
|
||||
CONFIG_UNICODE_SUPPORT=y
|
||||
CONFIG_DESKTOP=y
|
||||
CONFIG_LONG_OPTS=y
|
||||
CONFIG_FEATURE_SORT_BIG=y
|
||||
CONFIG_FEATURE_CATV=y
|
||||
CONFIG_FEATURE_CATN=y
|
||||
CONFIG_FEATURE_TR_CLASSES=y
|
||||
CONFIG_FEATURE_READLINK_FOLLOW=y
|
||||
|
||||
@@ -17,6 +17,7 @@ RUN apt-get update \
|
||||
libcap-dev \
|
||||
libexpect-perl \
|
||||
libselinux1-dev \
|
||||
libsystemd-dev \
|
||||
python3-pyinotify \
|
||||
quilt \
|
||||
texinfo \
|
||||
|
||||
+26
-24
@@ -149,7 +149,7 @@ jobs:
|
||||
shell: bash
|
||||
run: |
|
||||
RUSTDOCFLAGS="-Dwarnings" cargo doc ${{ steps.vars.outputs.CARGO_FEATURES_OPTION }} --no-deps --workspace --document-private-items
|
||||
- uses: DavidAnson/markdownlint-cli2-action@v21
|
||||
- uses: DavidAnson/markdownlint-cli2-action@v22
|
||||
with:
|
||||
fix: "true"
|
||||
globs: |
|
||||
@@ -300,22 +300,22 @@ jobs:
|
||||
run: make nextest PROFILE=ci CARGOFLAGS="--hide-progress-bar"
|
||||
env:
|
||||
RUST_BACKTRACE: "1"
|
||||
|
||||
- name: "`make install PROFILE=release-fast COMPLETIONS=n MANPAGES=n LOCALES=n`"
|
||||
- name: "`make install PROG_PREFIX=uu- PROFILE=release-fast COMPLETIONS=n MANPAGES=n LOCALES=n`"
|
||||
shell: bash
|
||||
run: |
|
||||
set -x
|
||||
DESTDIR=/tmp/ make PROFILE=release-fast COMPLETIONS=n MANPAGES=n LOCALES=n install
|
||||
DESTDIR=/tmp/ make install PROG_PREFIX=uu- PROFILE=release-fast COMPLETIONS=n MANPAGES=n LOCALES=n
|
||||
# Check that utils are built with given profile
|
||||
./target/release-fast/true
|
||||
# Check that the utils are present
|
||||
test -f /tmp/usr/local/bin/tty
|
||||
# Check that the progs have prefix
|
||||
test -f /tmp/usr/local/bin/uu-tty
|
||||
test -f /tmp/usr/local/libexec/uu-coreutils/libstdbuf.*
|
||||
# Check that the manpage is not present
|
||||
! test -f /tmp/usr/local/share/man/man1/whoami.1
|
||||
! test -f /tmp/usr/local/share/man/man1/uu-whoami.1
|
||||
# Check that the completion is not present
|
||||
! test -f /tmp/usr/local/share/zsh/site-functions/_install
|
||||
! test -f /tmp/usr/local/share/bash-completion/completions/head.bash
|
||||
! test -f /tmp/usr/local/share/fish/vendor_completions.d/cat.fish
|
||||
! test -f /tmp/usr/local/share/zsh/site-functions/_uu-install
|
||||
! test -f /tmp/usr/local/share/bash-completion/completions/uu-head.bash
|
||||
! test -f /tmp/usr/local/share/fish/vendor_completions.d/uu-cat.fish
|
||||
env:
|
||||
RUST_BACKTRACE: "1"
|
||||
- name: "`make install`"
|
||||
@@ -502,14 +502,14 @@ jobs:
|
||||
--arg multisize "$SIZE_MULTI" \
|
||||
'{($date): { sha: $sha, size: $size, multisize: $multisize, }}' > size-result.json
|
||||
- name: Download the previous individual size result
|
||||
uses: dawidd6/action-download-artifact@v11
|
||||
uses: dawidd6/action-download-artifact@v12
|
||||
with:
|
||||
workflow: CICD.yml
|
||||
name: individual-size-result
|
||||
repo: uutils/coreutils
|
||||
path: dl
|
||||
- name: Download the previous size result
|
||||
uses: dawidd6/action-download-artifact@v11
|
||||
uses: dawidd6/action-download-artifact@v12
|
||||
with:
|
||||
workflow: CICD.yml
|
||||
name: size-result
|
||||
@@ -546,12 +546,12 @@ jobs:
|
||||
previous_multisize=$(cat dl/size-result.json | jq -r '.[] | .multisize')
|
||||
check 'multicall binary' "$multisize" "$previous_multisize" 'size-result.json'
|
||||
- name: Upload the individual size result
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: individual-size-result
|
||||
path: individual-size-result.json
|
||||
- name: Upload the size result
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: size-result
|
||||
path: size-result.json
|
||||
@@ -585,7 +585,7 @@ jobs:
|
||||
- { os: ubuntu-latest , target: x86_64-unknown-redox , features: feat_os_unix_redox , use-cross: redoxer , skip-tests: true }
|
||||
- { os: ubuntu-latest , target: wasm32-unknown-unknown , default-features: false, features: uucore/format, skip-tests: true, skip-package: true, skip-publish: true }
|
||||
- { os: macos-latest , target: aarch64-apple-darwin , features: feat_os_macos, workspace-tests: true } # M1 CPU
|
||||
# PR #7964: Mac should still build even if the feature is not enabled. Do not publish this.
|
||||
# PR #7964: Mac should still build even if the feature is not enabled. Do not publish this.
|
||||
- { os: macos-latest , target: aarch64-apple-darwin , workspace-tests: true, skip-publish: true } # M1 CPU
|
||||
- { os: macos-latest , target: x86_64-apple-darwin , features: feat_os_macos, workspace-tests: true }
|
||||
- { os: windows-latest , target: i686-pc-windows-msvc , features: feat_os_windows }
|
||||
@@ -820,7 +820,7 @@ jobs:
|
||||
env:
|
||||
RUST_BACKTRACE: "1"
|
||||
- name: Archive executable artifacts
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: ${{ env.PROJECT_NAME }}-${{ matrix.job.target }}${{ steps.vars.outputs.ARTIFACTS_SUFFIX }}
|
||||
path: target/${{ matrix.job.target }}/release/${{ env.PROJECT_NAME }}${{ steps.vars.outputs.EXE_suffix }}
|
||||
@@ -920,17 +920,17 @@ jobs:
|
||||
HASH=$(sha1sum '${{ steps.vars.outputs.TEST_SUMMARY_FILE }}' | cut --delim=" " -f 1)
|
||||
echo "HASH=${HASH}" >> $GITHUB_OUTPUT
|
||||
- name: Reserve SHA1/ID of 'test-summary'
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: "${{ steps.summary.outputs.HASH }}"
|
||||
path: "${{ steps.vars.outputs.TEST_SUMMARY_FILE }}"
|
||||
- name: Reserve test results summary
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: busybox-test-summary
|
||||
path: "${{ steps.vars.outputs.TEST_SUMMARY_FILE }}"
|
||||
- name: Upload json results
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: busybox-result.json
|
||||
path: ${{ steps.vars.outputs.TEST_SUMMARY_FILE }}
|
||||
@@ -1013,17 +1013,17 @@ jobs:
|
||||
HASH=$(sha1sum '${{ steps.vars.outputs.TEST_SUMMARY_FILE }}' | cut --delim=" " -f 1)
|
||||
echo "HASH=${HASH}" >> $GITHUB_OUTPUT
|
||||
- name: Reserve SHA1/ID of 'test-summary'
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: "${{ steps.summary.outputs.HASH }}"
|
||||
path: "${{ steps.vars.outputs.TEST_SUMMARY_FILE }}"
|
||||
- name: Reserve test results summary
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: toybox-test-summary
|
||||
path: "${{ steps.vars.outputs.TEST_SUMMARY_FILE }}"
|
||||
- name: Upload json results
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: toybox-result.json
|
||||
path: ${{ steps.vars.outputs.TEST_SUMMARY_FILE }}
|
||||
@@ -1099,7 +1099,9 @@ jobs:
|
||||
|
||||
case '${{ matrix.job.os }}' in
|
||||
ubuntu-latest)
|
||||
sudo apt-get -y update ; sudo apt-get -y install libselinux1-dev
|
||||
# selinux and systemd headers needed to build tests
|
||||
sudo apt-get -y update
|
||||
sudo apt-get -y install libselinux1-dev libsystemd-dev
|
||||
# pinky is a tool to show logged-in users from utmp, and gecos fields from /etc/passwd.
|
||||
# In GitHub Action *nix VMs, no accounts log in, even the "runner" account that runs the commands, and "system boot" entry is missing.
|
||||
# The account also has empty gecos fields.
|
||||
@@ -1213,7 +1215,7 @@ jobs:
|
||||
uses: lima-vm/lima-actions/setup@v1
|
||||
id: lima-actions-setup
|
||||
- name: Cache ~/.cache/lima
|
||||
uses: actions/cache@v4
|
||||
uses: actions/cache@v5
|
||||
with:
|
||||
path: ~/.cache/lima
|
||||
key: lima-${{ steps.lima-actions-setup.outputs.version }}
|
||||
|
||||
+132
-67
@@ -2,10 +2,11 @@ name: GnuTests
|
||||
|
||||
# spell-checker:ignore (abbrev/names) CodeCov gnulib GnuTests Swatinem
|
||||
# spell-checker:ignore (jargon) submodules devel
|
||||
# spell-checker:ignore (libs/utils) autopoint chksum getenforce gperf lcov libexpect limactl pyinotify setenforce shopt texinfo valgrind libattr libcap taiki-e
|
||||
# spell-checker:ignore (libs/utils) autopoint chksum dpkg getenforce getlimits gperf lcov libexpect limactl pyinotify setenforce shopt texinfo valgrind libattr libcap taiki-e zstd cpio
|
||||
# spell-checker:ignore (options) Ccodegen Coverflow Cpanic Zpanic
|
||||
# spell-checker:ignore (people) Dawid Dziurla * dawidd dtolnay
|
||||
# spell-checker:ignore (vars) FILESET SUBDIRS XPASS
|
||||
# spell-checker:ignore userns
|
||||
|
||||
# * note: to run a single test => `REPO/util/run-gnu-test.sh PATH/TO/TEST/SCRIPT`
|
||||
|
||||
@@ -27,8 +28,10 @@ env:
|
||||
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
|
||||
TEST_FULL_SUMMARY_FILE: 'gnu-full-result.json'
|
||||
TEST_ROOT_FULL_SUMMARY_FILE: 'gnu-root-full-result.json'
|
||||
TEST_STTY_FULL_SUMMARY_FILE: 'gnu-stty-full-result.json'
|
||||
TEST_SELINUX_FULL_SUMMARY_FILE: 'selinux-gnu-full-result.json'
|
||||
TEST_SELINUX_ROOT_FULL_SUMMARY_FILE: 'selinux-root-gnu-full-result.json'
|
||||
TEST_SMACK_FULL_SUMMARY_FILE: 'smack-gnu-full-result.json'
|
||||
|
||||
jobs:
|
||||
native:
|
||||
@@ -41,16 +44,6 @@ jobs:
|
||||
with:
|
||||
path: 'uutils'
|
||||
persist-credentials: false
|
||||
- name: Extract GNU version from build-gnu.sh
|
||||
id: gnu-version
|
||||
run: |
|
||||
GNU_VERSION=$(grep '^release_tag_GNU=' uutils/util/build-gnu.sh | cut -d'"' -f2)
|
||||
if [ -z "$GNU_VERSION" ]; then
|
||||
echo "Error: Failed to extract GNU version from build-gnu.sh"
|
||||
exit 1
|
||||
fi
|
||||
echo "REPO_GNU_REF=${GNU_VERSION}" >> $GITHUB_ENV
|
||||
echo "Extracted GNU version: ${GNU_VERSION}"
|
||||
- uses: dtolnay/rust-toolchain@master
|
||||
with:
|
||||
toolchain: stable
|
||||
@@ -59,20 +52,15 @@ jobs:
|
||||
with:
|
||||
workspaces: "./uutils -> target"
|
||||
- name: Checkout code (GNU coreutils)
|
||||
uses: actions/checkout@v6
|
||||
run: (mkdir -p gnu && cd gnu && bash ../uutils/util/fetch-gnu.sh)
|
||||
- name: Restore files for faster configure and skipping make
|
||||
uses: actions/cache@v5
|
||||
id: cache-config-gnu
|
||||
with:
|
||||
repository: 'coreutils/coreutils'
|
||||
path: 'gnu'
|
||||
ref: ${{ env.REPO_GNU_REF }}
|
||||
submodules: false
|
||||
persist-credentials: false
|
||||
- name: Override submodule URL and initialize submodules
|
||||
# Use github instead of upstream git server
|
||||
run: |
|
||||
git submodule sync --recursive
|
||||
git config submodule.gnulib.url https://github.com/coreutils/gnulib.git
|
||||
git submodule update --init --recursive --depth 1
|
||||
working-directory: gnu
|
||||
path: |
|
||||
gnu/config.cache
|
||||
gnu/src/getlimits
|
||||
key: ${{ runner.os }}-gnu-config-${{ hashFiles('gnu/NEWS') }}-${{ hashFiles('uutils/util/build-gnu.sh') }} # use build-gnu.sh for extremely safe caching
|
||||
|
||||
#### Build environment setup
|
||||
- name: Install dependencies
|
||||
@@ -82,6 +70,8 @@ jobs:
|
||||
sudo apt-get update
|
||||
## Check that build-gnu.sh works on the non SELinux system by installing libselinux only on lima
|
||||
sudo apt-get install -y autopoint gperf gdb python3-pyinotify valgrind libexpect-perl libacl1-dev libattr1-dev libcap-dev attr quilt
|
||||
curl http://launchpadlibrarian.net/831710181/automake_1.18.1-3_all.deb > automake-1.18.deb
|
||||
sudo dpkg -i --force-depends automake-1.18.deb
|
||||
- name: Add various locales
|
||||
shell: bash
|
||||
run: |
|
||||
@@ -102,6 +92,7 @@ jobs:
|
||||
sudo locale-gen --keep-existing fa_IR.UTF-8 # Iran
|
||||
sudo locale-gen --keep-existing am_ET.UTF-8 # Ethiopia
|
||||
sudo locale-gen --keep-existing th_TH.UTF-8 # Thailand
|
||||
sudo locale-gen --keep-existing zh_CN.GB18030 # China
|
||||
|
||||
sudo update-locale
|
||||
echo "After:"
|
||||
@@ -114,11 +105,23 @@ jobs:
|
||||
## Build binaries
|
||||
cd 'uutils'
|
||||
env PROFILE=release-small bash util/build-gnu.sh
|
||||
|
||||
- name: Save files for faster configure and skipping make
|
||||
uses: actions/cache/save@v5
|
||||
if: always() && steps.cache-config-gnu.outputs.cache-hit != 'true'
|
||||
with:
|
||||
path: |
|
||||
gnu/config.cache
|
||||
gnu/src/getlimits
|
||||
key: ${{ runner.os }}-gnu-config-${{ hashFiles('gnu/NEWS') }}-${{ hashFiles('uutils/util/build-gnu.sh') }}
|
||||
|
||||
### Run tests as user
|
||||
- name: Run GNU tests
|
||||
shell: bash
|
||||
run: |
|
||||
## Use unshare
|
||||
sudo sysctl -w kernel.unprivileged_userns_clone=1
|
||||
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
|
||||
## Run GNU tests
|
||||
path_GNU='gnu'
|
||||
path_UUTILS='uutils'
|
||||
@@ -137,30 +140,58 @@ jobs:
|
||||
path_GNU='gnu'
|
||||
path_UUTILS='uutils'
|
||||
bash "uutils/util/run-gnu-test.sh" run-root
|
||||
|
||||
- name: Extract testing info from individual logs (run as root) into JSON
|
||||
shell: bash
|
||||
run : |
|
||||
path_UUTILS='uutils'
|
||||
python uutils/util/gnu-json-result.py gnu/tests > ${{ env.TEST_ROOT_FULL_SUMMARY_FILE }}
|
||||
|
||||
### This shell has been changed from "bash" to this command
|
||||
### "script" will start a pty and the -q command removes the "script" initiation log
|
||||
### the -e flag makes it propagate the error code and -c runs the command in a pty
|
||||
### the primary purpose of this change is to run the tty GNU tests
|
||||
### The reason its separated from the rest of the tests is because one test can corrupt the other
|
||||
### tests through the use of the shared terminal and it changes the environment that the other
|
||||
### tests are run in, which can cause different results.
|
||||
- name: Run GNU stty tests
|
||||
shell: 'script -q -e -c "bash {0}"'
|
||||
run: |
|
||||
## Run GNU root tests
|
||||
path_GNU='gnu'
|
||||
path_UUTILS='uutils'
|
||||
bash "uutils/util/run-gnu-test.sh" run-tty
|
||||
|
||||
- name: Extract testing info from individual logs (stty) into JSON
|
||||
shell: bash
|
||||
run : |
|
||||
path_UUTILS='uutils'
|
||||
python uutils/util/gnu-json-result.py gnu/tests > ${{ env.TEST_STTY_FULL_SUMMARY_FILE }}
|
||||
|
||||
### Upload artifacts
|
||||
- name: Upload full json results
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: gnu-full-result
|
||||
path: ${{ env.TEST_FULL_SUMMARY_FILE }}
|
||||
- name: Upload root json results
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: gnu-root-full-result
|
||||
path: ${{ env.TEST_ROOT_FULL_SUMMARY_FILE }}
|
||||
- name: Upload stty json results
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: gnu-stty-full-result
|
||||
path: ${{ env.TEST_STTY_FULL_SUMMARY_FILE }}
|
||||
|
||||
- name: Compress test logs
|
||||
shell: bash
|
||||
run : |
|
||||
# Compress logs before upload (fails otherwise)
|
||||
gzip gnu/tests/*/*.log
|
||||
- name: Upload test logs
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: test-logs
|
||||
path: |
|
||||
@@ -177,16 +208,6 @@ jobs:
|
||||
with:
|
||||
path: 'uutils'
|
||||
persist-credentials: false
|
||||
- name: Extract GNU version from build-gnu.sh
|
||||
id: gnu-version-selinux
|
||||
run: |
|
||||
GNU_VERSION=$(grep '^release_tag_GNU=' uutils/util/build-gnu.sh | cut -d'"' -f2)
|
||||
if [ -z "$GNU_VERSION" ]; then
|
||||
echo "Error: Failed to extract GNU version from build-gnu.sh"
|
||||
exit 1
|
||||
fi
|
||||
echo "REPO_GNU_REF=${GNU_VERSION}" >> $GITHUB_ENV
|
||||
echo "Extracted GNU version: ${GNU_VERSION}"
|
||||
- uses: dtolnay/rust-toolchain@master
|
||||
with:
|
||||
toolchain: stable
|
||||
@@ -195,27 +216,14 @@ jobs:
|
||||
with:
|
||||
workspaces: "./uutils -> target"
|
||||
- name: Checkout code (GNU coreutils)
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
repository: 'coreutils/coreutils'
|
||||
path: 'gnu'
|
||||
ref: ${{ env.REPO_GNU_REF }}
|
||||
submodules: false
|
||||
persist-credentials: false
|
||||
- name: Override submodule URL and initialize submodules
|
||||
# Use github instead of upstream git server
|
||||
run: |
|
||||
git submodule sync --recursive
|
||||
git config submodule.gnulib.url https://github.com/coreutils/gnulib.git
|
||||
git submodule update --init --recursive --depth 1
|
||||
working-directory: gnu
|
||||
run: (mkdir -p gnu && cd gnu && bash ../uutils/util/fetch-gnu.sh)
|
||||
|
||||
#### Lima build environment setup
|
||||
- name: Setup Lima
|
||||
uses: lima-vm/lima-actions/setup@v1
|
||||
id: lima-actions-setup
|
||||
- name: Cache ~/.cache/lima
|
||||
uses: actions/cache@v4
|
||||
uses: actions/cache@v5
|
||||
with:
|
||||
path: ~/.cache/lima
|
||||
key: lima-${{ steps.lima-actions-setup.outputs.version }}
|
||||
@@ -289,12 +297,12 @@ jobs:
|
||||
# Copy the test directory now
|
||||
rsync -v -a -e ssh lima-default:~/work/gnu/tests/ ./gnu/tests-selinux/
|
||||
- name: Upload SELinux json results
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: selinux-gnu-full-result
|
||||
path: ${{ env.TEST_SELINUX_FULL_SUMMARY_FILE }}
|
||||
- name: Upload SELinux root json results
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: selinux-root-gnu-full-result
|
||||
path: ${{ env.TEST_SELINUX_ROOT_FULL_SUMMARY_FILE }}
|
||||
@@ -304,15 +312,59 @@ jobs:
|
||||
# Compress logs before upload (fails otherwise)
|
||||
gzip gnu/tests-selinux/*/*.log
|
||||
- name: Upload SELinux test logs
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: selinux-test-logs
|
||||
path: |
|
||||
gnu/tests-selinux/*.log
|
||||
gnu/tests-selinux/*/*.log.gz
|
||||
|
||||
smack:
|
||||
name: Run GNU tests (SMACK)
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Checkout code (uutils)
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
path: 'uutils'
|
||||
persist-credentials: false
|
||||
- uses: dtolnay/rust-toolchain@master
|
||||
with:
|
||||
toolchain: stable
|
||||
components: rustfmt
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
with:
|
||||
workspaces: "./uutils -> target"
|
||||
- name: Checkout code (GNU coreutils)
|
||||
run: (mkdir -p gnu && cd gnu && bash ../uutils/util/fetch-gnu.sh)
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y qemu-system-x86 zstd cpio
|
||||
- name: Run GNU SMACK tests
|
||||
run: |
|
||||
cd uutils
|
||||
bash util/run-gnu-tests-smack-ci.sh "$GITHUB_WORKSPACE/gnu" "$GITHUB_WORKSPACE/gnu/tests-smack"
|
||||
- name: Extract testing info into JSON
|
||||
run: |
|
||||
python3 uutils/util/gnu-json-result.py gnu/tests-smack > ${{ env.TEST_SMACK_FULL_SUMMARY_FILE }}
|
||||
- name: Upload SMACK json results
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: smack-gnu-full-result
|
||||
path: ${{ env.TEST_SMACK_FULL_SUMMARY_FILE }}
|
||||
- name: Compress SMACK test logs
|
||||
run: gzip gnu/tests-smack/*/*.log 2>/dev/null || true
|
||||
- name: Upload SMACK test logs
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: smack-test-logs
|
||||
path: |
|
||||
gnu/tests-smack/*.log
|
||||
gnu/tests-smack/*/*.log.gz
|
||||
|
||||
aggregate:
|
||||
needs: [native, selinux]
|
||||
needs: [native, selinux, smack]
|
||||
permissions:
|
||||
actions: read # for dawidd6/action-download-artifact to query and download artifacts
|
||||
contents: read # for actions/checkout to fetch code
|
||||
@@ -337,7 +389,7 @@ jobs:
|
||||
path: 'uutils'
|
||||
persist-credentials: false
|
||||
- name: Retrieve reference artifacts
|
||||
uses: dawidd6/action-download-artifact@v11
|
||||
uses: dawidd6/action-download-artifact@v12
|
||||
# ref: <https://github.com/dawidd6/action-download-artifact>
|
||||
continue-on-error: true ## don't break the build for missing reference artifacts (may be expired or just not generated yet)
|
||||
with:
|
||||
@@ -347,29 +399,42 @@ jobs:
|
||||
workflow_conclusion: completed ## continually recalibrates to last commit of default branch with a successful GnuTests (ie, "self-heals" from GnuTest regressions, but needs more supervision for/of regressions)
|
||||
path: "reference"
|
||||
- name: Download full json results
|
||||
uses: actions/download-artifact@v6
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
name: gnu-full-result
|
||||
path: results
|
||||
merge-multiple: true
|
||||
- name: Download root json results
|
||||
uses: actions/download-artifact@v6
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
name: gnu-root-full-result
|
||||
path: results
|
||||
merge-multiple: true
|
||||
- name: Download stty json results
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
name: gnu-stty-full-result
|
||||
path: results
|
||||
merge-multiple: true
|
||||
|
||||
- name: Download selinux json results
|
||||
uses: actions/download-artifact@v6
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
name: selinux-gnu-full-result
|
||||
path: results
|
||||
merge-multiple: true
|
||||
- name: Download selinux root json results
|
||||
uses: actions/download-artifact@v6
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
name: selinux-root-gnu-full-result
|
||||
path: results
|
||||
merge-multiple: true
|
||||
- name: Download smack json results
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
name: smack-gnu-full-result
|
||||
path: results
|
||||
merge-multiple: true
|
||||
- name: Extract/summarize testing info
|
||||
id: summary
|
||||
shell: bash
|
||||
@@ -380,8 +445,8 @@ jobs:
|
||||
path_UUTILS='uutils'
|
||||
|
||||
json_count=$(ls -l results/*.json | wc -l)
|
||||
if [[ "$json_count" -ne 4 ]]; then
|
||||
echo "::error ::Failed to download all results json files (expected 4 files, found $json_count); failing early"
|
||||
if [[ "$json_count" -ne 6 ]]; then
|
||||
echo "::error ::Failed to download all results json files (expected 6 files, found $json_count); failing early"
|
||||
ls -lR results || true
|
||||
exit 1
|
||||
fi
|
||||
@@ -414,17 +479,17 @@ jobs:
|
||||
HASH=$(sha1sum '${{ steps.vars.outputs.TEST_SUMMARY_FILE }}' | cut --delim=" " -f 1)
|
||||
outputs HASH
|
||||
- name: Upload SHA1/ID of 'test-summary'
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: "${{ steps.summary.outputs.HASH }}"
|
||||
path: "${{ steps.vars.outputs.TEST_SUMMARY_FILE }}"
|
||||
- name: Upload test results summary
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: test-summary
|
||||
path: "${{ steps.vars.outputs.TEST_SUMMARY_FILE }}"
|
||||
- name: Upload aggregated json results
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: aggregated-result
|
||||
path: ${{ steps.vars.outputs.AGGREGATED_SUMMARY_FILE }}
|
||||
@@ -476,7 +541,7 @@ jobs:
|
||||
fi
|
||||
- name: Upload comparison log (for GnuComment workflow)
|
||||
if: success() || failure() # run regardless of prior step success/failure
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: comment
|
||||
path: reference/comment/
|
||||
|
||||
@@ -85,7 +85,7 @@ jobs:
|
||||
free -mh
|
||||
df -Th
|
||||
- name: Restore AVD cache
|
||||
uses: actions/cache/restore@v4
|
||||
uses: actions/cache/restore@v5
|
||||
id: avd-cache
|
||||
continue-on-error: true
|
||||
with:
|
||||
@@ -127,7 +127,7 @@ jobs:
|
||||
util/android-commands.sh init "${{ matrix.arch }}" "${{ matrix.api-level }}" "${{ env.TERMUX }}"
|
||||
- name: Save AVD cache
|
||||
if: steps.avd-cache.outputs.cache-hit != 'true'
|
||||
uses: actions/cache/save@v4
|
||||
uses: actions/cache/save@v5
|
||||
with:
|
||||
path: |
|
||||
~/.android/avd/*
|
||||
@@ -143,7 +143,7 @@ jobs:
|
||||
trim: true
|
||||
- name: Restore rust cache
|
||||
id: rust-cache
|
||||
uses: actions/cache/restore@v4
|
||||
uses: actions/cache/restore@v5
|
||||
with:
|
||||
path: ~/__rust_cache__
|
||||
# The version vX at the end of the key is just a development version to avoid conflicts in
|
||||
@@ -184,13 +184,13 @@ jobs:
|
||||
df -Th
|
||||
- name: Save rust cache
|
||||
if: steps.rust-cache.outputs.cache-hit != 'true'
|
||||
uses: actions/cache/save@v4
|
||||
uses: actions/cache/save@v5
|
||||
with:
|
||||
path: ~/__rust_cache__
|
||||
key: ${{ matrix.arch }}_${{ matrix.target}}_${{ steps.read_rustc_hash.outputs.content }}_${{ hashFiles('**/Cargo.toml', '**/Cargo.lock') }}_v3
|
||||
- name: archive any output (error screenshots)
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: test_output_${{ env.AVD_CACHE_KEY }}
|
||||
path: output
|
||||
|
||||
@@ -50,12 +50,6 @@ jobs:
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Install system dependencies
|
||||
shell: bash
|
||||
run: |
|
||||
sudo apt-get -y update
|
||||
sudo apt-get -y install libselinux1-dev
|
||||
|
||||
- uses: dtolnay/rust-toolchain@stable
|
||||
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
|
||||
@@ -255,7 +255,7 @@ jobs:
|
||||
run: npm install -g cspell
|
||||
|
||||
- name: Cache pre-commit environments
|
||||
uses: actions/cache@v4
|
||||
uses: actions/cache@v5
|
||||
with:
|
||||
path: ~/.cache/pre-commit
|
||||
key: pre-commit-${{ runner.os }}-${{ hashFiles('.pre-commit-config.yaml') }}
|
||||
|
||||
@@ -34,7 +34,7 @@ jobs:
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
|
||||
- name: Download tldr
|
||||
run: curl https://tldr.sh/assets/tldr.zip -o docs/tldr.zip
|
||||
run: curl -L https://github.com/tldr-pages/tldr/releases/latest/download/tldr.zip -o docs/tldr.zip
|
||||
|
||||
- name: Generate documentation
|
||||
run: cargo run --bin uudoc --all-features
|
||||
|
||||
@@ -79,8 +79,7 @@ jobs:
|
||||
matrix:
|
||||
test-target:
|
||||
- { name: fuzz_test, should_pass: true }
|
||||
# https://github.com/uutils/coreutils/issues/5311
|
||||
- { name: fuzz_date, should_pass: false }
|
||||
- { name: fuzz_date, should_pass: true }
|
||||
- { name: fuzz_expr, should_pass: true }
|
||||
- { name: fuzz_printf, should_pass: true }
|
||||
- { name: fuzz_echo, should_pass: true }
|
||||
@@ -110,7 +109,7 @@ jobs:
|
||||
shared-key: "cargo-fuzz-cache-key"
|
||||
cache-directories: "fuzz/target"
|
||||
- name: Restore Cached Corpus
|
||||
uses: actions/cache/restore@v4
|
||||
uses: actions/cache/restore@v5
|
||||
with:
|
||||
key: corpus-cache-${{ matrix.test-target.name }}
|
||||
path: |
|
||||
@@ -192,13 +191,13 @@ jobs:
|
||||
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
- name: Save Corpus Cache
|
||||
uses: actions/cache/save@v4
|
||||
uses: actions/cache/save@v5
|
||||
with:
|
||||
key: corpus-cache-${{ matrix.test-target.name }}
|
||||
path: |
|
||||
fuzz/corpus/${{ matrix.test-target.name }}
|
||||
- name: Upload Stats
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: fuzz-stats-${{ matrix.test-target.name }}
|
||||
path: |
|
||||
@@ -215,7 +214,7 @@ jobs:
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Download all stats
|
||||
uses: actions/download-artifact@v6
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
path: fuzz/stats-artifacts
|
||||
pattern: fuzz-stats-*
|
||||
@@ -309,7 +308,7 @@ jobs:
|
||||
run: |
|
||||
cat fuzzing_summary.md
|
||||
- name: Upload Summary
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: fuzzing-summary
|
||||
path: fuzzing_summary.md
|
||||
|
||||
@@ -44,7 +44,14 @@ jobs:
|
||||
# We need jq and GNU coreutils to run show-utils.sh and bash to use inline shell string replacement
|
||||
# Use sudo-- to get the default sudo package without ambiguity
|
||||
# Install rust and cargo from OpenBSD packages
|
||||
prepare: pkg_add curl sudo-- jq coreutils bash rust rust-clippy rust-rustfmt llvm--
|
||||
prepare: |
|
||||
# Clean up disk space before installing packages
|
||||
df -h
|
||||
rm -rf /usr/share/doc/* /usr/share/man/* /var/cache/* /tmp/* || true
|
||||
pkg_add curl sudo-- jq coreutils bash rust rust-clippy rust-rustfmt llvm--
|
||||
# Clean up package cache after installation
|
||||
pkg_delete -a || true
|
||||
df -h
|
||||
run: |
|
||||
## Prepare, build, and test
|
||||
# implementation modelled after ref: <https://github.com/rust-lang/rustup/pull/2783>
|
||||
@@ -106,8 +113,10 @@ jobs:
|
||||
# * convert any warnings to GHA UI annotations; ref: <https://help.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-a-warning-message>
|
||||
S=\$(cargo clippy --all-targets \${CARGO_UTILITY_LIST_OPTIONS} -- -D warnings 2>&1) && printf "%s\n" "\$S" || { printf "%s\n" "\$S" ; printf "%s" "\$S" | sed -E -n -e '/^error:/{' -e "N; s/^error:[[:space:]]+(.*)\\n[[:space:]]+-->[[:space:]]+(.*):([0-9]+):([0-9]+).*\$/::\${FAULT_TYPE} file=\2,line=\3,col=\4::\${FAULT_PREFIX}: \\\`cargo clippy\\\`: \1 (file:'\2', line:\3)/p;" -e '}' ; FAULT=true ; }
|
||||
fi
|
||||
# Clean to avoid to rsync back the files
|
||||
# Clean to avoid to rsync back the files and free up disk space
|
||||
cargo clean
|
||||
# Additional cleanup to free disk space
|
||||
rm -rf ~/.cargo/registry/cache ~/.cargo/git/db || true
|
||||
if [ -n "\${FAIL_ON_FAULT}" ] && [ -n "\${FAULT}" ]; then exit 1 ; fi
|
||||
EOF
|
||||
|
||||
@@ -132,7 +141,14 @@ jobs:
|
||||
copyback: false
|
||||
mem: 4096
|
||||
# Install rust and build dependencies from OpenBSD packages (llvm provides libclang for bindgen)
|
||||
prepare: pkg_add curl gmake sudo-- jq rust llvm--
|
||||
prepare: |
|
||||
# Clean up disk space before installing packages
|
||||
df -h
|
||||
rm -rf /usr/share/doc/* /usr/share/man/* /var/cache/* /tmp/* || true
|
||||
pkg_add curl gmake sudo-- jq rust llvm--
|
||||
# Clean up package cache after installation
|
||||
pkg_delete -a || true
|
||||
df -h
|
||||
run: |
|
||||
## Prepare, build, and test
|
||||
# implementation modelled after ref: <https://github.com/rust-lang/rustup/pull/2783>
|
||||
@@ -181,9 +197,13 @@ jobs:
|
||||
cd "${WORKSPACE}"
|
||||
unset FAULT
|
||||
cargo build || FAULT=1
|
||||
# Clean build artifacts to save disk space before testing
|
||||
rm -rf target/debug/build target/debug/incremental || true
|
||||
export PATH=~/.cargo/bin:${PATH}
|
||||
export RUST_BACKTRACE=1
|
||||
export CARGO_TERM_COLOR=always
|
||||
# Avoid filling disk space
|
||||
export RUSTFLAGS="-C strip=symbols"
|
||||
# Use cargo test since nextest might not support OpenBSD
|
||||
if (test -z "\$FAULT"); then cargo test --features '${{ matrix.job.features }}' || FAULT=1 ; fi
|
||||
# There is no systemd-logind on OpenBSD, so test all features except feat_systemd_logind
|
||||
@@ -193,7 +213,9 @@ jobs:
|
||||
fi
|
||||
# Test building with make
|
||||
if (test -z "\$FAULT"); then make || FAULT=1 ; fi
|
||||
# Clean to avoid to rsync back the files
|
||||
# Clean to avoid to rsync back the files and free up disk space
|
||||
cargo clean
|
||||
# Additional cleanup to free disk space
|
||||
rm -rf ~/.cargo/registry/cache ~/.cargo/git/db target/debug/deps target/release/deps || true
|
||||
if (test -n "\$FAULT"); then exit 1 ; fi
|
||||
EOF
|
||||
|
||||
@@ -3,6 +3,8 @@ aarch
|
||||
AIX
|
||||
ASLR # address space layout randomization
|
||||
AST # abstract syntax tree
|
||||
CATN # busybox cat -n feature flag
|
||||
CATV # busybox cat -v feature flag
|
||||
CICD # continuous integration/deployment
|
||||
CPU
|
||||
CPUs
|
||||
|
||||
+12
@@ -1,4 +1,6 @@
|
||||
AFAICT
|
||||
asimd
|
||||
ASIMD
|
||||
alloc
|
||||
arity
|
||||
autogenerate
|
||||
@@ -71,11 +73,13 @@ hardlink
|
||||
hardlinks
|
||||
hasher
|
||||
hashsums
|
||||
hwcaps
|
||||
infile
|
||||
iflag
|
||||
iflags
|
||||
kibi
|
||||
kibibytes
|
||||
langinfo
|
||||
libacl
|
||||
lcase
|
||||
listxattr
|
||||
@@ -96,6 +100,7 @@ nocache
|
||||
nocreat
|
||||
noctty
|
||||
noerror
|
||||
noexec
|
||||
nofollow
|
||||
nolinks
|
||||
nonblock
|
||||
@@ -129,6 +134,7 @@ semiprimes
|
||||
setcap
|
||||
setfacl
|
||||
setfattr
|
||||
setlocale
|
||||
shortcode
|
||||
shortcodes
|
||||
siginfo
|
||||
@@ -147,6 +153,8 @@ tokenize
|
||||
toolchain
|
||||
totalram
|
||||
truthy
|
||||
tunables
|
||||
TUNABLES
|
||||
ucase
|
||||
unbuffered
|
||||
udeps
|
||||
@@ -163,6 +171,8 @@ xattrs
|
||||
xpass
|
||||
|
||||
# * abbreviations
|
||||
AMPM
|
||||
ampm
|
||||
consts
|
||||
deps
|
||||
dev
|
||||
@@ -198,6 +208,8 @@ PCLMUL
|
||||
pclmul
|
||||
PCLMULQDQ
|
||||
pclmulqdq
|
||||
PMULL
|
||||
pmull
|
||||
TUNABLES
|
||||
tunables
|
||||
VMULL
|
||||
|
||||
@@ -364,6 +364,22 @@ getcwd
|
||||
weblate
|
||||
algs
|
||||
|
||||
# * stty terminal flags
|
||||
brkint
|
||||
cstopb
|
||||
decctlq
|
||||
echoctl
|
||||
echoe
|
||||
echoke
|
||||
ignbrk
|
||||
ignpar
|
||||
icrnl
|
||||
isig
|
||||
istrip
|
||||
litout
|
||||
opost
|
||||
parodd
|
||||
|
||||
# translation tests
|
||||
CLICOLOR
|
||||
erreur
|
||||
|
||||
+3
-1
@@ -45,7 +45,8 @@ crates is as follows:
|
||||
- `Cargo.toml`
|
||||
- `src/main.rs`: contains only a single macro call
|
||||
- `src/<util name>.rs`: the actual code for the utility
|
||||
- `<util name>.md`: the documentation for the utility
|
||||
- `locales/en-US.ftl`: the util's strings
|
||||
- `locales/fr-FR.ftl`: French translation of the util's strings
|
||||
|
||||
We have separated repositories for crates that we maintain but also publish for
|
||||
use by others:
|
||||
@@ -86,6 +87,7 @@ are some tips for writing good issues:
|
||||
- What platform are you on?
|
||||
- Provide a way to reliably reproduce the issue.
|
||||
- Be as specific as possible!
|
||||
- Please provide the output with LANG=C, except for locale-related bugs.
|
||||
|
||||
### Writing Documentation
|
||||
|
||||
|
||||
Generated
+31
-32
@@ -145,9 +145,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "bigdecimal"
|
||||
version = "0.4.9"
|
||||
version = "0.4.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "560f42649de9fa436b73517378a147ec21f6c997a546581df4b4b31677828934"
|
||||
checksum = "4d6867f1565b3aad85681f1015055b087fcfd840d6aeee6eee7f2da317603695"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"libm",
|
||||
@@ -367,9 +367,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "clap_complete"
|
||||
version = "4.5.61"
|
||||
version = "4.5.62"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "39615915e2ece2550c0149addac32fb5bd312c657f43845bb9088cb9c8a7c992"
|
||||
checksum = "004eef6b14ce34759aa7de4aea3217e368f463f46a3ed3764ca4b5a4404003b4"
|
||||
dependencies = [
|
||||
"clap",
|
||||
]
|
||||
@@ -392,9 +392,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codspeed"
|
||||
version = "4.1.0"
|
||||
version = "4.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c3b847e05a34be5c38f3f2a5052178a3bd32e6b5702f3ea775efde95c483a539"
|
||||
checksum = "eb56923193c76a0e5b6b17b2c2bb1e151ef8a5e06b557e1cbe38c6db467763f9"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"cc",
|
||||
@@ -410,9 +410,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codspeed-divan-compat"
|
||||
version = "4.1.0"
|
||||
version = "4.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f0f0e9fe5eaa39995ec35e46407f7154346cc25bd1300c64c21636f3d00cb2cc"
|
||||
checksum = "7558ff5740fbc26a5fc55c4934cfed94dfccee76abc17b57ecf5d0bee3592b5e"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"codspeed",
|
||||
@@ -423,9 +423,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codspeed-divan-compat-macros"
|
||||
version = "4.1.0"
|
||||
version = "4.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "88c8babf2a40fd2206a2e030cf020d0d58144cd56e1dc408bfba02cdefb08b4f"
|
||||
checksum = "8de343ca0a4fbaabbd3422941fdee24407d00e2fa686a96021c21a78ab2bb895"
|
||||
dependencies = [
|
||||
"divan-macros",
|
||||
"itertools 0.14.0",
|
||||
@@ -437,9 +437,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codspeed-divan-compat-walltime"
|
||||
version = "4.1.0"
|
||||
version = "4.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7f26092328e12a36704ffc552f379c6405dd94d3149970b79b22d371717c2aae"
|
||||
checksum = "9d9de586cc7e9752fc232f08e0733c2016122e16065c4adf0c8a8d9e370749ee"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"clap",
|
||||
@@ -699,9 +699,9 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5"
|
||||
|
||||
[[package]]
|
||||
name = "crc-fast"
|
||||
version = "1.8.0"
|
||||
version = "1.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a2f7c8d397a6353ef0c1d6217ab91b3ddb5431daf57fd013f506b967dcf44458"
|
||||
checksum = "2fd92aca2c6001b1bf5ba0ff84ee74ec8501b52bbef0cac80bf25a6c1d87a83d"
|
||||
dependencies = [
|
||||
"crc",
|
||||
"digest",
|
||||
@@ -1565,9 +1565,9 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
|
||||
|
||||
[[package]]
|
||||
name = "jiff"
|
||||
version = "0.2.16"
|
||||
version = "0.2.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "49cce2b81f2098e7e3efc35bc2e0a6b7abec9d34128283d7a26fa8f32a6dbb35"
|
||||
checksum = "a87d9b8105c23642f50cbbae03d1f75d8422c5cb98ce7ee9271f7ff7505be6b8"
|
||||
dependencies = [
|
||||
"jiff-static",
|
||||
"jiff-tzdb-platform",
|
||||
@@ -1580,9 +1580,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "jiff-static"
|
||||
version = "0.2.16"
|
||||
version = "0.2.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69"
|
||||
checksum = "b787bebb543f8969132630c51fd0afab173a86c6abae56ff3b9e5e3e3f9f6e58"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -1699,9 +1699,9 @@ checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
|
||||
|
||||
[[package]]
|
||||
name = "linux-raw-sys"
|
||||
version = "0.12.0"
|
||||
version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b83b49c75b50cb715b09d337b045481493a8ada2bb3e872f2bae71db45b27696"
|
||||
checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
|
||||
|
||||
[[package]]
|
||||
name = "litemap"
|
||||
@@ -1801,14 +1801,14 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "mio"
|
||||
version = "1.0.4"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c"
|
||||
checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"log",
|
||||
"wasi 0.11.1+wasi-snapshot-preview1",
|
||||
"windows-sys 0.59.0",
|
||||
"windows-sys 0.61.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2179,9 +2179,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.103"
|
||||
version = "1.0.104"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
|
||||
checksum = "9695f8df41bb4f3d222c95a67532365f569318332d03d5f3f67f37b20e6ebdf0"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
@@ -2609,9 +2609,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "signal-hook-mio"
|
||||
version = "0.2.4"
|
||||
version = "0.2.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd"
|
||||
checksum = "b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"mio",
|
||||
@@ -3126,7 +3126,6 @@ dependencies = [
|
||||
"clap",
|
||||
"codspeed-divan-compat",
|
||||
"fluent",
|
||||
"hex",
|
||||
"tempfile",
|
||||
"uucore",
|
||||
]
|
||||
@@ -3151,7 +3150,7 @@ dependencies = [
|
||||
"fluent",
|
||||
"indicatif",
|
||||
"libc",
|
||||
"linux-raw-sys 0.12.0",
|
||||
"linux-raw-sys 0.12.1",
|
||||
"selinux",
|
||||
"tempfile",
|
||||
"thiserror 2.0.17",
|
||||
@@ -3191,7 +3190,7 @@ dependencies = [
|
||||
"clap",
|
||||
"fluent",
|
||||
"jiff",
|
||||
"libc",
|
||||
"nix",
|
||||
"parse_datetime",
|
||||
"uucore",
|
||||
"windows-sys 0.61.2",
|
||||
@@ -4815,9 +4814,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "zip"
|
||||
version = "6.0.0"
|
||||
version = "7.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "eb2a05c7c36fde6c09b08576c9f7fb4cda705990f73b58fe011abf7dfb24168b"
|
||||
checksum = "bdd8a47718a4ee5fe78e07667cd36f3de80e7c2bfe727c7074245ffc7303c037"
|
||||
dependencies = [
|
||||
"arbitrary",
|
||||
"crc32fast",
|
||||
|
||||
+5
-6
@@ -65,6 +65,10 @@ feat_selinux = [
|
||||
"selinux",
|
||||
"stat/selinux",
|
||||
]
|
||||
# "feat_smack" == enable support for SMACK Security Context (by using `--features feat_smack`)
|
||||
# NOTE:
|
||||
# * Running a uutils compiled with `feat_smack` requires a SMACK enabled Kernel at run time.
|
||||
feat_smack = ["ls/smack"]
|
||||
##
|
||||
## feature sets
|
||||
## (common/core and Tier1) feature sets
|
||||
@@ -379,7 +383,7 @@ walkdir = "2.5"
|
||||
winapi-util = "0.1.8"
|
||||
windows-sys = { version = "0.61.0", default-features = false }
|
||||
xattr = "1.3.1"
|
||||
zip = { version = "6.0.0", default-features = false, features = ["deflate"] }
|
||||
zip = { version = "7.0.0", default-features = false, features = ["deflate"] }
|
||||
|
||||
hex = "0.4.3"
|
||||
md-5 = "0.10.6"
|
||||
@@ -666,12 +670,7 @@ should_panic_without_expect = "allow" # 2
|
||||
|
||||
doc_markdown = "allow"
|
||||
unused_self = "allow"
|
||||
map_unwrap_or = "allow"
|
||||
enum_glob_use = "allow"
|
||||
ptr_cast_constness = "allow"
|
||||
borrow_as_ptr = "allow"
|
||||
ptr_as_ptr = "allow"
|
||||
needless_raw_string_hashes = "allow"
|
||||
unreadable_literal = "allow"
|
||||
unnested_or_patterns = "allow"
|
||||
implicit_hasher = "allow"
|
||||
|
||||
@@ -244,8 +244,6 @@ DEBUG=1 bash util/run-gnu-test.sh tests/misc/sm3sum.pl
|
||||
|
||||
***Tip:*** First time you run `bash util/build-gnu.sh` command, it will provide instructions on how to checkout GNU coreutils repository at the correct release tag. Please follow those instructions and when done, run `bash util/build-gnu.sh` command again.
|
||||
|
||||
Note that GNU test suite relies on individual utilities (not the multicall binary).
|
||||
|
||||
You also need to install [quilt](https://savannah.nongnu.org/projects/quilt), a tool used to manage a stack of patches for modifying GNU tests.
|
||||
|
||||
On FreeBSD, you need to install packages for GNU coreutils and sed (used in shell scripts instead of system commands):
|
||||
|
||||
+13
-9
@@ -27,20 +27,20 @@ CARGO ?= cargo
|
||||
CARGOFLAGS ?=
|
||||
RUSTC_ARCH ?= # should be empty except for cross-build, not --target $(shell rustc --print host-tuple)
|
||||
|
||||
#prefix prepended to all binaries and library dir
|
||||
PROG_PREFIX ?=
|
||||
|
||||
# Install directories
|
||||
PREFIX ?= /usr/local
|
||||
DESTDIR ?=
|
||||
BINDIR ?= $(PREFIX)/bin
|
||||
DATAROOTDIR ?= $(PREFIX)/share
|
||||
LIBSTDBUF_DIR ?= $(PREFIX)/libexec/coreutils
|
||||
LIBSTDBUF_DIR ?= $(PREFIX)/libexec/$(PROG_PREFIX)coreutils
|
||||
# Export variable so that it is used during the build
|
||||
export LIBSTDBUF_DIR
|
||||
|
||||
INSTALLDIR_BIN=$(DESTDIR)$(BINDIR)
|
||||
|
||||
#prefix to apply to coreutils binary and all tool binaries
|
||||
PROG_PREFIX ?=
|
||||
|
||||
# This won't support any directory with spaces in its name, but you can just
|
||||
# make a symlink without spaces that points to the directory.
|
||||
BASEDIR ?= $(shell pwd)
|
||||
@@ -62,15 +62,15 @@ TOYBOX_SRC := $(TOYBOX_ROOT)/toybox-$(TOYBOX_VER)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
# Detect the host system.
|
||||
# On Windows the environment already sets OS = Windows_NT.
|
||||
# On Windows uname -s might return MINGW_NT-* or CYGWIN_NT-*.
|
||||
# Otherwise let it default to the kernel name returned by uname -s
|
||||
# (Linux, Darwin, FreeBSD, …).
|
||||
#------------------------------------------------------------------------
|
||||
OS ?= $(shell uname -s)
|
||||
OS := $(shell uname -s)
|
||||
|
||||
# Windows does not allow symlink by default.
|
||||
# Allow to override LN for AppArmor.
|
||||
ifeq ($(OS),Windows_NT)
|
||||
ifneq (,$(findstring _NT,$(OS)))
|
||||
LN ?= ln -f
|
||||
endif
|
||||
LN ?= ln -sf
|
||||
@@ -195,7 +195,7 @@ HASHSUM_PROGS := \
|
||||
|
||||
$(info Detected OS = $(OS))
|
||||
|
||||
ifneq ($(OS),Windows_NT)
|
||||
ifeq (,$(findstring MINGW,$(OS)))
|
||||
PROGS += $(UNIX_PROGS)
|
||||
endif
|
||||
ifeq ($(SELINUX_ENABLED),1)
|
||||
@@ -450,8 +450,12 @@ install: build install-manpages install-completions install-locales
|
||||
mkdir -p $(INSTALLDIR_BIN)
|
||||
ifneq (,$(and $(findstring stdbuf,$(UTILS)),$(findstring feat_external_libstdbuf,$(CARGOFLAGS))))
|
||||
mkdir -p $(DESTDIR)$(LIBSTDBUF_DIR)
|
||||
ifneq (,$(findstring CYGWIN,$(OS)))
|
||||
$(INSTALL) -m 755 $(BUILDDIR)/deps/stdbuf.dll $(DESTDIR)$(LIBSTDBUF_DIR)/libstdbuf.dll
|
||||
else
|
||||
$(INSTALL) -m 755 $(BUILDDIR)/deps/libstdbuf.* $(DESTDIR)$(LIBSTDBUF_DIR)/
|
||||
endif
|
||||
endif
|
||||
ifeq (${MULTICALL}, y)
|
||||
$(INSTALL) -m 755 $(BUILDDIR)/coreutils $(INSTALLDIR_BIN)/$(PROG_PREFIX)coreutils
|
||||
$(foreach prog, $(filter-out coreutils, $(INSTALLEES)), \
|
||||
@@ -472,7 +476,7 @@ else
|
||||
endif
|
||||
|
||||
uninstall:
|
||||
ifneq ($(OS),Windows_NT)
|
||||
ifeq (,$(findstring MINGW,$(OS)))
|
||||
rm -f $(DESTDIR)$(LIBSTDBUF_DIR)/libstdbuf.*
|
||||
-rm -d $(DESTDIR)$(LIBSTDBUF_DIR) 2>/dev/null || true
|
||||
endif
|
||||
|
||||
@@ -29,12 +29,8 @@ options might be missing or different behavior might be experienced.
|
||||
|
||||
<div class="oranda-hide">
|
||||
|
||||
To install it:
|
||||
|
||||
```shell
|
||||
cargo install coreutils
|
||||
~/.cargo/bin/coreutils
|
||||
```
|
||||
We provide prebuilt binaries at https://github.com/uutils/coreutils/releases/latest .
|
||||
It is recommended to install from main branch if you install from source.
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@@ -190,10 +190,6 @@ Similar to the proc-ps implementation and unlike GNU/Coreutils, `uptime` provide
|
||||
|
||||
Just like on macOS, `base32/base64/basenc` provides `-D` to decode data.
|
||||
|
||||
## `shred`
|
||||
|
||||
The number of random passes is deterministic in both GNU and uutils. However, uutils `shred` computes the number of random passes in a simplified way, specifically `max(3, x / 10)`, which is very close but not identical to the number of random passes that GNU would do. This also satisfies an expectation that reasonable users might have, namely that the number of random passes increases monotonically with the number of passes overall; GNU `shred` violates this assumption.
|
||||
|
||||
## `unexpand`
|
||||
|
||||
GNU `unexpand` provides `--first-only` to convert only leading sequences of blanks. We support a
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user