我可以在 distcheck 期间使用 $dc_install_base 安装 systemd 文件吗?

2024-03-07

我有以下用于安装 systemd 服务文件的 Autotools 代码,该文件必须安装在外部$prefix到 pkg-config 变量指定的目录:

(我知道这是不正确的,但我无法改变 systemd 的工作方式。)

配置文件

AC_ARG_WITH([systemdsystemunitdir],
    AS_HELP_STRING([--with-systemdsystemunitdir=DIR],
        [Directory for systemd service files]),
    [],
    [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)])
AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])

当你跑步时make distcheck,您的软件包将被安装到临时暂存目录中,然后被卸载。由于安装了外部的东西$prefix会打破这个,我必须覆盖--with-systemdsystemunitdirdistcheck 的配置选项。我这样做,因为临时目录的位置在变量中可用$dc_install_base。我无法在这里传递绝对路径,并且$prefix或任何其他$prefix-派生变量,例如$libdir在 distcheck 运行期间将不正确。

生成文件.am

AM_DISTCHECK_CONFIGURE_FLAGS = \
    --with-systemdsystemunitdir=$$dc_install_base/$(systemdsystemunitdir)

我的问题有两个:

  • 此功能 ($dc_install_base)似乎没有在任何地方记录。是官方支持还是实施细节?我相信,通常 Automake 私有变量中有两个连续的下划线。

  • 有更好的方法来做我想做的事情吗?我知道自动工具的方式是设置systemdsystemunitdir到一个子目录$prefix默认情况下,并让用户或发行版覆盖它。然而,对我来说,一个重要的要求是应该能够从 tarball 中提取包,运行./configure && make and sudo make install让一切正常运转。如果 systemd 文件安装在 pkg-config 指定位置之外的其他位置,它将无法工作,而且会默默地失败。


有点晚了但是...

我也有类似的问题gobject-introspection我(希望)通过添加几个配置选项和类似的东西来解决:

AM_DISTCHECK_CONFIGURE_FLAGS= \
    --with-girdir='$$(datadir)/gir-1.0' \
    --with-typelibdir='$$(libdir)/girepository-1.0'

对于你的情况,我认为以下应该有效:

AM_DISTCHECK_CONFIGURE_FLAGS = \
    --with-systemdsystemunitdir='$$(prefix)/$(systemdsystemunitdir)'

