Skip to content

support chdir#692

Open
CvvT wants to merge 1 commit intomainfrom
weiteng/support_chdir
Open

support chdir#692
CvvT wants to merge 1 commit intomainfrom
weiteng/support_chdir

Conversation

@CvvT
Copy link
Contributor

@CvvT CvvT commented Feb 28, 2026

LiteBox's fs does not support changing current working directory. Add support for chdir in litebox_shim_linux and ensure always passing absolute path to LiteBox.

@CvvT CvvT marked this pull request as ready for review February 28, 2026 23:18
@github-actions
Copy link

🤖 SemverChecks 🤖 ⚠️ Potential breaking API changes detected ⚠️

Click for details
--- failure enum_no_repr_variant_discriminant_changed: enum variant had its discriminant change value ---

Description:
The enum's variant had its discriminant value change. This breaks downstream code that used its value via a numeric cast like `as isize`.
        ref: https://doc.rust-lang.org/reference/items/enumerations.html#assigning-discriminant-values
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/enum_no_repr_variant_discriminant_changed.ron

Failed in:
  variant SyscallRequest::Mmap 10 -> 11 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1878
  variant SyscallRequest::Mprotect 11 -> 12 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1886
  variant SyscallRequest::Munmap 12 -> 13 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1891
  variant SyscallRequest::Mremap 13 -> 14 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1895
  variant SyscallRequest::Brk 14 -> 15 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1902
  variant SyscallRequest::RtSigprocmask 15 -> 16 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1905
  variant SyscallRequest::RtSigaction 16 -> 17 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1911
  variant SyscallRequest::RtSigreturn 17 -> 18 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1917
  variant SyscallRequest::Kill 18 -> 19 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1920
  variant SyscallRequest::Tkill 19 -> 20 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1924
  variant SyscallRequest::Tgkill 20 -> 21 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1928
  variant SyscallRequest::Sigaltstack 21 -> 22 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1933
  variant SyscallRequest::Ioctl 22 -> 23 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1937
  variant SyscallRequest::Pread64 23 -> 24 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1941
  variant SyscallRequest::Pwrite64 24 -> 25 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1947
  variant SyscallRequest::Readv 25 -> 26 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1953
  variant SyscallRequest::Writev 26 -> 27 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1958
  variant SyscallRequest::Access 27 -> 28 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1963
  variant SyscallRequest::Madvise 28 -> 29 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1967
  variant SyscallRequest::Dup 29 -> 30 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1972
  variant SyscallRequest::Socket 30 -> 31 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1977
  variant SyscallRequest::Socketpair 31 -> 32 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1987
  variant SyscallRequest::Connect 32 -> 33 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1993
  variant SyscallRequest::Accept 33 -> 34 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:1998
  variant SyscallRequest::Sendto 34 -> 35 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2004
  variant SyscallRequest::Sendmsg 35 -> 36 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2012
  variant SyscallRequest::Recvfrom 36 -> 37 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2017
  variant SyscallRequest::Bind 37 -> 38 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2025
  variant SyscallRequest::Listen 38 -> 39 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2030
  variant SyscallRequest::Setsockopt 39 -> 40 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2034
  variant SyscallRequest::Getsockopt 40 -> 41 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2041
  variant SyscallRequest::Getsockname 41 -> 42 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2048
  variant SyscallRequest::Getpeername 42 -> 43 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2053
  variant SyscallRequest::Uname 43 -> 44 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2058
  variant SyscallRequest::Fcntl 44 -> 45 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2061
  variant SyscallRequest::Getcwd 45 -> 46 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2065
  variant SyscallRequest::EpollCtl 46 -> 47 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2069
  variant SyscallRequest::EpollPwait 47 -> 48 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2075
  variant SyscallRequest::EpollCreate 48 -> 49 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2083
  variant SyscallRequest::Ppoll 49 -> 50 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2087
  variant SyscallRequest::Pselect 50 -> 51 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2094
  variant SyscallRequest::ArchPrctl 51 -> 52 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2102
  variant SyscallRequest::Readlink 52 -> 53 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2105
  variant SyscallRequest::Readlinkat 53 -> 54 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2110
  variant SyscallRequest::Openat 54 -> 55 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2116
  variant SyscallRequest::Ftruncate 55 -> 56 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2122
  variant SyscallRequest::Unlinkat 56 -> 57 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2126
  variant SyscallRequest::Newfstatat 57 -> 58 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2132
  variant SyscallRequest::Eventfd2 58 -> 59 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2145
  variant SyscallRequest::Pipe2 59 -> 60 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2149
  variant SyscallRequest::Clone 60 -> 61 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2153
  variant SyscallRequest::Clone3 61 -> 62 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2156
  variant SyscallRequest::SetThreadArea 62 -> 63 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2161
  variant SyscallRequest::ClockGettime 63 -> 64 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2164
  variant SyscallRequest::ClockGetres 64 -> 65 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2168
  variant SyscallRequest::ClockNanosleep 65 -> 66 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2172
  variant SyscallRequest::Gettimeofday 66 -> 67 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2178
  variant SyscallRequest::Time 67 -> 68 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2182
  variant SyscallRequest::Getrlimit 68 -> 69 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2185
  variant SyscallRequest::Setrlimit 69 -> 70 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2189
  variant SyscallRequest::Prlimit 70 -> 71 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2193
  variant SyscallRequest::SetTidAddress 71 -> 72 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2204
  variant SyscallRequest::Gettid 72 -> 73 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2207
  variant SyscallRequest::SetRobustList 73 -> 74 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2208
  variant SyscallRequest::GetRobustList 74 -> 75 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2211
  variant SyscallRequest::GetRandom 75 -> 76 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2216
  variant SyscallRequest::Getpid 76 -> 77 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2221
  variant SyscallRequest::Getppid 77 -> 78 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2222
  variant SyscallRequest::Getuid 78 -> 79 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2223
  variant SyscallRequest::Geteuid 79 -> 80 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2224
  variant SyscallRequest::Getgid 80 -> 81 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2225
  variant SyscallRequest::Getegid 81 -> 82 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2226
  variant SyscallRequest::Sysinfo 82 -> 83 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2227
  variant SyscallRequest::CapGet 83 -> 84 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2230
  variant SyscallRequest::GetDirent64 84 -> 85 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2234
  variant SyscallRequest::SchedGetAffinity 85 -> 86 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2239
  variant SyscallRequest::SchedYield 86 -> 87 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2244
  variant SyscallRequest::Futex 87 -> 88 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2245
  variant SyscallRequest::Execve 88 -> 89 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2248
  variant SyscallRequest::Umask 89 -> 90 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2253
  variant SyscallRequest::Prctl 90 -> 91 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2256
  variant SyscallRequest::Alarm 91 -> 92 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2259
  variant SyscallRequest::SetITimer 92 -> 93 in /home/runner/work/litebox/litebox/litebox_common_linux/src/lib.rs:2262

Copy link
Member

@wdcui wdcui left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Just a style comment below.

}

let fs_path = FsPath::new(dirfd, pathname)?;
let fs_path = FsPath::new(dirfd, pathname, || self.fs.borrow().cwd.read().clone())?;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: should we be consistent with the code above: either define get_cwd closure or not?

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.

2 participants