diff options
Diffstat (limited to 'pkgs/by-name/od')
-rw-r--r-- | pkgs/by-name/od/odoo/package.nix | 111 | ||||
-rwxr-xr-x | pkgs/by-name/od/odoo/update.sh | 26 | ||||
-rw-r--r-- | pkgs/by-name/od/odoo15/package.nix | 121 | ||||
-rw-r--r-- | pkgs/by-name/od/odoo16/package.nix | 116 |
4 files changed, 374 insertions, 0 deletions
diff --git a/pkgs/by-name/od/odoo/package.nix b/pkgs/by-name/od/odoo/package.nix new file mode 100644 index 0000000000000..f2239bd5d59e3 --- /dev/null +++ b/pkgs/by-name/od/odoo/package.nix @@ -0,0 +1,111 @@ +{ stdenv +, lib +, fetchgit +, fetchzip +, python310 +, rtlcss +, wkhtmltopdf +, nixosTests +, odoo_version ? "17.0" +, odoo_release ? "20240610" +}: + +let + python = python310.override { + packageOverrides = final: prev: { + # requirements.txt fixes docutils at 0.17; the default 0.21.1 tested throws exceptions + docutils-0_17 = prev.docutils.overridePythonAttrs (old: rec { + version = "0.17"; + src = fetchgit { + url = "git://repo.or.cz/docutils.git"; + rev = "docutils-${version}"; + hash = "sha256-O/9q/Dg1DBIxKdNBOhDV16yy5ez0QANJYMjeovDoWX8="; + }; + buildInputs = with prev; [setuptools]; + }); + }; + }; +in python.pkgs.buildPythonApplication rec { + pname = "odoo"; + version = "${odoo_version}.${odoo_release}"; + + format = "setuptools"; + + src = fetchzip { + # find latest version on https://nightly.odoo.com/${odoo_version}/nightly/src + url = "https://nightly.odoo.com/${odoo_version}/nightly/src/odoo_${version}.zip"; + name = "${pname}-${version}"; + hash = "sha256-blibGJyaz+MxMazOXhPbGBAJWZoGubirwSnjVYyLBJs="; # odoo + }; + + # needs some investigation + doCheck = false; + + makeWrapperArgs = [ + "--prefix" "PATH" ":" "${lib.makeBinPath [ wkhtmltopdf rtlcss ]}" + ]; + + propagatedBuildInputs = with python.pkgs; [ + babel + chardet + cryptography + decorator + docutils-0_17 # sphinx has a docutils requirement >= 18 + ebaysdk + freezegun + gevent + greenlet + idna + jinja2 + libsass + lxml + markupsafe + num2words + ofxparse + passlib + pillow + polib + psutil + psycopg2 + pydot + pyopenssl + pypdf2 + pyserial + python-dateutil + python-ldap + python-stdnum + pytz + pyusb + qrcode + reportlab + requests + rjsmin + urllib3 + vobject + werkzeug + xlrd + xlsxwriter + xlwt + zeep + + setuptools + mock + ]; + + # takes 5+ minutes and there are not files to strip + dontStrip = true; + + passthru = { + updateScript = ./update.sh; + tests = { + inherit (nixosTests) odoo; + }; + }; + + meta = with lib; { + description = "Open Source ERP and CRM"; + homepage = "https://www.odoo.com/"; + license = licenses.lgpl3Only; + maintainers = with maintainers; [ mkg20001 siriobalmelli ]; + }; +} diff --git a/pkgs/by-name/od/odoo/update.sh b/pkgs/by-name/od/odoo/update.sh new file mode 100755 index 0000000000000..e9c50ccb50815 --- /dev/null +++ b/pkgs/by-name/od/odoo/update.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p curl gnused nix coreutils nix-prefetch + +set -euo pipefail + +VERSION="17.0" # must be incremented manually + +RELEASE="$( + curl "https://nightly.odoo.com/$VERSION/nightly/src/" | + sed -nE 's/.*odoo_'"$VERSION"'.(20[0-9]{6}).tar.gz.*/\1/p' | + tail -n 1 +)" + +latestVersion="$VERSION.$RELEASE" +currentVersion=$(nix-instantiate --eval -E "with import ./. {}; odoo.version or (lib.getVersion odoo)" | tr -d '"') + +if [[ "$currentVersion" == "$latestVersion" ]]; then + echo "odoo is up-to-date: $currentVersion" + exit 0 +fi + +cd "$(dirname "${BASH_SOURCE[0]}")" + +sed -ri "s| hash.+ # odoo| hash = \"$(nix-prefetch -q fetchzip --url "https://nightly.odoo.com/${VERSION}/nightly/src/odoo_${latestVersion}.zip")\"; # odoo|g" package.nix +sed -ri "s|, odoo_version \? .+|, odoo_version ? \"$VERSION\"|" package.nix +sed -ri "s|, odoo_release \? .+|, odoo_release ? \"$RELEASE\"|" package.nix diff --git a/pkgs/by-name/od/odoo15/package.nix b/pkgs/by-name/od/odoo15/package.nix new file mode 100644 index 0000000000000..a3255c4aa101c --- /dev/null +++ b/pkgs/by-name/od/odoo15/package.nix @@ -0,0 +1,121 @@ +{ stdenv, lib, fetchFromGitHub, fetchzip, python310, rtlcss, wkhtmltopdf +, nixosTests }: + +let + python = python310.override { + packageOverrides = self: super: { + pypdf2 = super.pypdf2.overridePythonAttrs (old: rec { + version = "1.28.6"; + format = "setuptools"; + + src = fetchFromGitHub { + owner = "py-pdf"; + repo = "pypdf"; + rev = version; + fetchSubmodules = true; + hash = "sha256-WnRbsy/PJcotZqY9mJPLadrYqkXykOVifLIbDyNf4s4="; + }; + + nativeBuildInputs = [ ]; + + nativeCheckInputs = with self; [ pytestCheckHook pillow ]; + }); + flask = super.flask.overridePythonAttrs (old: rec { + version = "2.1.3"; + src = old.src.override { + inherit version; + hash = "sha256-FZcuUBffBXXD1sCQuhaLbbkCWeYgrI1+qBOjlrrVtss="; + }; + }); + werkzeug = super.werkzeug.overridePythonAttrs (old: rec { + version = "2.1.2"; + src = old.src.override { + inherit version; + hash = "sha256-HOCOgJPtZ9Y41jh5/Rujc1gX96gN42dNKT9ZhPJftuY="; + }; + }); + }; + }; + + odoo_version = "15.0"; + odoo_release = "20230816"; +in python.pkgs.buildPythonApplication rec { + pname = "odoo15"; + version = "${odoo_version}.${odoo_release}"; + + format = "setuptools"; + + # latest release is at https://github.com/odoo/docker/blob/master/15.0/Dockerfile + src = fetchzip { + url = "https://nightly.odoo.com/${odoo_version}/nightly/src/odoo_${version}.zip"; + name = "${pname}-${version}"; + hash = "sha256-h81JA0o44DVtl/bZ52rGQfg54TigwQcNpcMjQbi0zIQ="; # odoo + }; + + # needs some investigation + doCheck = false; + + makeWrapperArgs = [ + "--prefix" + "PATH" + ":" + "${lib.makeBinPath [ wkhtmltopdf rtlcss ]}" + ]; + + propagatedBuildInputs = with python.pkgs; [ + babel + chardet + decorator + docutils + ebaysdk + freezegun + gevent + greenlet + idna + jinja2 + libsass + lxml + markupsafe + mock + num2words + ofxparse + passlib + pillow + polib + psutil + psycopg2 + pydot + pyopenssl + pypdf2 + pyserial + python-dateutil + python-ldap + python-stdnum + pytz + pyusb + qrcode + reportlab + requests + setuptools + vobject + werkzeug + xlrd + xlsxwriter + xlwt + zeep + ]; + + # takes 5+ minutes and there are not files to strip + dontStrip = true; + + passthru = { + tests = { inherit (nixosTests) odoo15; }; + }; + + meta = with lib; { + description = "Open Source ERP and CRM"; + homepage = "https://www.odoo.com/"; + license = licenses.lgpl3Only; + maintainers = with maintainers; [ mkg20001 ]; + }; +} diff --git a/pkgs/by-name/od/odoo16/package.nix b/pkgs/by-name/od/odoo16/package.nix new file mode 100644 index 0000000000000..6e68228d73479 --- /dev/null +++ b/pkgs/by-name/od/odoo16/package.nix @@ -0,0 +1,116 @@ +{ stdenv +, lib +, fetchzip +, python310 +, rtlcss +, wkhtmltopdf +, nixosTests +}: + +let + python = python310.override { + packageOverrides = self: super: { + flask = super.flask.overridePythonAttrs (old: rec { + version = "2.3.3"; + src = old.src.override { + inherit version; + hash = "sha256-CcNHqSqn/0qOfzIGeV8w2CZlS684uHPQdEzVccpgnvw="; + }; + }); + werkzeug = super.werkzeug.overridePythonAttrs (old: rec { + version = "2.3.7"; + src = old.src.override { + inherit version; + hash = "sha256-K4wORHtLnbzIXdl7butNy69si2w74L1lTiVVPgohV9g="; + }; + disabledTests = old.disabledTests ++ [ + "test_response_body" + ]; + }); + }; + }; + + odoo_version = "16.0"; + odoo_release = "20231024"; +in python.pkgs.buildPythonApplication rec { + pname = "odoo"; + version = "${odoo_version}.${odoo_release}"; + + format = "setuptools"; + + # latest release is at https://github.com/odoo/docker/blob/master/16.0/Dockerfile + src = fetchzip { + url = "https://nightly.odoo.com/${odoo_version}/nightly/src/odoo_${version}.zip"; + name = "${pname}-${version}"; + hash = "sha256-Ux8RfA7kWLKissBBY5wrfL+aKKw++5BxjP3Vw0JAOsk="; # odoo + }; + + # needs some investigation + doCheck = false; + + makeWrapperArgs = [ + "--prefix" "PATH" ":" "${lib.makeBinPath [ wkhtmltopdf rtlcss ]}" + ]; + + propagatedBuildInputs = with python.pkgs; [ + babel + chardet + cryptography + decorator + docutils + ebaysdk + freezegun + gevent + greenlet + idna + jinja2 + libsass + lxml + markupsafe + num2words + ofxparse + passlib + pillow + polib + psutil + psycopg2 + pydot + pyopenssl + pypdf2 + pyserial + python-dateutil + python-ldap + python-stdnum + pytz + pyusb + qrcode + reportlab + requests + urllib3 + vobject + werkzeug + xlrd + xlsxwriter + xlwt + zeep + + setuptools + mock + ]; + + # takes 5+ minutes and there are not files to strip + dontStrip = true; + + passthru = { + tests = { + inherit (nixosTests) odoo; + }; + }; + + meta = with lib; { + description = "Open Source ERP and CRM"; + homepage = "https://www.odoo.com/"; + license = licenses.lgpl3Only; + maintainers = with maintainers; [ mkg20001 ]; + }; +} |