[stephan<strong i="6">@host</strong>:~/cvs/libsass]$ m install PREFIX=$HOME
mkdir /home/stephan/lib
mkdir: cannot create directory ‘/home/stephan/lib’: File exists
Makefile:263: recipe for target '/home/stephan/lib' failed
make: *** [/home/stephan/lib] Error 1
Исправление тривиально: используйте mkdir -p
вместо mkdir
.
Это то же самое, что и # 1992, но билет закрыт по необъяснимым причинам.
PS: при попытке использовать сгенерированную автоинструментами сборку, запустив autoconf
для преобразования configure.ac
в configure
, результирующий ./configure
завершится неудачно, потому что:
[stephan<strong i="18">@host</strong>:~/cvs/libsass]$ ./configure --prefix=$HOME
configure: error: cannot find install-sh, install.sh, or shtool in script "."/script
Таким образом, я использую make-файл, который зарегистрирован в дереве, а не тот, который сгенерирован автоинструментами (он же GNU "Auto, my ass!" Tools).
Использование mkdir появлялось несколько раз и было отклонено, потому что это не так.
портативный. Мы открыты для портативных решений.
В понедельник, 12 ноября 2018 г., 18:55 Стефан Бил < [email protected] написал:
установка не удалась, потому что $ (PREFIX) / lib уже существует
[ stephan @ host : ~ / cvs / libsass] $ m install PREFIX = $ HOME
mkdir / главная / Стефан / библиотека
mkdir: невозможно создать каталог '/ home / stephan / lib': файл существует
Makefile: 263 : рецепт для цели '/ home / stephan / lib' не выполнен
make: * [/ home / stephan / lib] Ошибка 1Исправление тривиально: используйте mkdir -p вместо mkdir.
Это то же самое, что # 1992 https://github.com/sass/libsass/issues/1992 ,
но этот билет необъяснимым образом закрыт.PS: при попытке использовать сгенерированную autotools сборку, запустив autoconf
чтобы преобразовать configure.ac в configure, полученный ./configure завершится ошибкой
потому что:[ stephan @ host : ~ / cvs / libsass] $ ./configure --prefix = $ HOME
configure: error: невозможно найти install-sh, install.sh или shtool в скрипте "." / scriptТаким образом, я использую make-файл, который зарегистрирован в дереве, а не
генерируемый autotools (также известный как GNU "Auto, my ass!" Tools).-
Вы получаете это, потому что подписаны на эту беседу.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/sass/libsass/issues/2727 или отключите поток
https://github.com/notifications/unsubscribe-auth/AAjZWC46FJREYZk3iPIdWpGiuKuKlkJ4ks5uuSlkgaJpZM4YZIEz
.
Конечно, mkdir -p
более портативен, чем просто невозможность установки на какой-либо платформе?
Вот портативное решение, взятое из руководства autotools:
Из оформления заказа libsass:
autoreconf --install
...
configure.ac:15: installing 'script/install-sh'
...
[stephan<strong i="7">@host</strong>:~/cvs/libsass]$ l ./script/install-sh
-rwxr-xr-x 1 stephan stephan 15155 Nov 12 10:07 ./script/install-sh
Этот сценарий установки настолько портативен, насколько это возможно. (Просто выбросьте весь вывод autoreconf
кроме этого файла, затем верните этот файл.)
Как ни странно, он использует mkdir -p
(который явно указан в POSIX mkdir), но он также помогает решить различные проблемы переносимости.
По поводу переносимости: исходный код использует C ++ 0x, что означает, что он компилируется на относительно недавней платформе (возрастом менее 10 лет). Готов поспорить на свое левое яичко, что все такие платформы поддерживают mkdir -p
.
Все было подробно объяснено несколько раз во всех предыдущих
закрытые вопросы. Мы рассмотрим PR, который решит проблемы, которые
ранее был поднят.
В понедельник, 12 ноября 2018 г., 20:13 Стефан Бил < [email protected] написал:
По поводу переносимости: исходный код использует C ++ 0x, что означает
компиляция на относительно недавней платформе (возрастом менее 10 лет). я готов поспорить
мое левое яичко, что все такие платформы поддерживают mkdir -p.-
Вы получили это, потому что прокомментировали.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/sass/libsass/issues/2727#issuecomment-437808279 или отключить звук
нить
https://github.com/notifications/unsubscribe-auth/AAjZWDztL9XVhyClKwxTr7QVoEu2Oie3ks5uuTvQgaJpZM4YZIEz
.
@xzyfer Не могли бы вы дать ссылку на закрытый вопрос? # 1992 не обсуждает это.
Я хотел бы прочитать обсуждение, чтобы понять утверждения о непереносимости, потому что поддержка mkdir -p
является требованием POSIX: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/mkdir.html
Какое предполагаемое ограничение _не_ устраняется с помощью сценария установки, сгенерированного autoconf
(продемонстрировано 4 комментария отсюда)? В этом проекте используется autotools
, поэтому его переносимость ограничена платформами, которые поддерживает набор инструментов. Таким образом, использование autotool's
install скрипта является наиболее естественным и переносимым решением для всех платформ, на которых может быть построен проект с использованием предоставленных make-файлов.
@sgbeal Хотя я все еще не могу найти проблему, глядя дальше в Makefile, похоже, что он поддерживает Windows. В Windows mkdir
- это псевдоним для md
, который не поддерживает -p
.
Возможно, отправить PR, который устанавливает MKDIR
разному в Windows и не в Windows?
Подробности ниже. Я плохо разбираюсь в проблеме, но видел, как она возникает снова и снова.
https://github.com/sass/libsass/pull/795#discussion_r22396485
https://github.com/sass/libsass/pull/2486
https://github.com/sass/libsass/pull/2109
https://github.com/sass/libsass/issues/1433
https://github.com/sass/libsass/pull/1365#issuecomment -123325642
@glebm что такое "винда"?
Сборка использует автоинструменты, и "действительно должна" использовать install-sh, который распространяется с автоинструментами. Если _that_ установщик недостаточно портативен, тогда использование автоинструментов будет безнадежным делом.
@sgbeal Отмеченный в Makefile не генерируется автоинструментами. Это альтернативный способ сборки, когда автоинструменты могут быть недоступны (например, при компиляции для расширения C для Ruby или Python).
«Windows» в этом случае - это когда у вас есть, например, gcc и gmake, но вы запускаете их из CMD (в отличие, например, от Cygwin Bash или аналогичной среды POSIX).
Тем не менее, я думаю, что мой PR # 2728 решает эту проблему, так как с этим PR make
больше не должен пытаться создавать каталоги, которые уже существуют.
@xzyfer Спасибо! Похоже, я правильно понял, что речь идет именно о совместимости с Windows. Отправлено # 2728, которое должно просто помешать make
попытаться создать каталоги, которые уже существуют.
@glebm, приношу искренние извинения: «что такое« Windows »» было задано шутливо (Windows не было в моей семье с прошлого тысячелетия), а не как честный вопрос, и ему нет места на этом форуме.