Skip to content
Snippets Groups Projects
  • Mark OLESEN's avatar
    9fe09ad2
    ENH: installation helpers · 9fe09ad2
    Mark OLESEN authored
    ----
    install-dirs: a general directory installer
    
      Copy installs non-binary (platform) directories.
      Eg,
    
          install-dirs -prefix=... -devel
          install-dirs -prefix=... -default -no-app
    
    ----
    install-platform: a platform (binary) installer
    
      This is primarily driven by the need to install into system mpi
      directories. The problem noted in issue #1893 is caused by the
      rpm-mpi-hooks (fedora and redhat-8).
    
      For the additional mpi library qualifier (openmpi-x86_64) to be
      added to the requirements, the mpi-specific libraries (eg,
      libPstream.so) need to be installed in the mpi system directory
      (eg, /usr/lib64/openmpi).
    
      However, then need symlinks from the system locations back to our
      local directories to ensure that the libraries are correctly found
      via our LD_LIBRARY_PATH and we don't get dummy libraries.
    
    ----
    update-mpi-links: a post-install update hook
    
      Expected paths are registered as persistent information into the
      hook during packaging. Triggering the hook after installation
      completes the creation of the symlinks.
    
    Normal usage,
    ```
    prefix="/tmp/local-install/openfoam"
    
    bin/tools/install-dirs -prefix="$prefix" -common
    bin/tools/install-platform -prefix="$prefix"
    ```
    Installs
     - /tmp/local-install/openfoam/META-INFO
     - /tmp/local-install/openfoam/bin
     - /tmp/local-install/openfoam/etc
     - /tmp/local-install/openfoam/platforms/linux64GccDPInt32Opt/bin
     - /tmp/local-install/openfoam/platforms/linux64GccDPInt32Opt/lib
    
    Can also place architecture-dependent bits elsewhere,
    ```
    prefix="/tmp/local-install/openfoam"
    multi_arch="$(dpkg-architecture -qDEB_TARGET_MULTIARCH)"
    
    bin/tools/install-dirs -prefix="$prefix" -common
    bin/tools/install-platform -exec-prefix="$prefix/$multi_arch"
    ```
    Installs
     - /tmp/local-install/openfoam/META-INFO
     - /tmp/local-install/openfoam/bin
     - /tmp/local-install/openfoam/etc
     - /tmp/local-install/openfoam/x86_64-linux-gnu/bin
     - /tmp/local-install/openfoam/x86_64-linux-gnu/lib
    
    Can use it to flatten out platforms entirely,
    ```
    prefix="/tmp/local-install/openfoam"
    bin/tools/install-dirs -prefix="$prefix" -common
    bin/tools/install-platform -exec-prefix="$prefix"
    ```
    Installs
     - /tmp/local-install/openfoam/META-INFO
     - /tmp/local-install/openfoam/bin
     - /tmp/local-install/openfoam/etc
     - /tmp/local-install/openfoam/lib
    9fe09ad2
    History
    ENH: installation helpers
    Mark OLESEN authored
    ----
    install-dirs: a general directory installer
    
      Copy installs non-binary (platform) directories.
      Eg,
    
          install-dirs -prefix=... -devel
          install-dirs -prefix=... -default -no-app
    
    ----
    install-platform: a platform (binary) installer
    
      This is primarily driven by the need to install into system mpi
      directories. The problem noted in issue #1893 is caused by the
      rpm-mpi-hooks (fedora and redhat-8).
    
      For the additional mpi library qualifier (openmpi-x86_64) to be
      added to the requirements, the mpi-specific libraries (eg,
      libPstream.so) need to be installed in the mpi system directory
      (eg, /usr/lib64/openmpi).
    
      However, then need symlinks from the system locations back to our
      local directories to ensure that the libraries are correctly found
      via our LD_LIBRARY_PATH and we don't get dummy libraries.
    
    ----
    update-mpi-links: a post-install update hook
    
      Expected paths are registered as persistent information into the
      hook during packaging. Triggering the hook after installation
      completes the creation of the symlinks.
    
    Normal usage,
    ```
    prefix="/tmp/local-install/openfoam"
    
    bin/tools/install-dirs -prefix="$prefix" -common
    bin/tools/install-platform -prefix="$prefix"
    ```
    Installs
     - /tmp/local-install/openfoam/META-INFO
     - /tmp/local-install/openfoam/bin
     - /tmp/local-install/openfoam/etc
     - /tmp/local-install/openfoam/platforms/linux64GccDPInt32Opt/bin
     - /tmp/local-install/openfoam/platforms/linux64GccDPInt32Opt/lib
    
    Can also place architecture-dependent bits elsewhere,
    ```
    prefix="/tmp/local-install/openfoam"
    multi_arch="$(dpkg-architecture -qDEB_TARGET_MULTIARCH)"
    
    bin/tools/install-dirs -prefix="$prefix" -common
    bin/tools/install-platform -exec-prefix="$prefix/$multi_arch"
    ```
    Installs
     - /tmp/local-install/openfoam/META-INFO
     - /tmp/local-install/openfoam/bin
     - /tmp/local-install/openfoam/etc
     - /tmp/local-install/openfoam/x86_64-linux-gnu/bin
     - /tmp/local-install/openfoam/x86_64-linux-gnu/lib
    
    Can use it to flatten out platforms entirely,
    ```
    prefix="/tmp/local-install/openfoam"
    bin/tools/install-dirs -prefix="$prefix" -common
    bin/tools/install-platform -exec-prefix="$prefix"
    ```
    Installs
     - /tmp/local-install/openfoam/META-INFO
     - /tmp/local-install/openfoam/bin
     - /tmp/local-install/openfoam/etc
     - /tmp/local-install/openfoam/lib