Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

python312Packages.kaleido: init at 0.2.1 #339136

Merged
merged 5 commits into from
Sep 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
117 changes: 117 additions & 0 deletions pkgs/development/python-modules/kaleido/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
{
lib,
stdenv,
python,
buildPythonPackage,
callPackage,
fetchurl,
autoPatchelfHook,
bash,
dejavu_fonts,
expat,
fontconfig,
lato,
libGL,
makeWrapper,
nspr,
nss,
sbclPackages,
sqlite,
}:

buildPythonPackage rec {
pname = "kaleido";
version = "0.2.1";
format = "wheel";

src =
{
# This library is so cursed that I have to use fetchurl instead of fetchPypi. I am not happy.
x86_64-linux = fetchurl {
url = "https://files.pythonhosted.org/packages/py2.py3/k/kaleido/kaleido-${version}-py2.py3-none-manylinux1_x86_64.whl";
hash = "sha256-qiHPG/HHj4+lCp99ReEAPDh709b+CnZ8+780S5W9w6g=";
};
aarch64-linux = fetchurl {
url = "https://files.pythonhosted.org/packages/py2.py3/k/kaleido/kaleido-${version}-py2.py3-none-manylinux2014_aarch64.whl";
hash = "sha256-hFgZhEyAgslGnZwX5CYh+/hcKyN++KhuyKhSf5i2USo=";
};
x86_64-darwin = fetchurl {
url = "https://files.pythonhosted.org/packages/py2.py3/k/kaleido/kaleido-${version}-py2.py3-none-macosx_10_11_x86_64.whl";
hash = "sha256-ym9z5/8AquvyhD9z8dO6zeGTDvUEEJP+drg6FXhQSac=";
};
aarch64-darwin = fetchurl {
url = "https://files.pythonhosted.org/packages/py2.py3/k/kaleido/kaleido-${version}-py2.py3-none-macosx_11_0_arm64.whl";
hash = "sha256-u5pdH3EDV9XUMu4kDvZlim0STD5hCTWBe0tC2px4fAU=";
};
}
."${stdenv.hostPlatform.system}"
or (throw "Unsupported system for ${pname}: ${stdenv.hostPlatform.system}");

nativeBuildInputs = (lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ]) ++ [
makeWrapper
];
buildInputs = [
Pandapip1 marked this conversation as resolved.
Show resolved Hide resolved
bash
dejavu_fonts
expat
fontconfig
lato
libGL
nspr
nss
sbclPackages.cl-dejavu
sqlite
];

pythonImportsCheck = [ "kaleido" ];

postInstall = ''
# Expose kaleido binary
mkdir -p $out/bin
ln -s $out/${python.sitePackages}/kaleido/executable/bin/kaleido $out/bin/kaleido

# Replace bundled swiftshader with libGL
rm -rf $out/${python.sitePackages}/kaleido/executable/bin/swiftshader
ln -s ${libGL}/lib $out/${python.sitePackages}/kaleido/executable/bin/swiftshader

