Compare commits
1 Commits
master
...
ca7be6a025
| Author | SHA1 | Date | |
|---|---|---|---|
| ca7be6a025 |
@ -16,11 +16,8 @@ pub fn install(repo: &String, pkgname: &String) {
|
|||||||
let pkg_dir = crate::commands::get_aeropkg_base().join(repo).join(pkgname);
|
let pkg_dir = crate::commands::get_aeropkg_base().join(repo).join(pkgname);
|
||||||
let pkg_md_path = &crate::commands::get_aeropkg_var().join(format!("{}/{}.md", repo, pkgname));
|
let pkg_md_path = &crate::commands::get_aeropkg_var().join(format!("{}/{}.md", repo, pkgname));
|
||||||
let builded_pkg_md_path = &crate::commands::get_aeropkg_base().join(repo).join(pkgname).join("build-script.md");
|
let builded_pkg_md_path = &crate::commands::get_aeropkg_base().join(repo).join(pkgname).join("build-script.md");
|
||||||
|
if builded_pkg_md_path.exists() {
|
||||||
if builded_pkg_md_path.exists() && same_inode(&builded_pkg_md_path, pkg_md_path) {
|
if fs::metadata(builded_pkg_md_path).unwrap().ino() == fs::metadata(pkg_md_path).unwrap().ino() { return }
|
||||||
sync_pkgdata(repo, pkgname, &pkg_dir);
|
|
||||||
if !pkg_dir.join("disabled").exists() { link(repo, pkgname) }
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
check_build_dependency(repo, pkg_md_path);
|
check_build_dependency(repo, pkg_md_path);
|
||||||
@ -40,8 +37,11 @@ pub fn install(repo: &String, pkgname: &String) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
config(repo, pkgname);
|
config(repo, pkgname);
|
||||||
|
let pkgdata = crate::commands::get_aeropkg_var().join(repo).join(pkgname).join(".pkgdata");
|
||||||
sync_pkgdata(repo, pkgname, &pkg_dir);
|
if pkgdata.exists() {
|
||||||
|
let status = Command::new("cp").args(["-rPlf", &format!("{}/.", pkgdata.to_string_lossy()), &pkg_dir.to_string_lossy()]).status();
|
||||||
|
if let Err(e) = status { eprintln!("Warning: failed to copy .pkgdata for {}/{}: {}", repo, pkgname, e) }
|
||||||
|
}
|
||||||
|
|
||||||
if !pkg_dir.join("disabled").exists() { link(repo, pkgname) }
|
if !pkg_dir.join("disabled").exists() { link(repo, pkgname) }
|
||||||
let full_env = &get_custom_env(repo, pkgname, pkg_md_path);
|
let full_env = &get_custom_env(repo, pkgname, pkg_md_path);
|
||||||
@ -49,25 +49,6 @@ pub fn install(repo: &String, pkgname: &String) {
|
|||||||
shell::run_install_hook_script(full_env);
|
shell::run_install_hook_script(full_env);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn sync_pkgdata(repo: &String, pkgname: &String, pkg_dir: &Path) {
|
|
||||||
let pkgdata = crate::commands::get_aeropkg_var().join(repo).join(pkgname).join(".pkgdata");
|
|
||||||
if pkgdata.exists() {
|
|
||||||
let status = Command::new("cp")
|
|
||||||
.args(["-rPlf", &format!("{}/.", pkgdata.to_string_lossy()), &pkg_dir.to_string_lossy()])
|
|
||||||
.status();
|
|
||||||
if let Err(e) = status {
|
|
||||||
eprintln!("Warning: failed to copy .pkgdata for {}/{}: {}", repo, pkgname, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn same_inode(a: &Path, b: &Path) -> bool {
|
|
||||||
match (fs::metadata(a), fs::metadata(b)) {
|
|
||||||
(Ok(ma), Ok(mb)) => ma.ino() == mb.ino(),
|
|
||||||
_ => false,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn update_built_link(src: &std::path::Path, dest: &std::path::Path) {
|
fn update_built_link(src: &std::path::Path, dest: &std::path::Path) {
|
||||||
let _ = fs::remove_file(dest);
|
let _ = fs::remove_file(dest);
|
||||||
if let Err(e) = fs::hard_link(src, dest) {
|
if let Err(e) = fs::hard_link(src, dest) {
|
||||||
|
|||||||
Reference in New Issue
Block a user