aboutsummaryrefslogtreecommitdiff
path: root/src/spm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/spm.c')
-rw-r--r--src/spm.c40
1 files changed, 13 insertions, 27 deletions
diff --git a/src/spm.c b/src/spm.c
index ff6b415..24147c8 100644
--- a/src/spm.c
+++ b/src/spm.c
@@ -9,8 +9,6 @@ int RUNTIME_INSTALL = 0;
int RUNTIME_ROOTDIR = 0;
int RUNTIME_LIST = 0;
int RUNTIME_SEARCH = 0;
-const int MANIFESTS_MAX = 25;
-int manifests_count = 0;
void usage(const char *program_name) {
printf("usage: %s [-hVvBIrLS]\n"
@@ -31,9 +29,6 @@ int main(int argc, char *argv[], char *arge[]) {
memset(program_name, '\0', sizeof(program_name) + 1);
strcpy(program_name, basename(argv[0]));
- Manifest *manifests[MANIFESTS_MAX];
- memset(manifests, '\0', MANIFESTS_MAX * sizeof(Manifest *));
-
// not much to see here yet
// at the moment this will all be random tests, for better or worse
// everything here is subject to change without notice
@@ -150,6 +145,8 @@ int main(int argc, char *argv[], char *arge[]) {
exit(1);
}
}
+ // Place the default package location at the bottom of the list
+ manifestlist_append(mf, SPM_GLOBAL.package_dir);
// Dump configuration
if (SPM_GLOBAL.verbose) {
@@ -194,17 +191,7 @@ int main(int argc, char *argv[], char *arge[]) {
Dependencies *deps = NULL;
dep_init(&deps);
- printf("Reading package manifest... ");
- Manifest *manifest = manifest_read(manifests[manifests_count]->origin); //manifest_read(NULL);
- if (!manifest) {
- fprintf(stderr, "Package manifest is missing or corrupt\n");
- runtime_free(rt);
- exit(1);
- }
- printf("done\n");
-
printf("Installation root: %s\n", root);
-
printf("Requested packages:\n");
for (size_t i = 0; i < strlist_count(packages); i++) {
printf(" -> %s\n", strlist_item(packages, i));
@@ -242,12 +229,12 @@ int main(int argc, char *argv[], char *arge[]) {
printf("Installing package requirements:\n");
for (size_t i = 0; i < deps->records; i++) {
- printf(" -> %s\n", deps->list[i]);
ManifestPackage *package = manifestlist_search(mf, deps->list[i]);
- char *package_path = join((char *[]) {SPM_GLOBAL.package_dir, package->archive, NULL}, DIRSEPS);
+ printf(" -> %-30s %s\n", deps->list[i], package->origin);
+ char *package_path = join((char *[]) {package->origin, SPM_GLOBAL.repo_target, package->archive, NULL}, DIRSEPS);
if (install(root, package_path) < 0) {
- fprintf(SYSERROR);
+ fprintf(stderr, "Installation failed: %s\n", package_path);
runtime_free(rt);
exit(errno);
}
@@ -263,19 +250,18 @@ int main(int argc, char *argv[], char *arge[]) {
char *package = NULL;
if ((match = manifestlist_search(mf, strlist_item(packages, i))) == NULL) {
- fprintf(SYSERROR);
runtime_free(rt);
exit(1);
}
- package = join((char *[]) {SPM_GLOBAL.package_dir, match->archive, NULL}, DIRSEPS);
+ package = join((char *[]) {match->origin, SPM_GLOBAL.repo_target, match->archive, NULL}, DIRSEPS);
// If the package was installed as a requirement of another dependency, skip it
if (dep_seen(&deps, package)) {
continue;
}
- printf(" -> %s\n", basename(package));
+ printf(" -> %-30s %s\n", basename(package), match->origin);
if (install(root, package) < 0) {
fprintf(SYSERROR);
runtime_free(rt);
@@ -283,7 +269,7 @@ int main(int argc, char *argv[], char *arge[]) {
}
free(package);
}
- manifest_free(manifest);
+ //manifest_free(manifest);
dep_free(&deps);
}
@@ -331,7 +317,7 @@ int main(int argc, char *argv[], char *arge[]) {
int banner_size = 79;
putchar('#');
print_banner("-", banner_size);
- printf("# %-20s %-20s %-20s %-20s\n", "name", "version", "revision", "size");
+ printf("# %-20s %-10s %-10s %-10s %-20s\n", "name", "version", "revision", "size", "origin");
putchar('#');
print_banner("-", banner_size);
@@ -341,15 +327,15 @@ int main(int argc, char *argv[], char *arge[]) {
ManifestPackage **package = find_by_spec(info, name, op, ver);
for (int p = 0; package[p] != NULL; p++) {
char *package_hsize = human_readable_size(package[p]->size);
- printf(" %-20s %-20s %-20s %-20s\n", package[p]->name, package[p]->version, package[p]->revision,
- package_hsize);
+ printf(" %-20s %-10s %-10s %-10s %20s\n", package[p]->name, package[p]->version, package[p]->revision,
+ package_hsize, info->packages[p]->origin);
free(package_hsize);
}
} else if (RUNTIME_LIST) {
for (size_t p = 0; p < info->records; p++) {
char *package_hsize = human_readable_size(info->packages[p]->size);
- printf(" %-20s %-20s %-20s %-20s\n", info->packages[p]->name, info->packages[p]->version,
- info->packages[p]->revision, package_hsize);
+ printf(" %-20s %-10s %-10s %-10s %20s\n", info->packages[p]->name, info->packages[p]->version,
+ info->packages[p]->revision, package_hsize, info->packages[p]->origin);
free(package_hsize);
}
}