X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Frelocate.cc;h=ac4c31bac4658673c9af16e3b9f0363ef969b783;hb=bdd3c80b32f39751ed30a89a4623ede6fe0c6df3;hp=34b7962a1a1acad456a3c878ff4bb218a425cddd;hpb=987371d22b8402ee0cfd7aa5194e1664753e252e;p=lilypond.git diff --git a/lily/relocate.cc b/lily/relocate.cc index 34b7962a1a..ac4c31bac4 100644 --- a/lily/relocate.cc +++ b/lily/relocate.cc @@ -32,7 +32,6 @@ #define FRAMEWORKDIR ".." - int sane_putenv (char const *key, string value, bool overwrite) { @@ -40,6 +39,10 @@ sane_putenv (char const *key, string value, bool overwrite) { string combine = string (key) + "=" + value; char *s = strdup (combine.c_str ()); + + if (be_verbose_global) + progress_indication (_f ("Setting %s to %s\n" , key, value.c_str ())); + return putenv (s); } @@ -114,6 +117,10 @@ prefix_relocation (string prefix) prepend_env_path ("PATH", bindir); } +/* + UGH : this is a complete mess. + */ + void framework_relocation (string prefix) { @@ -125,55 +132,13 @@ framework_relocation (string prefix) read_relocation_dir (prefix + "/etc/relocate/"); string bindir = prefix + "/bin"; - -#ifdef OLD_RELOCATION - string datadir = prefix + "/share"; - string libdir = prefix + "/lib"; - string sysconfdir = prefix + "/etc"; - - /* need otherwise dynamic .so's aren't found. */ - prepend_env_path ("DYLD_LIBRARY_PATH", libdir); - - set_env_file ("FONTCONFIG_FILE", sysconfdir + "/fonts/fonts.conf", true); - set_env_dir ("FONTCONFIG_PATH", sysconfdir + "/fonts"); - -#ifdef __MINGW32__ - char font_dir[PATH_MAX]; - ExpandEnvironmentStrings ("%windir%/fonts", font_dir, sizeof (font_dir)); - prepend_env_path ("GS_FONTPATH", font_dir); -#endif - - string gs_version = -#ifdef GHOSTSCRIPT_VERSION - GHOSTSCRIPT_VERSION -#else - "ghostscript-version-undefined" -#endif - ; - - if (char const *cur = getenv ("LILYPOND_GS_VERSION")) - gs_version = cur; - - prepend_env_path ("GS_FONTPATH", datadir + "/ghostscript/" + gs_version + "/fonts"); - prepend_env_path ("GS_LIB", datadir + "/ghostscript/" + gs_version + "/Resource"); - prepend_env_path ("GS_LIB", datadir + "/ghostscript/" + gs_version + "/lib"); - - prepend_env_path ("GS_FONTPATH", datadir + "/gs/fonts"); - prepend_env_path ("GS_LIB", datadir + "/gs/Resource"); - prepend_env_path ("GS_LIB", datadir + "/gs/lib"); - - prepend_env_path ("GUILE_LOAD_PATH", datadir - + to_string ("/guile/%d.%d", - SCM_MAJOR_VERSION, SCM_MINOR_VERSION)); - set_env_file ("PANGO_RC_FILE", sysconfdir + "/pango/pangorc"); - set_env_dir ("PANGO_PREFIX", prefix); - -#endif - prepend_env_path ("PATH", bindir); } +/* + UGH : this is a complete mess. + */ void setup_paths (char const *argv0_ptr) { @@ -183,13 +148,14 @@ setup_paths (char const *argv0_ptr) if (relocate_binary && getenv ("LILYPOND_RELOCATE_PREFIX")) { - string prefix = getenv ("LILYPOND_RELOCATE_PREFIX"); + prefix_directory = getenv ("LILYPOND_RELOCATE_PREFIX"); #ifdef __MINGW32__ /* Normalize file name. */ - prefix = File_name (prefix).to_string (); + prefix_directory = File_name (prefix_directory).to_string (); #endif /* __MINGW32__ */ - prefix_relocation (prefix); - string bindir = prefix + "/bin"; + + prefix_relocation (prefix_directory); + string bindir = prefix_directory + "/bin"; framework_relocation (bindir); } else if (relocate_binary) @@ -233,15 +199,20 @@ setup_paths (char const *argv0_ptr) string argv0_prefix = dir_name (bindir); string compile_prefix = dir_name (dir_name (dir_name (prefix_directory))); if (argv0_prefix != compile_prefix) - prefix_relocation (argv0_prefix); + { + prefix_relocation (argv0_prefix); + prefix_directory = argv0_prefix; + } if (argv0_prefix != compile_prefix || string (FRAMEWORKDIR) != "..") - framework_relocation (bindir + "/" + FRAMEWORKDIR); + { + framework_relocation (bindir + "/" + FRAMEWORKDIR); + prefix_directory = bindir + "/" + FRAMEWORKDIR; + } } /* FIXME: use LILYPOND_DATADIR. */ if (char const *env = getenv ("LILYPONDPREFIX")) { - #ifdef __MINGW32__ /* Normalize file name. */ prefix_directory = File_name (env).to_string (); @@ -379,7 +350,7 @@ void read_relocation_file (string filename) { if (be_verbose_global) - progress_indication (_f ("Relocation file %s", filename.c_str ())); + progress_indication (_f ("Relocation file %s\n", filename.c_str ())); char const *cname = filename.c_str (); FILE *f = fopen (cname, "r"); @@ -414,7 +385,7 @@ read_relocation_file (string filename) else if (command == "prependdir") prepend_env_path (variable.c_str (), value); else - error ( _f("Unknown relocation command %s", command)); + error (_f ("Unknown relocation command %s", command)); } fclose (f); @@ -423,14 +394,11 @@ read_relocation_file (string filename) void read_relocation_dir (string dirname) { - DIR *dir = opendir (dirname.c_str ()); - - while (struct dirent *ent = readdir (dir)) - { - File_name name (ent->d_name); - if (name.ext_ == "reloc") - { - read_relocation_file (dirname + "/" + name.to_string ()); - } - } + if (DIR *dir = opendir (dirname.c_str ())) + while (struct dirent *ent = readdir (dir)) + { + File_name name (ent->d_name); + if (name.ext_ == "reloc") + read_relocation_file (dirname + "/" + name.to_string ()); + } }