【问题标题】:Issue running make on a postgres database在 postgres 数据库上运行 make 问题
【发布时间】:2021-11-23 21:56:54
【问题描述】:

我在 msys2 64 位 MINGW65 shell 上运行它。

我跑了

$source/configure --host=x86_64-w64-mingw32 --prefix=$dist && make

以及直到 make 正常运行的所有内容。在得到 make 问题并尝试修补问题点后,我继续为下面的相同问题运行 make。

然后当我在文件夹上运行 make 时。

它运行良好,直到它击中这部分

make[2]: Leaving directory '/c/builds/build/REL_11_8/src/backend/utils'
make -C storage/lmgr lwlocknames.h lwlocknames.c
make[2]: Entering directory '/c/builds/build/REL_11_8/src/backend/storage/lmgr'
'/usr/bin/perl' /c/builds/source/src/backend/storage/lmgr/generate-lwlocknames.pl 
/c/builds/source/src/backend/storage/lmgr/lwlocknames.txt
unable to parse lwlocknames.txt at /c/builds/source/src/backend/storage/lmgr/generate- 
lwlocknames.pl line 36, <$lwlocknames> line 8.
make[2]: *** [Makefile:33: lwlocknames.h] Error 255
make[2]: Leaving directory '/c/builds/build/REL_11_8/src/backend/storage/lmgr'
make[1]: *** [Makefile:137: storage/lmgr/lwlocknames.h] Error 2
make[1]: Leaving directory '/c/builds/build/REL_11_8/src/backend'
make: *** [src/Makefile.global:372: submake-generated-headers] Error 2

在generate-lwlocknames.pl中

下面这行显然是触发了它。 但我不知道它为什么会触发它或如何修复它。

我需要编译这个构建,以便能够为运行 postgres 的 windows 机器的扩展获取 dll 文件。

while (<$lwlocknames>)
{
    chomp;

    # Skip comments
    next if /^#/;
    next if /^\s*$/;

    die "unable to parse lwlocknames.txt"
      unless /^(\w+)\s+(\d+)$/;

    (my $lockname, my $lockidx) = ($1, $2);

    die "lwlocknames.txt not in order"   if $lockidx < $lastlockidx;
    die "lwlocknames.txt has duplicates" if $lockidx == $lastlockidx;

    while ($lastlockidx < $lockidx - 1)
    {
        ++$lastlockidx;
        printf $c "%s   \"<unassigned:%d>\"", $continue, $lastlockidx;
        $continue = ",\n";
    }
    printf $c "%s   \"%s\"", $continue, $lockname;
    $lastlockidx = $lockidx;
    $continue    = ",\n";

    print $h "#define $lockname (&MainLWLockArray[$lockidx].lock)\n";
}

【问题讨论】:

    标签: postgresql msys2 postgresql-11


    【解决方案1】:

    重新运行几次后,它成功完成。未对文件或方法进行任何更改。

    【讨论】:

    • 如果问题无法重现,最好删除问题。
    • 也许吧。但我也认为,如果他们使用相同的工具并发生类似的事情,将其作为一种体验留给其他人可能是值得的。答案可能只是运行几次。因为我知道我坐在那里多次运行它,感觉自己已经到了精神错乱的边缘。因为它没有发生一次。正如我的回答所说,它发生了。多次没有区别。最终还是奏效了。
    【解决方案2】:

    看起来您正在使用 MinGW 附带的 Perl 进行构建。

    但是,PostgreSQL documentation 在这一点上非常清楚:

    构建 PostgreSQL 需要以下附加产品。使用config.pl 文件指定库所在的目录。

    [...]

    ActiveState Perl

    ActiveState Perl 需要运行构建生成脚本。 MinGW 或 Cygwin Perl 将不起作用。它也必须存在于 PATH 中。二进制文件可以从https://www.activestate.com下载(注意:需要5.8.3或更高版本,免费的标准分发就足够了)。

    【讨论】:

    • 我觉得这无关。因为正如我自己的回答所说。什么都没有改变,它最终只是成功地构建了一个完全工作的 postgres。
    • 也许不相关,但也许是。
    • 好吧,我说我不这么认为。因为我没有运行Mingw。我正在运行不同的 msys2 附带的 mingw。但这是一种可能。但也将那个 mingw64 shell 与 msys2 一起使用,它最终在没有任何变化的情况下运行。因此,如果将 mingw 与 perl 一起使用不起作用,那么它不应该是相关的
    猜你喜欢
    • 2021-10-16
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多