user: enable dyn-loader

This commit is contained in:
Mark Poliakov 2024-11-06 20:58:31 +02:00
parent c71984e83e
commit cdf9243962
4 changed files with 27 additions and 15 deletions

9
userspace/Cargo.lock generated
View File

@ -371,6 +371,15 @@ dependencies = [
"crypto-common",
]
[[package]]
name = "dyn-loader"
version = "0.1.0"
dependencies = [
"elf",
"thiserror",
"yggdrasil-rt",
]
[[package]]
name = "ed25519"
version = "2.2.3"

View File

@ -12,7 +12,7 @@ members = [
"lib/libterm",
"netutils",
"netutils",
# "dyn-loader",
"dyn-loader",
"rdb",
"lib/yasync",
"rsh",

View File

@ -8,3 +8,6 @@ yggdrasil-rt.workspace = true
thiserror.workspace = true
elf = "0.7.4"
[lints.rust]
unexpected_cfgs = { level = "allow", check-cfg = ['cfg(rust_analyzer)'] }

View File

@ -54,13 +54,13 @@ const PROGRAMS: &[(&str, &str)] = &[
("rshd", "sbin/rshd"),
// crypt
("crypt", "bin/crypt"),
// ("dyn-loader", "libexec/dyn-loader"),
("dyn-loader", "libexec/dyn-loader"),
];
fn build_userspace(env: &BuildEnv, _: AllOk) -> Result<(), Error> {
log::info!("Building userspace");
CargoBuilder::Userspace(env).build(env.workspace_root.join("userspace"))?;
//CargoBuilder::Userspace(env).build(env.workspace_root.join("userspace/dynload-program"))?;
CargoBuilder::Userspace(env).build(env.workspace_root.join("userspace/dynload-program"))?;
Ok(())
}
@ -101,18 +101,18 @@ fn build_rootfs<S: AsRef<Path>, D: AsRef<Path>>(
// TODO this is a temporary hack
fs::create_dir_all(rootfs_dir.join("lib"))?;
// util::copy_file(
// env.workspace_root.join(format!(
// "userspace/dynload-program/target/{}-unknown-yggdrasil/{}/dynload-program",
// env.arch.name(),
// env.profile.name()
// )),
// rootfs_dir.join("dynload-program"),
// )?;
// util::copy_file(format!(
// "/home/alnyan/build/ygg/toolchain/build/host/stage1-std/{}-unknown-yggdrasil/release/libstd.so",
// env.arch.name()
// ), rootfs_dir.join("lib/libstd.so"))?;
util::copy_file(
env.workspace_root.join(format!(
"userspace/dynload-program/target/{}-unknown-yggdrasil/{}/dynload-program",
env.arch.name(),
env.profile.name()
)),
rootfs_dir.join("dynload-program"),
)?;
util::copy_file(format!(
"/home/alnyan/build/ygg/toolchain/build/host/stage1-std/{}-unknown-yggdrasil/release/libstd.so",
env.arch.name()
), rootfs_dir.join("lib/libstd.so"))?;
log::info!("Installing extras");
for (src, dst) in install_extra {