дело не только в "папке" сборки. Ну вам виднее, мне лениво генту ставить.
Я к тому, что "make clean" бесполезен, ибо папка, в которой производилась сборка, перед установкой пакета удаляется.
дело не только в "папке" сборки. Ну вам виднее, мне лениво генту ставить.
Я к тому, что "make clean" бесполезен, ибо папка, в которой производилась сборка, перед установкой пакета удаляется.
Silencer, с тобой лично тоже не хочу спорить. Смысл, если ты ВЕРУЕШЬ в свою рукокнигу? И она для тебя даже ценнее, чем документация от разработчиков этой самой make.
Да и в данном случае должно быть и идиоту понятно, что запускать на одноядерном камне в два потока -- не самая лучшая идея.
и да
If the `-j' option is followed by an integer, this is the number ofRTFM.
recipes to execute at once; this is called the number of "job slots".
If there is nothing looking like an integer after the `-j' option,
there is no limit on the number of job slots. The default number of job
slots is one, which means serial execution (one thing at a time).
One unpleasant consequence of running several recipes simultaneously
is that output generated by the recipes appears whenever each recipe
sends it, so messages from different recipes may be interspersed.
Another problem is that two processes cannot both take input from the
same device; so to make sure that only one recipe tries to take input
from the terminal at once, `make' will invalidate the standard input
streams of all but one running recipe. This means that attempting to
read from standard input will usually be a fatal error (a `Broken pipe'
signal) for most child processes if there are several.
It is unpredictable which recipe will have a valid standard input
stream (which will come from the terminal, or wherever you redirect the
standard input of `make'). The first recipe run will always get it
first, and the first recipe started after that one finishes will get it
next, and so on.
Я к тому, что "make clean" бесполезен, ибо папка, в которой производилась сборка, перед установкой пакета удаляется.
что-то вы там напутали в "папках". Не?./configure --prefix=/usr --build=armv7a-hardfloat-linux-gnueabi --host=armv7a-hardfloat-linux-gnueabi --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib
configure: error: expected an absolute directory name for --datadir:
что-то вы там напутали в "папках". Не?
Это я уже сам вручную запускал. Пытался понять, где ошибка происходит.
дык если у вас цель /usr/, то вы так всю свою /usr попортите. Надо было --prefix=/tmp/ или типа того. Это "для проверки". Тогда оно будет собирать В /tmp/.
Кстати, make clean это вообще говоря make-цель, и чего оно делает, известно только разработчику ПО(hz в данном случае). Чистит чего-то.
документация от разработчиков этой самой make
Я к тому, что может все-таки ограничить число одновременных процессов компиляции, ибо
If there is more than one -j option, the last one is effective. If the -j option is given without an argument, make will not limit the number of jobs that can run simultaneously.
без оного ограничения его просто нет. *DONT_KNOW*
дык если у вас цель /usr/, то вы так всю свою /usr попортите. Надо было --prefix=/tmp/ или типа того. Это "для проверки". Тогда оно будет собирать В /tmp/.
Кстати, make clean это вообще говоря make-цель, и чего оно делает, известно только разработчику ПО(hz в данном случае). Чистит чего-то.
До сборки вообще не дошло дело. Всё стопорилось на ./configure...
PS: Всё, останавливаем флуд. Я пока восстанавливаю базовую систему.
Чистит чего-то.
Это вполне себе стандартная цель, чистит дерево исходников от промежуточных результатов компиляции. Часто вместо этого просто удаляют дерево целиком и заново распаковывают. А конечные результаты можно зачистить при помощи цели "uninstall".
Silencer, make это программа для разработчиков, а не для гентушников. Без j AFAIK там вообще никакой многозадачности нет, т.к. она не нужна. Обычно собирают не всё, а только некоторые файлы в программе. Вот как раз make этим и рулит. Но нет никакого смысла собирать зависимые файлы(не все) в несколько потоков. Их надо строго по очереди собирать, в определённом порядке.
И лишь в релизе есть смысл собирать СРАЗУ несколько файлов, и для этого в make и встроены ключи -j, -l. Без них make работает последовательно, что-бы меньше было глюков.
А в рукокниге наверное опечатка, + с минусом перепутали. У вас ведь гента, попробуйте разные варианты -j, как быстрее. Ещё учтите, что не все любят смотреть на сборку мира, некоторым ещё и работать надо при этом. ;)
в теории да.Это вполне себе стандартная цель, чистит дерево исходников от промежуточных результатов компиляции. Часто вместо этого просто удаляют дерево целиком и заново распаковывают. А конечные результаты можно зачистить при помощи цели "uninstall".
drBatty, в рукокниге ничего никто не перепутал - схема кол-во_ядер+1 даёт самый лучший результат.
проверял много раз, так что не надо тут.
с одноядерником, пожалуй лучше оставить дефолтный 1 поток.
а про работать - пора осилить приоритеты - при компилянии я и поиграть могу, а уж про другое вообще и говорить нечего.
единственное но - надо чтобы хватало рамы на все задачи, а уж про проц при нормально настроенных приоритетах можно забыть.
аналогично с I/O.
ТС, а тебе походу надо пересобрать sys-apps/coreutils
в рукокниге ничего никто не перепутал - схема кол-во_ядер+1 даёт самый лучший результат.
проверял много раз, так что не надо тут.
ну может быть. Расскажи лучше почему так?
потому что по потоку на ядро + один прыгающий.Расскажи лучше почему так?
потому что по потоку на ядро + один прыгающий.
поток может не полностью съедать ядро, оставшуюся часть и съедает прыгающий.
можешь сам помониторить на большом проекте - при схеме кол_во_ядер+1 ядра нагружены более равномерно и при этом сильней, нежели при поядерной схеме или тем более -1
Полностью согласен. Во всех статьях о многозадачности пишется именно количество ядер + 1. Не раз наблюдал за эффектом от этого при компиляции Chromium - при +1 загрузка всегда 100%, а без - появляются пробелы при переходах между компилируемыми файлами.
PS: coreutils пересоберу, если опять выскочит данная ошибка...
оно конечно быстрее будет, об этом я не подумал, каюсь. Но ИМХО работать будет тяжко с такой загрузкой.потому что по потоку на ядро + один прыгающий.
ну и куда впихнуть новый поток, которых при работе Linux открывается Over9000? Не, я знаю про nice, но оно только работающие потоки разруливает. А не новые.загрузка всегда 100%, а без - появляются пробелы
drBatty, я же писал про приоритеты - если портажу дать минимальный или хотя бы 10 приоритет, то ты и не заметишь нагрузки от компиляния.
естессно, то же самое надо сделать и для I/O.
в идеале, конечно, компилять в раме, но не у всех есть возможность.
ага. На своём g2020 замечу o_Oя же писал про приоритеты - если портажу дать минимальный или хотя бы 10 приоритет, то ты и не заметишь нагрузки от компиляния.
нет, с этим всё понятно, я про то, что системе не приткнуть новый процесс, т.к. make их пихает во все щели.естессно, то же самое надо сделать и для I/O.
в идеале, конечно, компилять в раме, но не у всех есть возможность.
Теперь еще интереснее. Другая ошибка на другом пакете:
[console]>>> Emerging (24 of 45) sys-apps/kbd-1.15.5-r1
* kbd-1.15.5.tar.gz SHA256 SHA512 WHIRLPOOL size ;-) ... [ ok ]
>>> Unpacking source...
>>> Unpacking kbd-1.15.5.tar.gz to /var/tmp/portage/sys-apps/kbd-1.15.5-r1/work
>>> Source unpacked in /var/tmp/portage/sys-apps/kbd-1.15.5-r1/work
>>> Preparing source in /var/tmp/portage/sys-apps/kbd-1.15.5-r1/work/kbd-1.15.5 ...
* Applying kbd-1.15.5-loadkeys-parse.patch ... [ ok ]
>>> Source prepared.
>>> Configuring source in /var/tmp/portage/sys-apps/kbd-1.15.5-r1/work/kbd-1.15.5 ...
* econf: updating kbd-1.15.5/config/config.sub with /usr/share/gnuconfig/config.sub
* econf: updating kbd-1.15.5/config/config.guess with /usr/share/gnuconfig/config.guess
./configure --prefix=/usr --build=armv7a-hardfloat-linux-gnueabi --host=armv7a-hardfloat-linux-gnueabi --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --disable-dependency-tracking --enable-nls --enable-vlock
----blah----
checking if armv7a-hardfloat-linux-gnueabi-gcc supports -Wmissing-declarations flag... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating data/Makefile
config.status: creating man/Makefile
config.status: creating man/man1/Makefile
config.status: creating man/man1/dumpkeys.1
config.status: creating man/man1/loadkeys.1
config.status: creating man/man1misc/Makefile
config.status: creating man/man5/Makefile
config.status: creating man/man8/Makefile
config.status: creating man/man8/loadunimap.8
config.status: creating man/man8/mapscrn.8
config.status: creating man/man8/setfont.8
config.status: creating man/man8misc/Makefile
config.status: creating po/Makefile.in
config.status: WARNING: 'po/Makefile.in.in' seems to ignore the --datarootdir setting
config.status: creating src/Makefile
config.status: creating src/vlock/Makefile
config.status: creating config.h
gawk: ./conf397qnu/defines.awk:61: fatal error: internal error
./config.status: line 1137: 30112 Aborted $AWK -f "$ac_tmp/defines.awk" 'config.h.in'
config.status: error: could not create config.h[/console]
Установку делал на чистой системе - развернул из stage3, накатил из бинарников пару пакетов (emerge -av1k binutils gcc gcc-config linux-headers glibc) и запустил пересборку системы (emerge -av1bk system).
накатил из бинарников пару пакетов (emerge -av1k binutils gcc gcc-config linux-headers glibc)
А зачем gcc из бинарников? Он же в stage есть. (про остальные не скажу)
а что в 61й строке этого скрипта? ./conf397qnu/defines.awkgawk: ./conf397qnu/defines.awk:61: fatal error: internal error