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_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");
|
||||
|
||||
if builded_pkg_md_path.exists() && same_inode(&builded_pkg_md_path, pkg_md_path) {
|
||||
sync_pkgdata(repo, pkgname, &pkg_dir);
|
||||
if !pkg_dir.join("disabled").exists() { link(repo, pkgname) }
|
||||
return;
|
||||
if builded_pkg_md_path.exists() {
|
||||
if fs::metadata(builded_pkg_md_path).unwrap().ino() == fs::metadata(pkg_md_path).unwrap().ino() { return }
|
||||
}
|
||||
|
||||
check_build_dependency(repo, pkg_md_path);
|
||||
@ -40,8 +37,11 @@ pub fn install(repo: &String, pkgname: &String) {
|
||||
}
|
||||
};
|
||||
config(repo, pkgname);
|
||||
|
||||
sync_pkgdata(repo, pkgname, &pkg_dir);
|
||||
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) }
|
||||
}
|
||||
|
||||
if !pkg_dir.join("disabled").exists() { link(repo, pkgname) }
|
||||
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);
|
||||
}
|
||||
|
||||
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) {
|
||||
let _ = fs::remove_file(dest);
|
||||
if let Err(e) = fs::hard_link(src, dest) {
|
||||
|
||||
Reference in New Issue
Block a user