0ec7bd46bb
ROLLUP of all Phase 1-3 work on branch 0.3.0, targeting a production-ready console + full graphical desktop under Intel and Virgl/VirtIO-GPU. === Phase 1 — Stability === - fbcond: Enter key handler (scancode 0x1C→\n), display map buffering, control-char filter in all 7 keymaps, write_event assert - build-redbear.sh: auto-rebuild-prefix when fork timestamps are newer than prefix/x86_64-unknown-redox/sysroot (was warning-only). Added configurable REDBEAR_SKIP_PREFIX_REBUILD guard. - build-redbear.sh: set explicit keymap '-K us' in console activation - config/redbear-device-services.toml: remove spurious init.d service files for redbear-acmd/ecmd/usbaudiod. These USB device daemons are spawned dynamically by pcid-spawner, not as boot-time init services. Starting them without args panicked the boot flow. - relibc: grantpt/unlockpt/ptsname (then deduplicated against stdlib) - userutils: cherry-pick upstream getty commit2834434(standard C ptsname/grantpt/unlockpt) - base fork: Russian (ЙЦУКЕН) keymap + inputd control-char filter (K_ESC/K_BKSP/K_ENTER → \0, commit73e44d81in submodule/base) === Phase 2 — Login & Console === - login.rs: restored to 0.2.5-known-good liner-based prompt - redbear-upower: removed tokio full/signal features → protection fault fix - redbear-power: excluded temporarily (being fixed in other session) - tlc version: updated to 0.3.0 === Phase 3 — GPU/3D Drivers (commit0898332f7a) === Intel i915: FULLY implemented — real ring buffer + MMIO command submission via GEM DMA → GGTT → i915 render ring, with hardware head-pointer polling (2M iterations, 50µs backoff). Zero stubs. VirtIO GPU/Virgl (VirtioTransport): 11 VIRTGPU ioctls (GETPARAM, GET_CAPS, RESOURCE_CREATE, RESOURCE_INFO, CONTEXT_INIT, EXECBUFFER, WAIT, TRANSFER_TO_HOST, TRANSFER_FROM_HOST, MAP, CREATE_BLOB) ported from Linux 7.1 virtgpu_ioctl.c and virtgpu_vq.c. - driver.rs: 8 virgl_* trait methods (default Unsupported) - scheme.rs: 11 ioctl constants + 8 wire structures + dispatch - virtio/transport.rs: PCI capability discovery, feature negotiation, control+cursor virtqueue setup, vring descriptor building - virtio/mod.rs: real implementations for all 8 virgl_* methods - intel/mod.rs: explicit virgl Unsupported stubs Other changes from active sessions: Cargo.toml version bumps, linux-kpi headers, libpciaccess recipe, mesa/recipe.toml, kf6 patches, expat, driver-manager, redbear-sessiond, redbear-compositor, cub, tlc, and many other local recipes.
169 lines
4.3 KiB
TOML
169 lines
4.3 KiB
TOML
[package]
|
|
name = "tlc"
|
|
version = "0.3.0"
|
|
edition = "2021"
|
|
description = "Twilight Commander — file manager with ratatui TUI"
|
|
license = "MIT"
|
|
repository = "https://gitea.redbearos.org/vasilito/RedBear-OS"
|
|
|
|
[[bin]]
|
|
name = "tlc"
|
|
path = "src/main.rs"
|
|
|
|
[[bin]]
|
|
name = "tlc-pty-login"
|
|
path = "src/bin/tlc_pty_login.rs"
|
|
|
|
[[bin]]
|
|
name = "tlcedit"
|
|
path = "src/bin/tlcedit.rs"
|
|
|
|
[[bin]]
|
|
name = "tlcview"
|
|
path = "src/bin/tlcview.rs"
|
|
|
|
[lib]
|
|
name = "tlc"
|
|
path = "src/lib.rs"
|
|
|
|
[dependencies]
|
|
# TUI
|
|
ratatui = { version = "0.30", default-features = false, features = ["termion"] }
|
|
termion = "4"
|
|
|
|
# Shared TUI palette
|
|
redbear-tui-theme = { path = "../../../tui/redbear-tui-theme/source", default-features = false }
|
|
|
|
# Text
|
|
unicode-width = "0.2"
|
|
unicode-segmentation = "1"
|
|
unicode-general-category = "1"
|
|
|
|
# Serialization (config files, hotlist, macros)
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
toml = "0.8"
|
|
|
|
# Error handling
|
|
anyhow = "1"
|
|
thiserror = "1"
|
|
rustix = { version = "1.1", features = ["event", "process", "pty", "termios", "fs", "stdio"] }
|
|
libc = "0.2"
|
|
|
|
# CLI parsing
|
|
clap = { version = "4", features = ["derive"] }
|
|
|
|
# Logging
|
|
log = "0.4"
|
|
env_logger = "0.11"
|
|
|
|
# Filesystem
|
|
walkdir = "2"
|
|
same-file = "1"
|
|
tempfile = "3"
|
|
notify = { version = "6", optional = true }
|
|
directories = "5"
|
|
|
|
# SFTP (pure Rust)
|
|
russh = { version = "0.44", optional = true }
|
|
russh-sftp = { version = "2.0.0-beta.5", optional = true }
|
|
russh-keys = { version = "0.44", optional = true }
|
|
|
|
# FTP
|
|
suppaftp = { version = "6", optional = true }
|
|
|
|
# Archive VFS
|
|
tar = { version = "0.4", optional = true }
|
|
zip = { version = "2", default-features = false, optional = true }
|
|
|
|
redox_syscall = { path = "../../../../../local/sources/syscall" }
|
|
|
|
# Syntax highlighting
|
|
syntect = { version = "5", default-features = false, features = ["default-onig", "regex-onig"], optional = true }
|
|
|
|
# Date/time
|
|
chrono = "0.4"
|
|
|
|
# Regex
|
|
regex = "1"
|
|
|
|
# Compression (for viewer's gz/bz2 support)
|
|
flate2 = "1"
|
|
bzip2 = { version = "0.6", optional = true }
|
|
xz2 = { version = "0.1", optional = true }
|
|
|
|
# Memory-mapped file access (for viewer >100 MiB files)
|
|
memmap2 = "0.9"
|
|
|
|
# i18n (optional)
|
|
rust-i18n = { version = "3", optional = true }
|
|
|
|
# Random (for connection IDs)
|
|
rand = "0.8"
|
|
|
|
# Hashing (for file highlight rules)
|
|
sha2 = "0.10"
|
|
|
|
# Bitflags
|
|
bitflags = { version = "2", features = ["serde"] }
|
|
|
|
# Async (optional, for VFS)
|
|
tokio = { version = "1", optional = true, default-features = false }
|
|
async-trait = { version = "0.1", optional = true }
|
|
|
|
|
|
|
|
[features]
|
|
# Each "non-default" feature below is a real, optional capability:
|
|
# - tar/zip enable the archive VFS backends
|
|
# - sftp/ftp enable the remote VFS backends
|
|
# - syntect enable the editor syntax highlighter
|
|
# - i18n enable the rust-i18n catalogue loader
|
|
# - watcher enable filesystem-watcher (notify)
|
|
# - bzip2 enable bzip2 (viewer + tar VFS)
|
|
# - xz2 enable xz (viewer + tar VFS)
|
|
# - async-vfs enable the async VFS dispatcher
|
|
#
|
|
# The default build pulls in everything that has no C build
|
|
# dependency. `syntect` is in defaults because Oniguruma's pure-Rust
|
|
# port (`onig` feature) avoids a C toolchain requirement; if a
|
|
# future default adds a C dep, drop it from `default` and require
|
|
# the user to opt in.
|
|
default = ["tar", "zip", "syntect", "i18n", "watcher"]
|
|
sftp = ["dep:russh", "dep:russh-sftp", "dep:russh-keys", "dep:async-trait", "tokio/net", "tokio/io-util", "tokio/time", "tokio/rt-multi-thread", "tokio/macros"]
|
|
ftp = ["dep:suppaftp"]
|
|
tar = ["dep:tar"]
|
|
zip = ["dep:zip"]
|
|
syntect = ["dep:syntect"]
|
|
i18n = ["rust-i18n"]
|
|
watcher = ["notify"]
|
|
async-vfs = ["dep:tokio", "dep:async-trait", "tokio/net", "tokio/io-util", "tokio/time", "tokio/rt-multi-thread", "tokio/macros"]
|
|
bzip2 = ["dep:bzip2"]
|
|
xz2 = ["dep:xz2"]
|
|
|
|
[dev-dependencies]
|
|
tempfile = "3"
|
|
predicates = "3"
|
|
assert_cmd = "2"
|
|
serde_yaml = "0.9"
|
|
|
|
[target.'cfg(target_os = "redox")'.dependencies]
|
|
libredox = { path = "../../../../../local/sources/libredox" }
|
|
redox_event = "0.4.6"
|
|
redox_syscall = { path = "../../../../../local/sources/syscall", features = ["std"] }
|
|
redox_termios = "0.1.3"
|
|
|
|
[profile.release]
|
|
opt-level = 3
|
|
lto = "fat"
|
|
codegen-units = 1
|
|
strip = true
|
|
panic = "abort"
|
|
|
|
[profile.dev]
|
|
opt-level = 1
|
|
|
|
[patch.crates-io]
|
|
libredox = { path = "../../../../../local/sources/libredox" }
|
|
redox_syscall = { path = "../../../../../local/sources/syscall" }
|