diff --git a/admin/scons/Platform.py b/admin/scons/Platform.py index 19739ce89..ce2c4a5b3 100644 --- a/admin/scons/Platform.py +++ b/admin/scons/Platform.py @@ -82,10 +82,6 @@ def configure(env): problems.append('We need boost::format (header).') if not conf.CheckLibWithHeader('boost_program_options','boost/program_options.hpp','C++'): problems.append('We need boost::program_options (including binary lib for linking).') - if not conf.CheckLibWithHeader('boost_system','boost/system/error_code.hpp','C++'): - problems.append('We need the boost::system support library (including binary lib).') - if not conf.CheckLibWithHeader('boost_filesystem','boost/filesystem.hpp','C++'): - problems.append('We need the boost::filesystem lib (including binary lib for linking).') if not conf.CheckPkgConfig('gavl', '1.4'): diff --git a/doc/technical/build/BuildDependencies.txt b/doc/technical/build/BuildDependencies.txt index db70c83f7..300f903a0 100644 --- a/doc/technical/build/BuildDependencies.txt +++ b/doc/technical/build/BuildDependencies.txt @@ -65,7 +65,6 @@ Languages and Tools - libboost-dev (at least *1.67*) - libboost-program-options-dev - libboost-program-options-dev - - libboost-filesystem-dev * Script languages - Python (*2.x*) might still be handy for build scripts.footnote:[SCons supports both Python 2.x diff --git a/doc/user/tutorials/building.txt b/doc/user/tutorials/building.txt index 023bc10fa..352e4852c 100644 --- a/doc/user/tutorials/building.txt +++ b/doc/user/tutorials/building.txt @@ -71,7 +71,7 @@ For Debian based systems, e.g. Mint, Ubuntu..., you can install these packages a ------------------------------------------------------------------------------------- sudo apt-get install build-essential scons git-core valgrind intltool \ -libboost-dev libboost-program-options-dev libboost-regex-dev libboost-filesystem-dev \ +libboost-dev libboost-program-options-dev \ libgavl-dev libgtkmm-3.0-dev libgdl-3-dev librsvg2-dev libxv-dev ------------------------------------------------------------------------------------- diff --git a/doc/user/tutorials/contributing.txt b/doc/user/tutorials/contributing.txt index d3a5767c8..1ac0d40bf 100644 --- a/doc/user/tutorials/contributing.txt +++ b/doc/user/tutorials/contributing.txt @@ -90,7 +90,7 @@ Packages normally available with your distribution:: + ------------------------------------------------------------------------------------- sudo apt-get install build-essential scons git-core valgrind intltool \ -libboost-dev libboost-program-options-dev libboost-regex-dev libboost-filesystem-dev \ +libboost-dev libboost-program-options-dev \ libgavl-dev libgtkmm-3.0-dev libgdl-3-dev librsvg2-dev libxv-dev ------------------------------------------------------------------------------------- Packages not normally part of your distribution:: diff --git a/src/common/basic-setup.cpp b/src/common/basic-setup.cpp index c3a8333b9..dd3952d9c 100644 --- a/src/common/basic-setup.cpp +++ b/src/common/basic-setup.cpp @@ -27,12 +27,12 @@ #include "common/basic-setup.hpp" #include "lib/searchpath.hpp" #include "lib/error.hpp" +#include "lib/file.hpp" #include "lib/util.hpp" extern "C" { #include } -#include #include @@ -41,7 +41,6 @@ namespace lumiera { using std::string; using std::ifstream; - namespace fsys = boost::filesystem; namespace opt = boost::program_options; namespace { // details of the bootstrap process... @@ -53,7 +52,7 @@ namespace lumiera { /** use the general mechanism for resolving a search path * to get the absolute path of the \c setup.ini */ string - resolve (fsys::path iniSpec) + resolve (fs::path iniSpec) { string searchpath = iniSpec.parent_path().string(); ///////////TICKET #896 return resolveModulePath (iniSpec.filename(), searchpath); diff --git a/src/lib/stat/file.cpp b/src/lib/file.cpp similarity index 96% rename from src/lib/stat/file.cpp rename to src/lib/file.cpp index 0c28bd3a5..86d3be458 100644 --- a/src/lib/stat/file.cpp +++ b/src/lib/file.cpp @@ -18,7 +18,7 @@ */ -#include "lib/stat/file.hpp" +#include "lib/file.hpp" namespace std::filesystem { diff --git a/src/lib/stat/file.hpp b/src/lib/file.hpp similarity index 93% rename from src/lib/stat/file.hpp rename to src/lib/file.hpp index 3234a7d12..5381c19e8 100644 --- a/src/lib/stat/file.hpp +++ b/src/lib/file.hpp @@ -25,8 +25,8 @@ -#ifndef LIB_STAT_FILE_H -#define LIB_STAT_FILE_H +#ifndef LIB_FILE_H +#define LIB_FILE_H #include "lib/error.hpp" @@ -65,9 +65,7 @@ namespace std::filesystem { if (UNIX_HOMEDIR_SYMBOL == *rawPath.begin()) rawPath = getHomePath() / rawPath.lexically_proximate(UNIX_HOMEDIR_SYMBOL); - return fs::exists(rawPath)? fs::absolute( - fs::canonical(rawPath)) - : rawPath; + return fs::weakly_canonical(rawPath); } @@ -116,4 +114,4 @@ namespace util { }; }//(End)namespace util -#endif /*LIB_STAT_FILE_H*/ +#endif /*LIB_FILE_H*/ diff --git a/src/lib/searchpath.cpp b/src/lib/searchpath.cpp index 263859407..9b1bdd948 100644 --- a/src/lib/searchpath.cpp +++ b/src/lib/searchpath.cpp @@ -40,20 +40,13 @@ namespace lib { /** @internal helper to figure out the installation directory, * as given by the absolute path of the currently executing program * @warning this is Linux specific code */ - string + fs::path findExePath() { - static string buff(lib::STRING_MAX_RELEVANT+1, '\0' ); - if (!buff[0]) - { - ssize_t chars_read = readlink (GET_PATH_TO_EXECUTABLE, &buff[0], lib::STRING_MAX_RELEVANT); - - if (0 > chars_read || chars_read == ssize_t(lib::STRING_MAX_RELEVANT)) - throw error::Fatal ("unable to discover path of running executable"); - - buff.resize(chars_read); - } - return buff; + fs::path selfExe{GET_PATH_TO_EXECUTABLE}; + if (not fs::exists (selfExe)) + throw error::Fatal ("unable to discover path of running executable"); + return fs::canonical (selfExe); } @@ -66,9 +59,9 @@ namespace lib { { static const regex PICK_ORIGIN_TOKEN ("\\$?ORIGIN/?"); static const string expandedOriginDir - = fsys::path (findExePath()).parent_path().string() + "/"; ///////////TICKET #896 + = findExePath().parent_path().string() + "/"; ///////////TICKET #896 - return regex_replace(src, PICK_ORIGIN_TOKEN, expandedOriginDir); + return regex_replace (src, PICK_ORIGIN_TOKEN, expandedOriginDir); } @@ -76,16 +69,16 @@ namespace lib { string - resolveModulePath (fsys::path moduleName, string searchPath) + resolveModulePath (fs::path moduleName, string searchPath) { - fsys::path modulePathName (moduleName); + fs::path modulePathName (moduleName); SearchPathSplitter searchLocation(searchPath); ///////////TICKET #896 - while (!fsys::exists (modulePathName)) + while (not fs::exists (modulePathName)) { // try / continue search path if (searchLocation.isValid()) - modulePathName = fsys::path() / searchLocation.next() / moduleName; + modulePathName = fs::path() / searchLocation.next() / moduleName; else throw error::Config ("Module \""+moduleName.string()+"\" not found" /////TICKET #896 + (searchPath.empty()? ".":" in search path: "+searchPath)); diff --git a/src/lib/searchpath.hpp b/src/lib/searchpath.hpp index d87aa0aaf..af0e5c8d5 100644 --- a/src/lib/searchpath.hpp +++ b/src/lib/searchpath.hpp @@ -26,26 +26,25 @@ #include "lib/error.hpp" #include "lib/nocopy.hpp" +#include "lib/regex.hpp" +#include "lib/file.hpp" -#include #include -#include namespace lib { + namespace error = lumiera::error; using std::string; using SubMatch = std::smatch::value_type const&; - namespace error = lumiera::error; - namespace fsys = boost::filesystem; using LERR_(ITER_EXHAUST); /** retrieve the location of the executable */ - string findExePath(); + fs::path findExePath(); /** replace $ORIGIN tokens in the given string * @return copy with expansions applied */ @@ -106,7 +105,7 @@ namespace lib { * @return the absolute pathname of the module file found * @throws error::Config when the resolution fails */ - string resolveModulePath (fsys::path moduleName, string searchPath = ""); + string resolveModulePath (fs::path moduleName, string searchPath = ""); diff --git a/src/lib/stat/data.hpp b/src/lib/stat/data.hpp index b40cf4e01..8c9ce6f2d 100644 --- a/src/lib/stat/data.hpp +++ b/src/lib/stat/data.hpp @@ -82,7 +82,7 @@ #include "lib/error.hpp" #include "lib/nocopy.hpp" #include "lib/stat/csv.hpp" -#include "lib/stat/file.hpp" +#include "lib/file.hpp" #include "lib/format-string.hpp" #include "lib/util.hpp" diff --git a/src/lib/test/temp-dir.hpp b/src/lib/test/temp-dir.hpp index 2f9031b78..5c20aea88 100644 --- a/src/lib/test/temp-dir.hpp +++ b/src/lib/test/temp-dir.hpp @@ -25,9 +25,9 @@ #include "lib/error.hpp" #include "lib/nocopy.hpp" #include "lib/random.hpp" -#include "lib/stat/file.hpp" #include "include/limits.hpp" #include "lib/format-string.hpp" +#include "lib/file.hpp" #include "lib/util.hpp" #include diff --git a/src/stage/workspace/ui-style.cpp b/src/stage/workspace/ui-style.cpp index 61acdeafa..0c3c296a1 100644 --- a/src/stage/workspace/ui-style.cpp +++ b/src/stage/workspace/ui-style.cpp @@ -27,10 +27,10 @@ #include "stage/style-scheme.hpp" #include "stage/config-keys.hpp" #include "lib/searchpath.hpp" +#include "lib/file.hpp" #include "lib/util.hpp" #include -#include using Gtk::IconSize; using Gtk::IconFactory; @@ -40,8 +40,6 @@ using Gtk::IconFactory; namespace stage { namespace workspace { - namespace fsys = boost::filesystem; - IconSize UiStyle::GiantIconSize = Gtk::ICON_SIZE_INVALID; IconSize UiStyle::MenuIconSize = Gtk::ICON_SIZE_INVALID; @@ -329,7 +327,7 @@ namespace workspace { ,Gtk::IconSize size ,bool wildcard) { - if (!fsys::exists (path)) return false; + if (not fs::exists (path)) return false; try { Gtk::IconSource source; diff --git a/tests/library/stat/file-support-test.cpp b/tests/library/file-support-test.cpp similarity index 99% rename from tests/library/stat/file-support-test.cpp rename to tests/library/file-support-test.cpp index ddf0ee7ad..42eea6dee 100644 --- a/tests/library/stat/file-support-test.cpp +++ b/tests/library/file-support-test.cpp @@ -19,7 +19,7 @@ #include "lib/test/run.hpp" #include "lib/test/test-helper.hpp" #include "lib/test/temp-dir.hpp" -#include "lib/stat/file.hpp" +#include "lib/file.hpp" #include diff --git a/tests/library/search-path-splitter-test.cpp b/tests/library/search-path-splitter-test.cpp index dae7e481a..6f7341a25 100644 --- a/tests/library/search-path-splitter-test.cpp +++ b/tests/library/search-path-splitter-test.cpp @@ -19,6 +19,7 @@ #include "lib/test/run.hpp" #include "lib/test/test-helper.hpp" #include "lib/format-cout.hpp" +#include "lib/file.hpp" #include "lib/searchpath.hpp" @@ -74,8 +75,8 @@ namespace test { void resolveEmbeddedOriginToken () { - fsys::path exePath (findExePath()); - string expected = (exePath.remove_leaf() / "modules").string(); ////////OOO warning by GCC-14 : `path::remove_leaf()` is deprecated: Use `path::remove_filename()` instead + fs::path exePath{findExePath()}; + string expected{exePath.parent_path() / "modules"}; SearchPathSplitter sp("xyz:$ORIGIN/modules:abc"); CHECK ("xyz" == sp.next()); diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index 099dba5f6..ce52e0e26 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -157153,7 +157153,7 @@ unsigned int ThreadIdAsInt = *static_cast<unsigned int*>(static_cast<vo - + @@ -157467,7 +157467,7 @@ unsigned int ThreadIdAsInt = *static_cast<unsigned int*>(static_cast<vo - + @@ -157570,7 +157570,7 @@ unsigned int ThreadIdAsInt = *static_cast<unsigned int*>(static_cast<vo - + @@ -158111,6 +158111,116 @@ unsigned int ThreadIdAsInt = *static_cast<unsigned int*>(static_cast<vo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ d.h. je nachdem, was man machen möchte: Skalieren, Positionieren, Farbraum-Mapping +

+ + +
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -160867,8 +160977,7 @@ Since then others have made contributions, see the log for the history.immer wieder enttäuschend

- - + @@ -161284,7 +161393,74 @@ Since then others have made contributions, see the log for the history. - + + + + + + + + + + + + + + + + + + +

+ wie lib/regex.hpp, lib/result.hpp, lib/thread.hpp, lib/parse.hpp .... +

+ +
+ +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + +

+ ...das war vermutlich mein erster Versuch, eine Iterator-Klasse in C++ zu bauen. +

+ +
+
+ + + + +
+ + + + + +
@@ -161292,15 +161468,20 @@ Since then others have made contributions, see the log for the history. - + + + + +

+ Und zwar schon vor einem Jahr. +

+

+ Grrr..... wo ist die Zeit hin?? +

+ +
+ - - - - - - - @@ -161308,6 +161489,9 @@ Since then others have made contributions, see the log for the history. + + +