问题标签 [tup]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
24 浏览

build - Tup -- 手动插入生成的节点

假设我有一个项目 A,它依赖于项目 B,而 B 需要很长时间才能构建。

项目 A 和项目 B 都使用 tup。我已经在其单独的目录中构建了 B 。

我现在可以将 B 复制到 A 中或创建一个指向 B 的子模块,添加构建产品 ( cp -a),并让 tup 相信构建产品没问题吗?

0 投票
1 回答
146 浏览

tup - Tup dependencies from the root directory?

I've tried to create a rule similar to the minimal example:

This works, but I would like to write something like:

Where the PROJ_ROOT variable is the same, even if I add folder depth.
Does tup support this?

0 投票
1 回答
717 浏览

bash - 为 tup 运行的命令设置 pipefail

在大量的 Tupfiles 中,我使用了大量的流水线,例如

这样做的问题是 Tup 调用system执行这些 :-rules in sh,它不支持set -o pipefail. 结果,如果只是command1失败,tup 仍会将其标记为成功,因为它的退出代码为 0。这是非常有问题的。

我知道对此有两种解决方案,但都不是理想的。

一个。我可以放弃流水线,而是这样做:

这会起作用,但需要繁琐地重写一堆规则,更重要的是,每次更新时都会使用更多的磁盘空间和磁盘写入。

b)我可以像这样包装每个命令bash

这似乎稍微好一点,因为它涉及更少的重写,并且避免了 io,但仍然非常麻烦。它还需要'在我的 :-rules 中转义任何内容。

理想情况下,Tup 配置可以指定使用什么 shell/解释器来读取 :-rules。理想情况下,还有一个公共前缀的配置,所以所有脚本都可以运行set -o pipefail &&或任何我想要的。据我所知,这不可能立即实现。system每当 tup 调用规则时,都需要编写一个包装器。但是,也许我错过了 Tup 的某些方面,这些方面将允许比提出的两种解决方案更优雅的东西。

编辑:虽然对系统的调用确实允许我将管道故障“注入”到对系统的调用中。我错过了程序使用系统运行的事实。在邮件列表的一些帮助下,事实证明它们实际上是使用execle. 下面是我用来做插入的代码,以防有人想要完成同样的事情。

解决方案

0 投票
2 回答
15750 浏览

c++ - LLDB 不显示源代码

我正在尝试调试我正在编写的 C++ 程序,但是当我在 LLDB 中运行它并停止程序时,它只向我显示汇编程序,而不是原始源代码。例如,崩溃后我正在尝试调试:

我正在用-O0 -g. 通过 Xcode(我在 OSX 上)或从命令行运行调试器时,我看到了同样的情况。

我还需要做什么才能让源代码显示在 LLDB 中?

补充说明

下面是一个典型的构建命令示例:

较早-O2的存在是因为这是我使用的默认设置,但我相信后者-O0会覆盖它,对吗?

我试过的

  1. 我使用相同的构建设置通过一个简单的“hello world”程序重新创建了这个问题。

  2. 经过一番搜索,我尝试运行dsymutil main.owhich said warning: no debug symbols in executable (-arch x86_64),所以调试符号可能不是由我的构建命令生成的?

  3. 我也尝试添加-gsplit-dwarf到构建命令但没有效果。

  4. 这是我的“hello world”版本中的链接命令:

    clang++ main.o -L/usr/local/lib -g -o 你好

  5. 我在可执行文件和目标文件上运行dwarfdump我在这里读到了)。在我未经训练的眼睛看来,调试符号出现在目标文件中,但不在可执行文件本身中(除非dwarfdump仅适用于目标文件,这是可能的)。所以也许链接阶段是问题所在。或者也许 DWARF 有问题。

  6. 通过在终端中一个接一个地发出构建命令,我现在已经在“hello world”程序中工作了。因此,我猜测这可能是我的构建系统(Tup)的问题,可能是使用不同的工作目录运行命令,因此路径会被破坏或其他原因。

0 投票
1 回答
1366 浏览

lldb - 在构建 Tup 变体时如何让 LLDB 找到源代码?

根据这个问题,我无法让 LLDB 在调试时显示实际的源代码。

感谢对该问题的公认答案,我已将问题追溯到 Tup 如何构建变体(例如调试、生产等):

  1. 它在每个变体的子目录中工作
  2. 不会将源复制到子目录中
  3. 确实.o在子目录中构建所有输出(文件和可执行文件本身)

