diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2020-02-17 00:13:30 -0500 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2020-02-17 00:13:30 -0500 |
commit | 1c2cdc4d8e28ce1b4c0d1ba75686f05fd5dd772d (patch) | |
tree | 32257d5a12cc0dc06c62e4212806573477065080 /src/spm.c | |
parent | b5dc6f2c428b4555d3e56e628605f54e4a63b16e (diff) | |
download | spmc-1c2cdc4d8e28ce1b4c0d1ba75686f05fd5dd772d.tar.gz |
Refactor continues:
* Implement multiple manifests
* Random bug fixes
* More bugs added
* Start removing references to SPM_GLOBAL.package_dir
* Start using manifests for everything
* Simplify mkmanifest_interface
Diffstat (limited to 'src/spm.c')
-rw-r--r-- | src/spm.c | 40 |
1 files changed, 13 insertions, 27 deletions
@@ -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); } } |