我正在尝试基于Freemind构建Freeplane派生,请参阅:https://github.com/razvan-panda/nixpkgs/blob/freeplane/pkgs/applications/misc/freeplane/default.nix
{ stdenv, fetchurl, jdk, jre, gradle }:
stdenv.mkDerivation rec {
name = "freeplane-${version}";
version = "1.6.13";
src = fetchurl {
url = "mirror://sourceforge/project/freeplane/freeplane%20stable/freeplane_src-${version}.tar.gz";
sha256 = "0aabn6lqh2fdgdnfjg3j1rjq0bn4d1947l6ar2fycpj3jy9g3ccp";
};
buildInputs = [ jdk gradle ];
buildPhase = "gradle dist";
installPhase = ''
mkdir -p $out/{bin,nix-support}
cp -r ../bin/dist $out/nix-support
sed -i 's/which/type -p/' $out/nix-support/dist/freeplane.sh
cat >$out/bin/freeplane <<EOF
#! /bin/sh
JAVA_HOME=${jre} $out/nix-support/dist/freeplane.sh
EOF
chmod +x $out/{bin/freeplane,nix-support/dist/freeplane.sh}
'';
meta = with stdenv.lib; {
description = "Mind-mapping software";
homepage = https://www.freeplane.org/wiki/index.php/Home;
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
}
在gradle构建步骤中,它引发以下错误:
构建路径‘/nix/store/9dc1x2aya5p8xj4lq9jl0xjnf08n7g6l-freeplane-1.6.13’拆包源拆包源档案/nix/store/c0j5hgpfs0agh3xdnpx4qjy82aqkiidv-freeplane_src-1.6.13.tar.gz源根是freeplane-1.6.13,将SOURCE_DATE_EPOCH设置为时间戳文件freeplane-1.6.13 / gitinfo.txt的1517769626修补程序源不配置配置脚本,不执行任何操作
FAILURE:构建因异常而失败。
出了什么问题:无法为Linux amd64加载本机库'libnative-platform.so'。
尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。 “ /nix/store/id4vfk3r6fd4zpyb15dq9xfghf342qaa-freeplane-1.6.13.drv”的构建器失败,出现退出代码1错误:构建‘/nix/store/id4vfk3r6fd4zpyb15dq9xfghf342qaa-freeplane-1.6.13.drv’失败
从终端运行gradle dist
可以正常工作。我猜测可能是全球安装的Nix软件包之一提供了解决此问题的方法,并且在构建期间不可见。
我进行了很多搜索,但找不到任何可行的解决方案。例如,删除~/.gradle
文件夹无济于事。
更新
要仅重现git clone https://github.com/razvan-panda/nixpkgs
,请签出freeplane分支并在存储库的根目录中运行nix-build -A freeplane
。
要解决此错误:What went wrong: Failed to load native library 'libnative-platform.so' for Linux amd64.
请执行以下操作:
libnative-platform.so
是否在该目录中)。gradle clean build
或-g
选项运行--gradle-user-home
并传递其值。 Ex:
mkdir /tmp/newG_H_Folder; gradle clean build -g /tmp/newG_H_Folder
,您将看到Gradle将填充所有必需的文件夹/文件(即使在运行任何任务或任何选项之前,它也需要运行)现在位于新的Gradle主页中文件夹(即/ tmp / newG_H_Folder / .gradle目录)。 从此文件夹,您可以将native
文件夹复制-just到用户的〜/ .gradle文件夹(如果需要,请先备份〜/ .gradle中的现有本机文件夹到)(如果已存在)-或将整个。gradle文件夹复制到您的〜(主目录)中。 然后重新运行Gradle任务,它将不再出错。Gradle docs说:
https://docs.gradle.org/current/userguide/command_line_interface.html-g,--gradle-user-home指定Gradle用户的主目录。默认值为用户主目录中的.gradle目录。