最近我正在维护的CRAN上的软件包出现以下错误: (我没有做任何更改-之前没有错误-CRAN可能添加了其他检查)
结果:警告 运行autoreconf的输出: 自动标头:警告:缺少模板:HAVE_GSL_HEADER 自动标头:使用AC_DEFINE([HAVE_GSL_HEADER],[],[描述]) autoreconf:/ usr / bin / autoheader失败,退出状态:1 口味:r-devel-linux-x86_64-fedora-clang,r-devel-linux-x86_64-fedora-gcc
这是CRAN检查页面的链接: https://cran.r-project.org/web/checks/check_results_ridge.html
错误似乎仅针对r-devel-linux-x86_64-fedora-clang和r-devel-linux-x86_64-fedora-gcc出现。
Github链接到软件包的源代码: https://github.com/SteffenMoritz/ridge
该软件包使用GSL库。 (如果有人在错误消息中对GSL感到疑惑)
不幸的是,我只负责包的维护,对C东西的了解不多。
我认为,错误消息与程序包的R部分无关。我是否必须在C文件中的某处添加AC_DEFINE?
有人可以向我解释一下,错误消息对我说了什么。猜猜这可能已经帮助我弄清楚了。
编辑: 认为我必须更改此文件中的某些内容(只是一个猜测) https://github.com/SteffenMoritz/ridge/blob/master/configure.ac
但是代码如下:
if test "${HAVE_GSL}" = TRUE; then
dnl Define HAVE_GSL_H in src/config.h
AC_CHECK_HEADERS([gsl/gsl_version.h],AC_DEFINE(HAVE_GSL_HEADER), [HAVE_GSL=FALSE])
if test "${HAVE_GSL}" = FALSE; then
AC_MSG_WARN([gsl headers not found, perhaps check the path?])
AC_MSG_WARN([ridge will be installed, but some functions will be
unavailable])
fi
fi
因此似乎有一条语句 AC_DEFINE(HAVE_GSL_HEADER),[HAVE_GSL = FALSE])。
答案 0 :(得分:1)
将以下内容放入名为diff.patch
的文件或顶层目录中的任意文件。
diff --git a/configure.ac b/configure.ac
index e643140..0b256a6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,8 @@ fi
if test "${HAVE_GSL}" = TRUE; then
dnl Define HAVE_GSL_H in src/config.h
- AC_CHECK_HEADERS([gsl/gsl_version.h],AC_DEFINE(HAVE_GSL_HEADER),[HAVE_GSL=FALSE])
+ AC_CHECK_HEADERS([gsl/gsl_version.h],
+ AC_DEFINE(HAVE_GSL_HEADER, [], [Description]),[HAVE_GSL=FALSE])
if test "${HAVE_GSL}" = FALSE; then
AC_MSG_WARN([gsl headers not found, perhaps check the path?])
AC_MSG_WARN([ridge will be installed, but some functions will be unavailable])
运行patch -p1 < diff.patch
。
现在autoreconf
应该重建一切正常。