aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2024-09-16 13:32:27 -0400
committerBruce Hill <bruce@bruce-hill.com>2024-09-16 13:32:27 -0400
commit1f23a4f0e31b30a48910c7f208325ddb9a3320eb (patch)
tree0ee81696c3cdc36b0af9107592c100719742054a
parent14b04f97be197940eb6244f17deda5c344176c91 (diff)
Handle installing libraries that were downloaded directly to
~/.local/share/tomo/installed
-rw-r--r--tomo.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/tomo.c b/tomo.c
index 18d690b2..40cf3de2 100644
--- a/tomo.c
+++ b/tomo.c
@@ -171,8 +171,9 @@ const char *escape_lib_name(const char *lib_name)
int build_library(const char *lib_base_name)
{
glob_t tm_files;
+ char *library_directory = get_current_dir_name();
if (glob("[!._0-9]*.tm", 0, NULL, &tm_files) != 0)
- errx(1, "Couldn't get .tm files in directory: %s", get_current_dir_name());
+ errx(1, "Couldn't get .tm files in directory: %s", library_directory);
env_t *env = new_compilation_unit(NULL);
CORD object_files, extra_ldlibs;
compile_files(env, (int)tm_files.gl_pathc, (const char**)tm_files.gl_pathv, false, &object_files, &extra_ldlibs);
@@ -245,14 +246,19 @@ int build_library(const char *lib_base_name)
getchar();
// Fall through
case '\n': {
- system(heap_strf("rm -rvf ~/.local/share/tomo/installed/'%s'", lib_base_name));
- system(heap_strf("mkdir -p ~/.local/share/tomo/installed/'%s'", lib_base_name));
- system(heap_strf("install -v * ~/.local/share/tomo/installed/'%s'/", lib_base_name));
+ const char *dest = heap_strf("%s/.local/share/tomo/installed/%s", getenv("HOME"), lib_base_name);
+ if (!streq(library_directory, dest)) {
+ system(heap_strf("rm -rvf '%s'", dest));
+ system(heap_strf("mkdir -p '%s'", dest));
+ system(heap_strf("install -v * '%s/'", dest));
+ }
system("mkdir -p ~/.local/share/tomo/lib/");
system(heap_strf("ln -fv -s ../installed/'%s'/lib%s.so ~/.local/share/tomo/lib/lib%s.so", lib_base_name, libname, libname));
}
default: break;
}
+
+ free(library_directory);
return 0;
}