Skip to content

Commit

Permalink
Add Conan to default.nix
Browse files Browse the repository at this point in the history
  • Loading branch information
Pedro Pombeiro committed Feb 28, 2019
1 parent ab2d89a commit cb62ee1
Show file tree
Hide file tree
Showing 5 changed files with 87 additions and 15 deletions.
2 changes: 1 addition & 1 deletion .TOOLVERSIONS
Expand Up @@ -4,7 +4,7 @@ android-sdk-platform;android-27;
android-sdk;4333796;aa190cfd7299cd6a1c687355bb2764e4
clojure_cli;1.9.0.391;
cmake;3.11.2;
conan;1.9.0;
conan;1.12.0;
golang;1.10.8;
leiningen;2.8.1;
maven;3.5.4;
Expand Down
2 changes: 1 addition & 1 deletion ci/Jenkinsfile.windows
Expand Up @@ -4,7 +4,7 @@ pipeline {
docker {
label 'linux-new'
/* WARNING: remember to keep this up-to-date with the value in docker/windows/Makefile */
image 'statusteam/status-build-windows:1.1.0-6ec09ec0'
image 'statusteam/status-build-windows:1.1.0-059730e5'
args (
"--privileged "+
"-v /dev/fuse:/dev/fuse "+
Expand Down
9 changes: 8 additions & 1 deletion default.nix
Expand Up @@ -6,6 +6,13 @@ let
sha256 = "0fqasswfqrz2rbag9bz17j8y7615s0p9l23cw4sk2f384gk0zf6c";
}) { config = { }; };
nodejs = pkgs."nodejs-10_x";
conan = with pkgs; import ./scripts/lib/setup/nix/conan {
# Import a newer version of the Conan package to fix pylint issues with pinned one
# The remaining dependencies come from Nixpkgs
inherit lib;
inherit python3;
inherit git;
};
nodeInputs = import ./scripts/lib/setup/nix/global-node-packages/output {
# The remaining dependencies come from Nixpkgs
inherit pkgs;
Expand All @@ -19,7 +26,7 @@ in pkgs.stdenv.mkDerivation rec {
cmake
extra-cmake-modules
go_1_10
] ++ stdenv.lib.optional stdenv.isLinux python37; # for Conan
] ++ stdenv.lib.optional stdenv.isLinux conan;
buildInputs = with pkgs; [
clojure
jq
Expand Down
14 changes: 2 additions & 12 deletions scripts/build-desktop.sh
Expand Up @@ -119,20 +119,10 @@ function init() {
rm -rf ./desktop/toolchain/
# TODO: Use Conan for Linux and MacOS builds too
if is_windows_target; then
if ! program_exists 'python3'; then
echo "${RED}python3 prerequisite is missing. Exiting.${NC}"
exit 1
fi

export PATH=$STATUSREACTPATH:$PATH
if ! program_exists 'conan'; then
if ! program_exists 'pip3'; then
echo "${RED}pip3 package manager not found. Exiting.${NC}"
exit 1
fi

echo "${RED}Conan package manager not found. Installing...${NC}"
pip3 install conan==$(toolversion conan)
echo "${RED}Conan package manager not found. Exiting...${NC}"
exit 1
fi

conan remote add --insert 0 -f status-im https://conan.status.im
Expand Down
75 changes: 75 additions & 0 deletions scripts/lib/setup/nix/conan/default.nix
@@ -0,0 +1,75 @@
# Taken from https://github.com/NixOS/nixpkgs/commit/7c860b5fd8e7e721c99ceaf4bcf61b70cfe22768, as the pinned version was broken (conan<-python<-pylint)

{ lib, python3, git }:

let newPython = python3.override {
packageOverrides = self: super: {
distro = super.distro.overridePythonAttrs (oldAttrs: rec {
version = "1.1.0";
src = oldAttrs.src.override {
inherit version;
sha256 = "1vn1db2akw98ybnpns92qi11v94hydwp130s8753k6ikby95883j";
};
});
node-semver = super.node-semver.overridePythonAttrs (oldAttrs: rec {
version = "0.6.1";
src = oldAttrs.src.override {
inherit version;
sha256 = "1dv6mjsm67l1razcgmq66riqmsb36wns17mnipqr610v0z0zf5j0";
};
});
future = super.future.overridePythonAttrs (oldAttrs: rec {
version = "0.16.0";
src = oldAttrs.src.override {
inherit version;
sha256 = "1nzy1k4m9966sikp0qka7lirh8sqrsyainyf8rk97db7nwdfv773";
};
});
tqdm = super.tqdm.overridePythonAttrs (oldAttrs: rec {
version = "4.28.1";
src = oldAttrs.src.override {
inherit version;
sha256 = "1fyybgbmlr8ms32j7h76hz5g9xc6nf0644mwhc40a0s5k14makav";
};
});
};
};

in newPython.pkgs.buildPythonApplication rec {
version = "1.12.0";
pname = "conan";

src = newPython.pkgs.fetchPypi {
inherit pname version;
sha256 = "0hgy3wfy96likdchz42h9mawfjw4dxx7k2iinrrlhph7128kji1j";
};
checkInputs = [
git
] ++ (with newPython.pkgs; [
codecov
mock
node-semver
nose
parameterized
webtest
]);

propagatedBuildInputs = with newPython.pkgs; [
colorama deprecation distro fasteners bottle
future node-semver patch pygments pluginbase
pyjwt pylint pyyaml requests six tqdm
];

checkPhase = ''
export HOME="$TMP/conan-home"
mkdir -p "$HOME"
'';

meta = with lib; {
homepage = https://conan.io;
description = "Decentralized and portable C/C++ package manager";
license = licenses.mit;
maintainers = with maintainers; [ HaoZeke ];
platforms = platforms.linux;
};
}

0 comments on commit cb62ee1

Please sign in to comment.