正因为如此,LLDB在调试时找不到原始源文件。

所以我的问题是:我怎样才能强制 Tup 将不同的路径输入到构建过程中,或者告诉 LLDB 实际发生了什么?

0 投票
1 回答
308 浏览

c++ - Tupfile 中子目录的通配符

我想知道 Tupfile 中是否有目录结构的通配符,例如%Bo,它采用不带扩展名的输入文件名。

我的 Tupfile 规则目前如下所示:

: foreach src/*.cpp |> !cxx_c_debug |> build/d/o/%Bo

: foreach src/ dir /*.cpp |> !cxx_c_debug |> build/d/o/ dir /%Bo

: foreach src/ dir2/subdir /*.cpp |> !cxx_c_debug |> build/d/o/ dir2/subdir /%Bo

...

可以想象,有很多dirsubdir。我想对粗体目录结构使用某种通配符,而不是一一列举。有什么方法可以在不在每个目录中创建新的 Tupfile 的情况下完成此操作?

谢谢

0 投票
0 回答
19 浏览

c++ - G++ 的奇怪输出,使用 Tup 构建系统

我开始在我的 C++ 项目中使用 Tup。我目前的一个是游戏,分为 3 个部分:

  • 第一个是主目录“osumax”;
  • 第二个是我的游戏框架“osumax/Libraries/ns_framework”;
  • 最后是游戏数据“osumax/Libraries/osumax_shared”的API;

目前,osumax_shared 中没有任何内容,因为我正在研究框架。

ns_framework 和 osumax_shared 是动态库(我在Linux下,所以有.so文件)。

libns_framework.so 构建时甚至没有警告,但是当主可执行文件的构建开始时,我有很多错误,只有未定义的引用。有些来自 ns_framework,我可以理解,但我也在使用 TinyXML2(随 apt-get 安装),并且该库中有许多未定义的引用。

这是完整的输出:

链接命令是这个:

我在这里给你两个 Tup 文件(对不起法语评论):

那么,这些错误是来自 Tup 构建系统,还是来自我?

我真的不明白我的错误在哪里,或者如果我做错了什么是 tup 配置。

谢谢你的帮助 !

0 投票
1 回答
765 浏览

c - 使用 VS 工具和 Tup 构建系统进行编译

我正在尝试为 J 编程语言编译一个名为“unbox”的解释器,可以在以下位置找到:https ://github.com/iocane/unbox

它使用 tup 构建系统和 github 指令指定使用 Visual Studio 工具提示符下的 tup 命令。我下载了 Visual Studio 2015 Community,但它没有提供说明中提到的确切提示,因此我使用了 VS2015 x86 x64 Cross Tools 命令提示符。安装 tup 并将其添加到我的路径后,我导航到克隆“unbox”并输入 tup 的目录

但是,这是问题开始的地方,在输入 tup 后,我得到以下信息:

如您所见,文件 VCToolsTelemetry.dat 未在 tup 的数据库中指定。

有谁知道阻止 Visual Studio 使用 VSToolsTelemetry.dat 的方法吗?还是我应该联系拆箱开发人员并让他将该文件添加到数据库中?

任何帮助深表感谢。

0 投票
1 回答
154 浏览

sql - tup SQL 重置错误:数据库被锁定

刚刚在 ubuntu 16.04 上安装了 tup 并得到以下错误:

tup upd 也有错误。

关于如何让 tup 工作的任何想法?

编辑:我从 git ( https://github.com/gittup/tup ) 下载了源代码并逐步执行,错误似乎在 src/tup/db.c:tup_db_commit() 行 933

sqlite3_step 函数返回 SQLITE_BUSY(5)。
我的菜鸟猜测是我正在使用更新版本的 sqlite 并且一些清理工作不再正确完成。但这绝对看起来像是某种 sqllite3 问题。

0 投票
1 回答
92 浏览

git - Git 提交 SHA 作为 tup 构建的二进制文件的一部分

我正在使用 tup 构建一个项目,并希望将当前提交的 SHA 包含到二进制文件中。问题是 tup 无法识别 .git 目录中的依赖关系,并且 git HEAD 更改时版本文件不会重建。

有问题的 Tupfile 包含:

问题看起来像这样:

在 .git 中添加任何文件作为依赖项会导致:

当前 Git 提交更改时如何使 tup 重建版本文件?