Updated cmake files to have find_package with Devlopment.Module to
make build work both locally and from cibuildwheel.
Added set Python_LIBRARIES="-Wl,--unresolved-symbols=ignore-all"
in case when it is not set (in manylinux) as lipython not found.
Added RPATH to be '$ORIGIN/libs:$ORIGIN' for all shared library
be discoverable.
Added CMakeFiles.txt that perform sequential build of coriolis components
Fixed some cmake files bugs
Added extra files to coriolis python wheel to make shared library preload
Added config directory to be determined through platformdirs package
Added pysetup directory with setup.py script and additional code to make
properly assembled python wheel distribution.
To make wheel run: python3 pysetup/setup.py bdist_wheel
When wheel installed into the system the 'coriolis' command available.
Running coriolis from python package folder implemented
through preloading of required *.so files in proper order
(no need to install shared libraries in system folders).
* Change: In bootstrap, FindBootstrap.cmake, ccb (builder) & socInstaller,
suppress the "--qt5" argument as it the default now. Create a "--qt4"
to force building against the old one.
* Change: In bootstrap/cmake_modules/FindBootstrap.cmake, add a
"-Wl,--no-undefined" to the C++/ld flags to force checking of
undefined symbol at link time.
* In bootstrap/coriolisEnv.py, under WSL it seems that setting up the
LD_LIBRARY_PATH makes the linker to ignore /etc/ld.so.conf.
To avoid that, use ldconfig to import all the known paths into
LD_LIBRARY_PATH.
* New: In cumulus.designflow: add yosysnp to manage Yosys without
Python support enabled.
Add klayout support for running scripts in batch mode.
Add generic system command support.
* Change: In cumulus.designflow.task.TaskFlow, systematically
convert pathes (str) into pathlib.Path in targets and depends.
* New: In cumulus.designflow.clean.Clean, add cleaning by glob.
* Change: In cumulus/plugins/__init__.py, new behavior for loading
plugins supplied as third party. In order to avoid messing up
with the "site-packages/coriolis/" main package tree (with
modules named "coriolis.<MODULE>", they have to be under
"site-packages/addons/coriolis/" (so modules will be named
"addons.coriolis.<MODULE>"). This should prevent *overwritting*
standard modules by third party ones.
Now uses pathlib for module loading.
Had a conflict between Hurricane.Path and pathlib.Path, now do
not import the Hurricane one into the module globals...
* Move all Python stuff under a common Python namespace "coriolis".
* Instead of having a series subtrees for each tool, integrate
everything in one common tree. So now, all components can be
located either with an absolute path from "coriolis" or, inside
cross-reference themselves through relatives imports.
* As a consequence, we only need to add ".../site-packages/coriolis/"
to the PYTHONPATH, and not a whole bunch of subdirectories.
And nothing, if installed in-system.
* The tree of free technologies configuration files is also moved
below "coriolis/technos" instead of "/etc".
* Supressed "cumulus" level for the plugins.
* All python modules are rewritten using relative imports except
for the configuration files that uses absolute import as they
can be cloned outside of the tree to serve as templates.
* Change: In boostrap/FindPythonSitePackages, include "/coriolis" in
Python_CORIOLISARCH and Python_CORIOLISLIB.
Provide a Python_SITELIB *without* "/coriolis" appended.
* Change: In cumulus/plugins/__init__.loadPlugins(), must prefix modules
read in the plugins directory by "coriolis.plugins.". No longer need
to add their path to sys.path.
* Change: In crlcore/python/technos/nodeX/*/devices.py, the scripts of
the layouts generators must be prefixed by "coriolis.oroshi.".
* Change: In CRL::System CTOR, no longer add the pathes of the various
plugins to sys.path. Only "site-packages/coriolis/".
* New: In Utilities::Path::toPyModePath(), new method to convert a
filesystem path into a python module path.
Examples:
"coriolis/plugins/block" --> "coriolis.plugins.block".
"coriolis/plugins/rsave.py" --> "coriolis.plugins.rsave".
* Change: In katanaEngine::_runKatanaEngine(), rename the hook script
initHook.py. No longer need to modify sys.path.
* Change: In BoraEngine::_runBoraEngine(), rename the hook script
initHook.py. No longer need to modify sys.path.
* Change: In UnicornGui::_runUnicornInit(), rename the hook script
initHook.py. No longer need to modify sys.path.
* Change: In cumulus.plugins.chip.constants, put the constants
outside __init__.py to avoid a loop at initialization.