Проблема с запуском make в базе данных postgres

0

Вопрос

Я запускаю это на 64-разрядной оболочке msys2 MINGW65.

Я побежал

$source/configure --host=x86_64-w64-mingw32 --prefix=$dist && 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

есть следующая строка, которая, очевидно, запускает его. Но я не знаю, почему это срабатывает и как это исправить.

Мне нужно скомпилировать эту сборку, чтобы иметь возможность получить DLL-файлы для расширения для машины Windows, на которой работает postgres.

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";
}
msys2 postgresql postgresql-11
2021-11-23 21:56:54
2
0

После повторного запуска еще несколько раз он успешно завершился. В файлы или методологию не было внесено никаких изменений.

2021-11-23 22:40:03

Если проблема не воспроизводима, вероятно, лучше всего просто удалить вопрос.
tdy

Может быть. Но я также думаю, что, возможно, стоит оставить это как опыт для кого-то другого, что, если они использовали тот же инструмент, и произойдет нечто подобное. Что ответом может быть просто запустить его несколько раз. Потому что я знаю, что чувствовал, как будто я был на грани безумия, сидя там и повторяя это несколько раз. Потому что это случилось не один раз. Это произошло, как говорится в моем ответе. Несколько раз без всякой разницы. И в конце концов просто сработало.
kloaf11
0

Похоже, вы строите с помощью Perl, который поставляется с MinGW.

Тем не менее, документация PostgreSQL довольно ясна по этому вопросу:

Для создания PostgreSQL требуются следующие дополнительные продукты. Используйте config.pl файл, чтобы указать, в каких каталогах доступны библиотеки.

[...]

ActiveState Perl

Для запуска сценариев создания сборки требуется ActiveState Perl. MinGW или Cygwin Perl не будут работать. Оно также должно присутствовать на ПУТИ. Двоичные файлы можно загрузить с https://www.activestate.com (Примечание: требуется версия 5.8.3 или более поздняя, достаточно бесплатного стандартного дистрибутива).

2021-11-24 06:57:19

Я не чувствую, что это как-то связано. Потому что, как говорит мой собственный ответ. Ничего не меняя, он в конечном итоге просто успешно построил полностью работающий postgres.
kloaf11

Возможно, это не связано, но, возможно, это так.
Laurenz Albe

Ну, я говорю, что не думаю, что это так. Потому что я не управлял Mingw. Я запускал mingw, который поставляется с msys2, которые отличаются. Но это вполне возможно. Но также используя эту оболочку mingw64 с msys2, она в конечном итоге работала без изменений. Поэтому, если использование mingw с perl не работает, это не должно быть связано
kloaf11

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

Популярное в этой категории

Популярные вопросы в этой категории