# Relace bundled libraries with nixpkgs-packaged libraries
rm -rf $out/${python.sitePackages}/kaleido/executable/lib
mkdir -p $out/${python.sitePackages}/kaleido/executable/lib
ln -s ${expat}/lib/* $out/${python.sitePackages}/kaleido/executable/lib/
ln -s ${nspr}/lib/* $out/${python.sitePackages}/kaleido/executable/lib/
ln -s ${nss}/lib/* $out/${python.sitePackages}/kaleido/executable/lib/
ln -s ${sqlite}/lib/* $out/${python.sitePackages}/kaleido/executable/lib/

# Replace bundled font configuration with nixpkgs-packaged font configuration
rm -rf $out/${python.sitePackages}/kaleido/executable/etc/fonts
mkdir -p $out/${python.sitePackages}/kaleido/executable/etc/fonts/conf.d
ln -s ${fontconfig}/etc/fonts/fonts.conf $out/${python.sitePackages}/kaleido/executable/etc/fonts/
ls -s ${fontconfig}/etc/fonts/conf.d/* $out/${python.sitePackages}/kaleido/executable/etc/fonts/conf.d/
ln -s ${sbclPackages.cl-dejavu}/dejavu-fonts-ttf-2.37/fontconfig/* $out/${python.sitePackages}/kaleido/executable/etc/fonts/conf.d/

# Replace bundled fonts with nixpkgs-packaged fonts
# Currently this causes an issue where the fonts aren't found. I'm not sure why, so I'm leaving this commented out for now.
#rm -rf $out/${python.sitePackages}/kaleido/executable/xdg/fonts
#mkdir -p $out/${python.sitePackages}/kaleido/executable/xdg/fonts/truetype/dejavu $out/${python.sitePackages}/kaleido/executable/xdg/fonts/truetype/lato
#ln -s ${dejavu_fonts}/share/fonts/truetype/* $out/${python.sitePackages}/kaleido/executable/xdg/fonts/truetype/dejavu/
#ln -s ${lato}/share/fonts/lato/* $out/${python.sitePackages}/kaleido/executable/xdg/fonts/truetype/lato/
'';

passthru.tests.kaleido = callPackage ./tests.nix { };

meta = {
description = "Fast static image export for web-based visualization libraries with zero dependencies";
homepage = "https://github.com/plotly/Kaleido";
changelog = "https://github.com/plotly/Kaleido/releases";
platforms = [
"x86_64-linux"
"x86_64-darwin"
"aarch64-linux"
"aarch64-darwin"
];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; # Trust me, I'm not happy. But after literal hours of trying to reverse-engineer their build system and getting nowhere, I'll use the stupid binaries >:(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the third attempt, as far as I know, but no one has been able to build it from the source.😢

license = lib.licenses.mit;
maintainers = with lib.maintainers; [ pandapip1 ];
broken = stdenv.isDarwin; # Tests fail on darwin for some reason
};
}
15 changes: 15 additions & 0 deletions pkgs/development/python-modules/kaleido/tests.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
runCommand,
python,
plotly,
pandas,
kaleido,
}:

runCommand "${kaleido.pname}-tests" {
nativeBuildInputs = [
python
plotly
pandas
];
} "python3 ${./tests.py}"
11 changes: 11 additions & 0 deletions pkgs/development/python-modules/kaleido/tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import plotly.express as px
import os
import os.path

out = os.environ["out"]
if not os.path.exists(out):
os.makedirs(out)

outfile = os.path.join(out, "figure.png")
fig = px.scatter(px.data.iris(), x="sepal_length", y="sepal_width", color="species")
fig.write_image(outfile, engine="kaleido")
4 changes: 3 additions & 1 deletion pkgs/development/python-modules/plotly/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
setuptools,
packaging,
tenacity,
kaleido,
}:

buildPythonPackage rec {
Expand All @@ -29,6 +30,7 @@ buildPythonPackage rec {
dependencies = [
packaging
tenacity
kaleido
];

pythonImportsCheck = [ "plotly" ];
Expand All @@ -41,6 +43,6 @@ buildPythonPackage rec {
downloadPage = "https://github.com/plotly/plotly.py";
homepage = "https://plot.ly/python/";
license = with licenses; [ mit ];
maintainers = [ ];
maintainers = with maintainers; [ pandapip1 ];
};
}
2 changes: 2 additions & 0 deletions pkgs/top-level/python-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -6612,6 +6612,8 @@ self: super: with self; {

kaldi-active-grammar = callPackage ../development/python-modules/kaldi-active-grammar { };

kaleido = callPackage ../development/python-modules/kaleido { };

kanidm = callPackage ../development/python-modules/kanidm { };

kaptan = callPackage ../development/python-modules/kaptan { };
Expand Down