* chore: cleanup workspace crates
* properly add all crates to the workspace cargo.toml as members
* except `fuzz` because it still has some issues, TBD
* use quotes around `true` and `false` to ensure there is no bool confusion
* remove a few leftover readme comments
* mark all unpublishable crates as `publish = false` to avoid accidental publishing
* Add `uutests` to the main workspace
* grammar
* a bit more cleanup based on feedback
* revert true/false
* Update tests/benches/factor dependencies
* cat: Check if a file can be overwritten safely in Unix
* cat: Check if a file can be overwritten safely in Windows
* cat: Test writing read-write file that is input and output
* cat: Unit test `is_appending` function
* cat: Unit test `is_unsafe_overwrite` function
* cat: Comment why a few function calls could return Err
* cat: Remove obvious comments from test
* reworked arg processing. control character mappings are correctly grouped now, ie 'stty erase ^H'
* stty: setting control chars to undefined (disabling them) is implemented
* setting control chars
* stty: can now set control chars. need to improve checks on valid mappings
* stty: matches GNU in what control character mappings are allowed
* stty: run rustfmt and remove extra comments
* stty: setting control char code review fixes
* stty: fix rustfmt errors
* stty: more small edits after review
* stty: refactor set control char changes for better testing
* stty: fix ci error
* stty: fix issues from code review
* Fix linting and style issues
* Change condition to not fail for dangling symlinks
The function `move_files_into_dir` had a condition that failed when a
dangling symlink was moved into a folder, which resulted in a file
or directory doesn't exist error
* Added a test case
Summary:
Partial fix for https://github.com/uutils/coreutils/issues/6591
The current code declare libstdbuf as a build-dependency of stdbuf as a
workaround to enforce that libstdbuf is compiled before stdbuf. This breaks
cross-compilation, because build-dependencies were compiled for the host
architecture, and not for the target architecture.
The reason this workaround is necessary is that bindeps is available only in nightly at the moment:
https://rust-lang.github.io/rfcs/3028-cargo-binary-dependencies.html
This commit replaces the "build-dependency" workaround with another workaround:
calling cargo manually to build libstdbuf in the build.rs of stdbuf, in order to ensure that libstdbuf is built before stdbuf.
Changes:
- Removed cpp/cpp_build dependencies:
The cpp, cpp_build, and related dependencies were removed because they made cross-compilation in a build.rs file very complex, since you need
to pass proper CXX env variables for cross-compilation, whereas cross-compiling rust code using cargo is quite simple.
Provided Rust implementations for getting stdin, stdout, and stderr pointers.
Switched from C++/cpp macro-based initialization to using the Rust ctor crate for library initialization.
- Remove "feat_require_crate_cpp" which is not needed any more, since stdbuf was the only utility using the cpp crate.
Tests:
This commit fixes e.g. this test:
cross test --target aarch64-unknown-linux-gnu --features stdbuf test_stdbuf::test_libstdbuf_preload -- --nocapture
- The "i686" build of stdbuf was also broken (stdbuf 32 bits, but libstdbuf 64 bits) and test_stdbuf::test_libstdbuf_preload of the i686 builds in github CI serves as regression
test for this issue, no need to add a cross-rs test for aarch64.
- The x86_64 musl build of stdbuf was also broken and was passing tests in CI only because it was compiled with the wrong libc (glibc instead of musl)
Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
This test verifies that libstdbuf correctly gets preloaded, and that there are no architecture mismatch errors.
At the moment the test passes when compiled normally, but fails when compiled with cross-rs, due to https://github.com/uutils/coreutils/issues/6591
This passes:
```
cargo test --features stdbuf test_stdbuf::test_libstdbuf_preload -- --nocapture
```
This fails:
```
cross test --target aarch64-unknown-linux-gnu --features stdbuf test_stdbuf::test_libstdbuf_preload -- --nocapture
```
Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
It seems these files were missed by CI. Command to run cargo fmt on
absolutely *everything* (and possibly too much)
find tests -name "*.rs" -print0 | xargs -0 cargo fmt --