diff --git a/.gitmodules b/.gitmodules index 0a49a33..5d13505 100644 --- a/.gitmodules +++ b/.gitmodules @@ -13,3 +13,6 @@ [submodule "openlibm"] path = openlibm url = https://github.com/JuliaLang/openlibm.git +[submodule "programs/coreutils"] + path = programs/coreutils + url = https://github.com/redox-os/coreutils.git diff --git a/Makefile b/Makefile index 22abd77..a621b82 100644 --- a/Makefile +++ b/Makefile @@ -145,12 +145,26 @@ initfs/bin/%: programs/%/Cargo.toml programs/%/src/** $(BUILD)/libstd.rlib strip $@ rm $@.d +initfs/bin/%: programs/coreutils/Cargo.toml programs/coreutils/src/bin/%.rs $(BUILD)/libstd.rlib + mkdir -p initfs/bin + $(CARGO) rustc --manifest-path $< --bin $* $(CARGOFLAGS) -o $@ + strip $@ + rm $@.d + initfs/bin/%: schemes/%/Cargo.toml schemes/%/src/** $(BUILD)/libstd.rlib mkdir -p initfs/bin $(CARGO) rustc --manifest-path $< $(CARGOFLAGS) -o $@ strip $@ rm $@.d +coreutils: \ + initfs/bin/cat \ + initfs/bin/echo \ + initfs/bin/env \ + initfs/bin/ls \ + initfs/bin/printenv \ + initfs/bin/pwd + $(BUILD)/initfs.rs: \ initfs/bin/pcid \ initfs/bin/ps2d \ @@ -158,6 +172,7 @@ $(BUILD)/initfs.rs: \ initfs/bin/init \ initfs/bin/ion \ initfs/bin/login \ + coreutils \ initfs/bin/example echo 'use collections::BTreeMap;' > $@ echo 'pub fn gen() -> BTreeMap<&'"'"'static [u8], &'"'"'static [u8]> {' >> $@ diff --git a/kernel/lib.rs b/kernel/lib.rs index a2f2129..d7a1fc8 100644 --- a/kernel/lib.rs +++ b/kernel/lib.rs @@ -129,7 +129,7 @@ pub fn cpu_id() -> usize { } pub extern fn userspace_init() { - assert_eq!(syscall::chdir(b"initfs:"), Ok(0)); + assert_eq!(syscall::chdir(b"initfs:bin/"), Ok(0)); assert_eq!(syscall::open(b"debug:", 0), Ok(0)); assert_eq!(syscall::open(b"debug:", 0), Ok(1)); diff --git a/kernel/scheme/env.rs b/kernel/scheme/env.rs index 3f3f1f5..38ca8a8 100644 --- a/kernel/scheme/env.rs +++ b/kernel/scheme/env.rs @@ -22,8 +22,9 @@ impl EnvScheme { pub fn new() -> EnvScheme { let mut files: BTreeMap<&'static [u8], &'static [u8]> = BTreeMap::new(); - files.insert(b"HOME", b"initfs:"); - files.insert(b"PWD", b"initfs:"); + files.insert(b"HOME", b"initfs:bin/"); + files.insert(b"PWD", b"initfs:bin/"); + files.insert(b"PATH", b"initfs:bin/"); files.insert(b"COLUMNS", b"80"); files.insert(b"LINES", b"30"); diff --git a/programs/coreutils b/programs/coreutils new file mode 160000 index 0000000..648a0d1 --- /dev/null +++ b/programs/coreutils @@ -0,0 +1 @@ +Subproject commit 648a0d119aaed8f4cf8c856e05e47da421c4074a diff --git a/programs/ion b/programs/ion index 4d87d44..cbb3c30 160000 --- a/programs/ion +++ b/programs/ion @@ -1 +1 @@ -Subproject commit 4d87d44273ce1a408e833c7bc44312ad30c779ee +Subproject commit cbb3c3003f654d09cd3b3cf1a179469bb1b558b3