【问题标题】:ONESHELL in Makefile not working with bash on Amazon Linux 2 amiMakefile 中的 ONESHELL 无法在 Amazon Linux 2 ami 上使用 bash
【发布时间】:2021-09-03 11:33:56
【问题描述】:

我在 EC2 实例上使用此 Amazon Linux 2 AMI:amazon/amzn2-ami-hvm-2.0.20210525.0-x86_64-gp2

这个 Makefile 工作正常:

.SHELLFLAGS := -euo pipefail -c   
SHELL := bash

all:
    echo here

当我运行make all 时,我得到:

bash-4.2$ make all
echo here
here

然后我将.ONESHELL: 添加到 Makefile:

.ONESHELL:

.SHELLFLAGS := -euo pipefail -c   
SHELL := bash

all:
    echo here

现在当我运行 make all 时,我得到:

bash-4.2$ make all
echo here
bash: line 0: bash: echo here: invalid option name
make: *** [all] Error 2

Bash 版本:

GNU bash, version 4.2.46(2)-release (x86_64-koji-linux-gnu)

制作版本:

GNU Make 3.82
Built for x86_64-koji-linux-gnu

如果我删除.SHELLFLAGS,它将成功运行,所以看起来这两者的结合就是问题所在。使用 ONESHELL,SHELLFLAGS 似乎也被破坏了。

【问题讨论】:

  • 不知道;那个版本的 GNU make 已经很老了。使用当前版本的 GNU make 对我来说工作正常。也许尝试一些新的东西?

标签: bash makefile amazon-ami amazon-linux-2


【解决方案1】:

它是 make 3.82 中的 bug,在 4.0 中已修复。同时使用.ONESHELL.SHELLFLAGS 时,标记未正确标记。

您需要放弃两者之一或升级您的make(可能在您的发行版之外)。

【讨论】:

    猜你喜欢
    • 2019-01-12
    • 2018-10-07
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 2018-11-22
    • 1970-01-01
    • 2019-04-02
    相关资源
    最近更新 更多