诀窍是你必须保护$(prefix)针对两个扩展: make 扩展(因此是双$$)以及在期间执行的壳扩展configure调用(使用单引号)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以在 distcheck 期间使用 $dc_install_base 安装 systemd 文件吗? 的相关文章

  • automake自动编译工具

    automake自动编译生成makefile文件 xff0c 使用automake xff0c 程序开发人员只需要写简单的宏文件 xff0c 生成configure xff0c 再生成Makefile in xff0c 最终生成一个惯例的m
  • 使用 Eclipse CDT 构建多模块 C 项目(即解决方案)

    我将从 Netbeans 迁移到 Eclipse 在 Ubuntu 12 0 4 上 我有一个 C 应用程序 它由几个子项目组成 这些子项目是库 共享和静态 以及独立的可执行文件 我不知道如何创建 父 项目foo 其中包含组件项目 foob
  • git 构建期间“无法在 @INC 中找到 ExtUtils/MakeMaker.pm”

    我正在建造git在一个非常小的系统 Ubuntu 16 04 docker 镜像 上 不使用包管理器 除了wget xz utils make and gcc 因此 我安装先决条件如下 apt get update apt get inst
  • GNU autoconf/automake 的帮助脚本应该放在哪里?

    我正在开发一个将与 GNU autoconf automake 一起分发的项目 并且我有一组调用 awk 脚本的 bash 脚本 我希望 bash 脚本最终出现在 PATH 中 而不是 awk 脚本中 我应该如何将它们插入到项目中 它们应该
  • 如何使用自动工具更改包含文件路径?

    我正在 ubuntu 中开发一个简单的聊天应用程序 它使用 crypto crypto 头文件的文件夹是 usr include crypto 当我将源标签栏上传到CentOS 我发现crypto 的头文件的文件夹是 usr include
  • 使用 cygwin 在 Windows 上安装 GMP

    我是 C 新手 我必须处理大整数 所以我必须通过 Cygwin 安装 GMP 我能找到的有关安装此程序的任何文档都假设您知道自己在说什么 而我确实不知道 无论如何 我有权利 tar或者其他什么 正确提取它 现在我看到的任何网站都说要运行 c
  • Autoconf 子目录与子包相互依赖吗?

    我手上有一个大型项目 master 它被分成几个组件 liba b c d 以方便构建和维护 在构建整个包时 必须按顺序构建所有子组件 并且其中一些包相互依赖 更明确地说 liba 是 b c 和 d 的先决条件 并且 liba 的存在由配
  • Automake - 安装版本“automake-1.14.1”时遇到困难

    我在 Rapbian 2014 09 09 wheezy raspbian 发行版上安装 automake 1 14 1 时遇到问题 我写sh configure然后我写了make然后终端写信给我 make CDPATH ZSH VERSI
  • Autoconf 在 OS X 上使用错误的 AR

    我正在 OS X 上测试 我们有一个configure ac and Makefile am Autotools 选择错误AR and ARFLAGS对于平台 它发生在 和没有 AM PROG AR in Makefile am egrep
  • 如何将 autoconf/automake 指向非标准包

    我正在尝试在 RedHat Linux 机器上构建 ZooKeeper ZooKeeper 到底是什么可能并不重要 当我按照包装说明进行操作时 我得到 autoreconf if aclocal configure ac 33 warnin
  • Qt 和 QMake 构建目录

    我想从源代码树中构建 qt 和 qt 应用程序 你知道如何使用configure和qmake从命令行设置 obj目录吗 如果我正确理解问题你应该设置对象目录 http qt nokia com doc 4 5 qmake variable
  • “Help”字符串变量替换“configure --help”

    我有一个字符串 我想多次使用它来输出configure help 所以我尝试做这样的事情configure ac AC ARG ENABLE foobar AS HELP STRING enable foobar foobar help s
  • 我可以在 distcheck 期间使用 $dc_install_base 安装 systemd 文件吗?

    我有以下用于安装 systemd 服务文件的 Autotools 代码 该文件必须安装在外部 prefix到 pkg config 变量指定的目录 我知道这是不正确的 但我无法改变 systemd 的工作方式 配置文件 AC ARG WIT
  • 如何将额外的自定义 ./configure autotools 选项传递给 Buildroot 包?

    例如 我想添加选项 enable foo enable bar to a configure命令 Many configure选项可以通过间接设置BR2 配置 但许多软件有如此多的选项 以至于不可能只有一个BR2 为每一个可能的配置 con
  • LDADD 和 LIBADD 有什么区别?

    我正在尝试设置一个混合使用 libtool 库和可执行文件的 automake 项目 并且我很难理解 automake 文档 尤其是 as 涉及告诉编译器进行链接 那么有人可以解释一下之间的区别吗LDADD and LIBADD 像 什么时
  • 在 Makefile.am 中调用 SED 获取源

    我有 C 代码 需要在编译之前对其进行 sed 处理 我如何将其放入Makefile am 我尝试了典型的 makefile 设置 目标似乎不存在 gentest cc SED i s FIND REPLACE gentest cc 如果您
  • 使用 GCC 和 autotools 为各个源文件设置编译标志的最佳方法是什么?

    我需要使用自动工具禁用单个文件的优化标志 最好的方法是什么 您是指单个源文件还是单个可执行文件 禁用可执行文件的优化很简单 bin PROGRAMS myprog myprog SOURCES foo c bar c myprog CFLA
  • 在 C 中使用 GNU automake 中的解析器

    我是 GNU autotools 的新手 在我的项目中使用了 lex 和 yacc 解析器 将它们作为 makefile am 中的源代码会产生以下错误 配置 in AC CHECK PROGS YACC bison yacc none i
  • 使用maven2构建基于autotools的C/C++包

    我正在开发一个 MATLAB Java 和 C C 组件集合 这些组件都可以互操作 但具有明显不同的编译 安装步骤 我们目前不为 MATLAB 编译任何内容 使用 maven2 进行 Java 构建和单元测试 并使用 autotools 进
  • 标题的宏定义,放在哪里?

    定义头文件依赖的宏时 例如 FILE OFFSET BITS FUSE USE VERSION GNU SOURCE其中 放置它们的最佳位置在哪里 我考虑过的一些可能性包括 位于依赖于该文件中包含的标头公开的定义的任何源文件的顶部 紧接在相

