Skip to content
Snippets Groups Projects
  1. Nov 28, 2022
  2. Jul 04, 2022
    • Brent Huisman's avatar
      Move Python build to `pyproject.toml`, bump Python minver to 3.7, fix macos... · 8af6bd27
      Brent Huisman authored
      Move Python build to `pyproject.toml`, bump Python minver to 3.7, fix macos wheel generation (#1916)
      
      * Failing Macos Python wheel builds fixed.
      * Macos Python wheels now come with dual-arch (x86-64 and arm64)
      * Moved (nearly) all Python build instructions to `pyproject.toml`
        * Enables 'build isolation', and need to specify build-deps only once, no need for users or CI scripts to pre-install them.
        * Enables editable `pip` installs (`pip install -e ./arbor`)
        * Compatible with 'build frontends' `pip` and `build`.
        * Passing CMake options actually got shorter
      * Drop Python 3.6 support.
  3. Jun 21, 2022
  4. Jun 16, 2022
  5. Jan 24, 2022
    • Thorsten Hater's avatar
      More robust build-catalogue (#1784) · d0dc6bd7
      Thorsten Hater authored
      - build-catalogue
        - now installed by pip
        - enable GPU-backends
        - isolate from being installed in a non-default dir
        - rename to arbor-build-catalogue
        - allow hand-written C++ mechanisms to be linked in the same catalogue.
      - CMake
        - enable PIC on arbor always to allow linking to shared objects
        - use relative paths when configuring a-b-c, to make relocation less of a problem
      - Python
          - ensure a-b-c is installed by pip, along with headers and libarbor.a
          - throw errors if tools (cmake scripts, arbor package, modcc) missing
          - transition setup.py setuptools -> skbuild.
      - Wheels
          - Add NML2 support to wheels
          - scripts/build-wheels.sh builds wheels, in principle valid for submission to PyPI, on your own hardware. This should be kept in sync with .github/workflows/ciwheel.yml
          - scripts/patchwheel.py corrects the rpath in the libraries in the wheels, working around a bad interplay between auditwheel and skbuild, see pypa/auditwheel#363
          - Python Wheels are tested as part of the Github Action 
          - Add nml and bundled status to config().
  6. Oct 07, 2021
  7. Sep 20, 2021
    • Robin De Schepper's avatar
      Fixed MRO and code duplication in `setup.py` (#1672) · f13f786a
      Robin De Schepper authored
      The duplication arose from slightly more complicated composition than usual but could be resolved by proper MRO, it took me a few passes from its original form as well before I figured out the situation is not as complicated as it seems.
      
      `super()` is equal to `super(cls, self)` where `cls` is obtained from the current function's class scope. If arg 2  is an object it will start an MRO search of the object, but skipping classes before the 1st arg type is encountered. In our case with the following base classes: `(_command_template, base_command_class)` this means we can define our base logic in `_command_template` and use `super()` calls there to traverse the MRO in `(base_command_class,)`, so by simply defining `class install_command(_command_template, install)` and `bdist_wheel_command(_command_template, bdist_wheel)` our MRO issue is solved and the duplication removed.
  8. Jun 23, 2021
  9. May 26, 2021
  10. Mar 05, 2021
  11. Feb 18, 2021
  12. Feb 09, 2021
  13. Feb 05, 2021
  14. Jan 07, 2021
  15. Jan 06, 2021
  16. Jan 05, 2021
    • Benjamin Cumming's avatar
      Remove dependence of docs on the Python module (#1293) · d326f2ea
      Benjamin Cumming authored
      Revert a change introduced in #1282 that required the python module for arbor to build the documentation.
      
      This breaks the readthedocs build, where arbor is not available.
      
      * Remove arbor dependence from `doc/conf.py`, reverting to the original "out of core" approach
      * Fix other recently introduced issues that lead to CMake errors when configuring the documentation
        when the Python target is not configured.
        * The CMake variable `PYTHON_EXECUTABLE` wasn't set, but was required to make calls to the
           Python interpreter.
        * Instead of relying on pybind11 to find Python, explicitly detect it using `find_package(Python3 ...)`
        * Make Python3 a hard requirement when building the Python wrapper
        * And a soft requirement otherwise, that will fail only when the docs are built.
  17. Oct 15, 2020
  18. Apr 15, 2020
    • Nora Abi Akar's avatar
      Compile arbor for AMD and Nvidia GPUs using clang (#1007) · 90a1e6d7
      Nora Abi Akar authored
      - Add option to compile Arbor for HIP/CUDA backend using Clang. 
      - Add new CMake option `ARB_GPU_COMPILE_TYPE` to distinguish between three possible gpu platforms/builds: `cuda-nvcc`; `cuda-clang`; `hip-clang`
      - Add gpu wrapper functions in `arbor/backends/gpu/gpu_api.hpp` and `arborenv/gpu_api.hpp` which call HIP/CUDA functions depending on the platform
      - Rename functions and files: cuda -> gpu
      - Add downgraded warp primitives for HIP
      - Implement `uuid` workaround for HIP
      - Set correct alignment and warp size for AMD gpus
      - Update installation guide and docs.
      - Update pip/setuptools to support new gpu targets
      
      Fixes #833
  19. Apr 09, 2020
    • Benjamin Cumming's avatar
      Fix setuptools to work with older Pip (#1010) · 1338599a
      Benjamin Cumming authored
      Work around issue caused by some versions of pip skipping the `install` stage when no additional command line args are passed via `--install-option`.
      
      Keep settings that can be modified via install option in a singleton that initializes them to their default.
  20. Apr 06, 2020
    • Benjamin Cumming's avatar
      Finalize support for PyPi package (#1002) · 04705503
      Benjamin Cumming authored
      * add MANIFEST file that describes all paths required in source distribution so that pip can compile Arbor.
      * fixes to `setup.py` to help it work across supported Python versions.
      
      Tested with:
      * setup tools and pip
      * python 3.7 and 3.8
      * pip 19 and pip 20
      * Linux and OS X
  21. Feb 28, 2020
    • Benjamin Cumming's avatar
      pip / setuptools support (#977) · 45885c22
      Benjamin Cumming authored
      Add a `setup.py` for installing Arbor directly with pip/setuptools.
      
      Implement a setuptools extension for CMake in `setup.py`. To be honest, I don't understand entirely how it works, but setuptools is obtuse enough that I don't feel at all guilty about this.
      
      Define additional flags for optionally enabling GPUs, MPI, Vectorization and micro-architecture targets, for more adventurous users.
      
      The documentation is updated with a "howto pip" for more casual users who don't want anything to do with CMake.
      
      Fixes #958 .