diff --git a/README.md b/README.md index ec8788ef..4a41bb97 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,29 @@ ![example branch parameter](https://github.com/jlab/gapc/actions/workflows/c-cpp.yml/badge.svg) [![Anaconda-Server Badge](https://anaconda.org/bioconda/bellmans-gapc/badges/version.svg)](https://anaconda.org/bioconda/bellmans-gapc) Launchpad logo + ``` - ____ _ _ _ _____ _____ - | _ \ | | | ( ) / ____| /\ | __ \ + ____ _ _ _ _____ _____ + | _ \ | | | ( ) / ____| /\ | __ \ | |_) | ___| | |_ __ ___ __ _ _ __ |/ ___ | | __ / \ | |__) | - | _ < / _ \ | | '_ ` _ \ / _` | '_ \ / __| | | |_ | / /\ \ | ___/ - | |_) | __/ | | | | | | | (_| | | | | \__ \ | |__| |/ ____ \| | - |____/ \___|_|_|_| |_| |_|\__,_|_| |_| |___/ \_____/_/ \_\_| -``` - + | _ < / _ \ | | '_ ` _ \ / _` | '_ \ / __| | | |_ | / /\ \ | ___/ + | |_) | __/ | | | | | | | (_| | | | | \__ \ | |__| |/ ____ \| | + |____/ \___|_|_|_| |_| |_|\__,_|_| |_| |___/ \_____/_/ \_\_| +``` + ## Dependencies Bellman's GAP was tested on the following dependencies. compile time: + - C++ compiler (GCC g++ for example) - C compiler (GCC for example) - Flex >= 2.5.34 - GNU bison >= 2.4.1 - GNU make >= 3.81 - Mercurial >= 0.9.5 -- boost >= 1.36 (1.34 without the Accumulators Framework) +- boost >= 1.36 (1.34 without the Accumulators Framework) - unittest framework (libboost-test-dev) - pool - program options (libboost-program-options-dev) @@ -30,7 +32,8 @@ compile time: - ksh93 - or - bash >= 2.03.0(1) (only needed for test scripts) runtime: -- boost >= 1.36 (1.34 without the Accumulators Framework) + +- boost >= 1.36 (1.34 without the Accumulators Framework) - pool - program options - cstdint @@ -41,7 +44,6 @@ runtime: Always get the latest sources from github: `git clone https://github.com/jlab/gapc.git` - ## INSTALLATION ### from source @@ -55,6 +57,7 @@ To install Bellman's GAP from source call: If `--prefix` is not set the path defaults to `/usr/local` More options for `./configure` are: + ``` CXX= CC= @@ -68,6 +71,7 @@ BISON= ### conda You can find [conda](https://bioconda.github.io/user/install.html) packages for linux-64 and osx-64 in the [bioconda channel: https://anaconda.org/bioconda/bellmans-gapc](https://anaconda.org/bioconda/bellmans-gapc) for easy installation into your conda environment: + ``` conda install -c bioconda bellmans-gapc ``` @@ -77,18 +81,29 @@ conda install -c bioconda bellmans-gapc Bellman's GAP is available as a pre-compiled Debian package via Ubuntus launchpad system, a Ubuntu Personal Package Archive (PPA). Packages for Ubuntu versions 16.04 (Xenial) and newer can be obtained from janssenlab/software. On your command line, execute the three following commands + ``` sudo add-apt-repository ppa:janssenlab/software sudo apt-get update sudo apt-get install bellmansgapc ``` -For older Ubuntu releases, have a look at bibi-help/bibitools (Ubuntu versions 10.04, 11.10, 12.04, 12.10, 13.04, 13.10, 14.04, 14.10, 15.04) + +For older Ubuntu releases, have a look at bibi-help/bibitools (Ubuntu versions 10.04, 11.10, 12.04, 12.10, 13.04, 13.10, 14.04, 14.10, 15.04) + ``` sudo add-apt-repository ppa:bibi-help/bibitools sudo apt-get update sudo apt-get install bellmansgapc ``` +### Nix + +Bellman's GAP is available as a flake the current version of the build can be installed by executing the following command: + +``` +nix build github:jlab/gapc +``` + ### MacPorts Under Mac OS X you may want to use MacPorts to install the compiler. There is a (most likely outdated) ports description on the BiBiServ MacPorts repository. You can install GAP-C via: diff --git a/flake.lock b/flake.lock new file mode 100644 index 00000000..df5babff --- /dev/null +++ b/flake.lock @@ -0,0 +1,93 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1702321677, + "narHash": "sha256-jK2stIbCXfzO+ctrFSgos2DlNIoAOXYLFmFJ8XNfmVs=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "b8dec7521fa2654cc34150c52212bacf9803519c", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1742800061, + "narHash": "sha256-oDJGK1UMArK52vcW9S5S2apeec4rbfNELgc50LqiPNs=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1750f3c1c89488e2ffdd47cab9d05454dddfb734", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs", + "nixpkgs-unstable": "nixpkgs-unstable", + "systems": "systems_2" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 00000000..45cc2007 --- /dev/null +++ b/flake.nix @@ -0,0 +1,32 @@ +{ + description = "Bellman's GAP compiler"; + inputs = { + nixpkgs.url = "github:nixos/nixpkgs"; + nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable"; + systems.url = "github:nix-systems/default"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { + self, + systems, + nixpkgs, + nixpkgs-unstable, + flake-utils, + }: + flake-utils.lib.eachDefaultSystem + (system: let + pkgs = import nixpkgs { + inherit system; + overlays = [ + # make unstable packages available via overlay + (final: prev: { + unstable = nixpkgs-unstable.legacyPackages.${prev.system}; + }) + ]; + }; + in { + packages.default = pkgs.callPackage ./package.nix {}; + devShells.default = import ./shell.nix {inherit pkgs;}; + }); +} diff --git a/package.nix b/package.nix new file mode 100644 index 00000000..f4b117ed --- /dev/null +++ b/package.nix @@ -0,0 +1,26 @@ +{ + stdenv, + fetchFromGitHub, + flex, + bison, + boost, + gsl, +}: +stdenv.mkDerivation { + name = "gapc"; + version = "2023-07-05"; + + src = fetchFromGitHub { + owner = "jlab"; + repo = "gapc"; + rev = "2023.07.05"; + sha256 = "sha256-OzGf8Z4BzHEPmonlOvvvg5G1y1mtrkWSxOHPfBJU7kU="; + }; + + nativeBuildInputs = [flex bison gsl]; + buildInputs = [boost]; + configureFlags = ["BOOST_LDFLAGS=-L${boost}/lib"]; + + doCheck = false; + checkTarget = "test"; +} diff --git a/shell.nix b/shell.nix new file mode 100644 index 00000000..67d87057 --- /dev/null +++ b/shell.nix @@ -0,0 +1,27 @@ +{pkgs ? import {}}: +with pkgs; + mkShell { + nativeBuildInputs = [flex bison gsl]; + buildInputs = [ + nixpkgs-fmt + unstable.adaptivecpp + #(callPackage ./package.nix {}) + cpplint + gdb + gcc + gpp + lldb + clang + boost + flex + bison + gsl + mercurial + ]; + + configureFlags = ["BOOST_LDFLAGS=-L${boost}/lib"]; + shellHook = '' + export BOOST_LDFLAGS=-L${boost}/lib + # ./configure --prefix=$(pwd)/debug --with-boost=yes + ''; + }