随机推荐

  • 是否可以对 Grid.Column 进行动画处理?

    我可以制作动画吗Grid Column财产 我需要搬家
  • 使用 Jetpack Compose 构造环

    I am learning Jetpack Compose and would like to build something like this 我尝试过通过堆叠使用框布局CircularProgressIndicator但需要对圆圈大小
  • 如何使用模型属性作为变量 ng-click

    我希望将 ng click 的函数调用作为字符串存储在我的模型中 我无法使用 ng click m func 如果我使用 ng click m func 也不起作用 http jsfiddle net j8wW5 19 http jsfid
  • redux-saga 调用调用的函数中对“this”的引用为空

    我在学redux saga我正在尝试将其集成到一个使用 openapi generator 生成的 API 的项目中 该 API 会生成如下所示的输出 async loginUser body Login Promise
  • Pandas - 查找每个组贡献的百分比

    我试图找到每个日期组所做的百分比贡献 下面给出的是我的数据的样子 期望找到每个产品在给定日期的贡献 date product quantity 2020 01 prod a 100 2020 01 prod b 200 2020 01 pr
  • 使用 vgg16 的验证集准确性较低

    我正在为一个项目进行狗品种分类 遇到了一个我不知道如何解决的重大问题 数据集是由以下机构提供的狗的图像斯坦福狗数据集 http vision stanford edu aditya86 ImageNetDogs 我用 keras 进行数据增
  • 在 Javascript/jQuery 中动态添加表行的绑定点击事件

    问题陈述 我有一张桌子thead静态创建 并且 tr td 在tbody动态创建的 我必须实现的是 当用户单击表格上的任意位置时 我需要获取val 被单击的行的第一列 为了测试这一点 我使用绑定一个点击事件on到父元素类 即类tbody 而
  • WPF 互斥列表框

    我有一个应用程序 其中有一个列表框的列表框 我想让 InnerList 框互斥 我的 ViewModel 有一个集合 Foos 它有一个描述 一个 IsSelected 属性和一个集合 Bars 它有一个名称和 IsSelected 属性
  • android studio 中缺少模拟器工具窗口

    我的 Android Studio IDE 缺少工具窗口 模拟器 View gt 工具窗口尽管 在工具窗口中启动 选项已选中File gt Settings gt Tools gt Emulator 我不知道是什么改变了它 但它曾经正常工作
  • 无法将新生成的 Play 框架项目导入 IntelliJ IDEA 15

    当我尝试将新创建的 play 框架项目导入到我的 IntelliJ IDEA 15 时 出现以下异常 Java HotSpot TM 64 Bit Server VM warning ignoring option MaxPermSize
  • 从当前工作树创建分支并重置为 HEAD

    我目前正在开发一个功能 结果比预期的要大 所以最好创建一个分支来处理它 因此 我需要从当前工作目录创建一个新分支 并将 master 分支重置为当前 HEAD 以便可以对生产环境进行一些修复 不知何故 这听起来像是一项简单的任务 但我不太明
  • Angular2 ng-模板位于单独的文件中[重复]

    这个问题在这里已经有答案了 angular2如何使用不同文件中的ng template 当我将 ng template 放在我使用的同一个 HTML 中时 它可以工作 但是当我将 ng template 移动到一个单独的文件中时 它就无法工
  • 在 C# 中捕获本机 C++ 异常

    我有一些本机 C 类库 我将它们封装在 C NET 中 然后从 C 调用它们 三层 我可以从 C NET 中抛出异常 并愉快地在 C 中捕获它们 问题是 我捕获本机 C 异常的唯一方法是捕获 System Exception 这很好 但在从
  • 为什么 Java 从套接字读取随机数量而不是整个消息?

    我正在做一个项目 有一个关于 Java 套接字的问题 可以找到源文件here https github com ChrisLundquist Handbrake Network Queue blob master java src File
  • C++ - 如何计算字符频率?

    我需要编写代码来将唯一字符及其频率存储在动态数组中 随着新数据的到来 我需要增加它的大小 在这种情况下 新数据将是遇到的新字符 我想到的算法是每次读取给定字符串时检查已知字符列表 如果它是一个新字符 我需要将数组大小增加 1 如果它不是一个
  • clojure 是否具有与 C# 等价的 Yield?

    我正在读电子书Scala 和 Clojure 中的函数式编程模式 https pragprog com book mbfpp functional programming patterns in scala and clojure并找到了导
  • LAContext canEvaluatePolicy 和 Swift 2

    这是我的 Swift 代码 if LAContext canEvaluatePolicy LAPolicy DeviceOwnerAuthenticationWithBiometrics return true 使用 Swift2 我将代码
  • Spring Batch 访问步骤内的作业参数

    我有以下 Spring Batch Job 配置 Configuration EnableBatchProcessing public class JobConfig Autowired private JobBuilderFactory
  • Rails ActiveRecord - 有没有办法在没有 id 的情况下对表执行操作?

    我有一张一行两列的表格 int version datetime updated 是否有 Rails ActiveRecord 方法来获取和设置这些列中的数据 没有 id 列 我使用此表来跟踪其他表的查询版本 每次查询另一个表后 版本列都会
  • 我可以在 distcheck 期间使用 $dc_install_base 安装 systemd 文件吗?

    我有以下用于安装 systemd 服务文件的 Autotools 代码 该文件必须安装在外部 prefix到 pkg config 变量指定的目录 我知道这是不正确的 但我无法改变 systemd 的工作方式 配置文件 AC ARG WIT