GithubHelp home page GithubHelp logo

martinflores751 / externals Goto Github PK

View Code? Open in Web Editor NEW

This project forked from irods/externals

0.0 0.0 0.0 133 KB

Dependencies for the building and installation of iRODS

Python 85.37% Makefile 14.63%

externals's Introduction

External dependencies for the building and installation of iRODS

Currently tested on:

  • Ubuntu 20.04
  • Ubuntu 22.04
  • CentOS 7
  • AlmaLinux 8
  • Rocky Linux 8
  • Rocky Linux 9
  • Debian 11
  • Debian 12

Assumptions

This repository is expected to build in a VM or container environment that is isolated from other software or build environments. Pre-written dockerfiles can be found in the development environment repository.

The automated scripts run commands as sudo and update system libraries and compilers, etc.

In a new container, run the following:

Ubuntu 20.04

apt-get update
apt-get install -y sudo git python3 python3-distro
./install_prerequisites.py

update-alternatives --install /usr/local/bin/gcc gcc /usr/bin/gcc-10 1
update-alternatives --install /usr/local/bin/g++ g++ /usr/bin/g++-10 1
hash -r

make # or "make server" for packages specific to building the iRODS server.

Ubuntu 22.04, Debian 11, and Debian 12

apt-get update
apt-get install -y sudo git python3 python3-distro
./install_prerequisites.py

make # or "make server" for packages specific to building the iRODS server.

RHEL / CentOS 7

yum install -y sudo git python3 centos-release-scl epel-release
yum install -y python36-distro devtoolset-10-gcc devtoolset-10-gcc-c++

# Installing the prerequistes must be done before enabling the GCC compiler
# environment.
./install_prerequisites.py

# Enable the GCC 10 compiler tools.
scl enable devtoolset-10 bash

make # or "make server" for packages specific to building the iRODS server.

RHEL / AlmaLinux / Rocky Linux 8

dnf config-manager --set-enabled powertools
dnf install -y sudo git python3 python3-distro gcc-toolset-11

# Installing the prerequistes must be done before enabling the GCC compiler
# environment.
./install_prerequisites.py

# Enable the GCC 11 compiler tools.
scl enable gcc-toolset-11 bash

make # or "make server" for packages specific to building the iRODS server.

RHEL / AlmaLinux / Rocky Linux 9

dnf config-manager --set-enabled crb
dnf install -y sudo git python3 python3-distro
./install_prerequisites.py
make # or "make server" for packages specific to building the iRODS server.

FAQ

Q. Can I build an externals package using a different repository?

Yes. Open versions.json, find the package of interest, and set the "git_repository" property to the URL of the repository to clone. If this property is not present, it means the build will clone the forked repository under https://github.com/irods. The build expects that the clone will have a directory name matching the name of the forked project under https://github.com/irods.

Defining a different git repository to use for an external normally means a change in the version. For that reason, it is important to remember that "commitish" is required to match a branch name or tag. If you want to use a SHA for the "commitish", you'll need to set "enable_sha" to true. This instructs the build system to separate the fetching/checking-out of a commit from the cloning of the repository. To better explain what this means, see below.

If "enable_sha" is set to false or isn't defined for a package, the build system will do the following:

$ git clone --depth 1 --branch <branch_name_or_tag> --recurse-submodules <git_repository>

If "enable_sha" is set to true, the build system will do this instead:

$ git clone --recurse-submodules <git_repository>
$ cd <git_repository>
$ git fetch
$ git checkout <sha> # Or branch name, or tag.

Q. What are consortium_build_number and package_revision in versions.json?

These fields allow for changes to the packaging and build process of a package without having to change the version of the software being packaged. consortium_build_number affects the package name and package_revision affects the package version.

Here's a quick guide on when these fields should be incremented or reset:

  • When bumping consortium_build_number, package_revision should be reset to 0.
  • When bumping the version of the software being packaged, both consortium_build_number and package_revision should be reset to 0, and consortium_build_number of any dependant packages should be incremented, unless they are also being updated.
  • When making a change to the packaging or build process of a package without changing the version of the software being packaged, consider whether the updated package should replace the previous version, or if it should be installable alongside the previous version of the package.
    • If the updated package should replace the previous version of the package, increment package_revision. If any dependant packages are affected by the change, increment their package_revision as well.
    • If the updated package should be installable alongside the previous version of the package, increment consortium_build_number. The consortium_build_number of any dependant packages will need to be incremented as well.

externals's People

Contributors

trel avatar swooshycueb avatar korydraughn avatar alanking avatar kellerb avatar d-w-moore avatar hastingskek avatar jassigill2000 avatar justinkylejames avatar martinflores751 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.