Главная

Сборка Haiku из под Haiku

Итак, все не доходили руки до написания пошаговой инструкции сборки HaikuOS
из дерева исходников и получение сорцов. Для чего это нужно:
1.Каждый раз не будет необходимости качать большой объем из сети, представьте что
сборка prealpha весит около 100Мб. Это особенно важно у кого тарифицируется трафик
и все такое.
2.Вы сможете обновлять вашу Haiku самостоятельно компилируя ее из исходников. Тем самым
вы можете получать оперативно новые обновления и т.п.
3.Предпологается, что вы разработчик и вам интересно будет посмотреть на исходники OS
и реализацию программ для Haiku.

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

Итак, предполагается что у вас свежая версия Haiku (в стадии prealpha не старее), потому что
в текущих сборках уже присутствует стабильный и хорошо функционирующий GCC 2.95.3 (если
мне не изменяет память).

Напоминаю, что все указанные команды должны быть набраны в терминале(Terminal).

Итак, описываю по шагам что и как нужно сделать:

1. Запускаем терминал, перемещаемся в каталог develop для того что бы создать каталог.
Для этого набираем в командной строке: cd /boot/develop/
2. Создаем каталог под названием haiku.
Для этого набираем в командной строке: mkdir haiku
После чего создался каталог под названием haiku расположенный по такому пути:
/boot/develop/haiku
3. Дальше перемещаемся в созданный нами каталог.
Для этого набираем в командной строке: cd /boot/develop/haiku
4. Для того что бы слить нам исходники в созданный нами каталог не закрывая терминала
набираем в консоли следующую строку:
svn checkout svn://svn.berlios.de/haiku/haiku/trunk haiku
Эта команда означает, что SVN обращается к родительской директории репозитария Haiku.
5. Дальше начинается процесс загрузки исходников, один из самых длительных процессов во
всей процедуре сборки Haiku. Но во многом это зависит от ширины канала.
6. После того как исходники окончательно скачаются в терминале выдаст номер последней
ревизии к примеру: Update to revision 29546.
6.1. Стоит помнить, что все происходит через консоль и ее не стоит закрывать.
6.2. Если у вас произошел обрыв, то вам стоит просто снова начать с пункта #3. Только
вместо пункта #4 стоит ввести в консоли следующую строку: svn update
7. После того как вы выполнили главное условие пункта #6 вам необходимо отконфигурировать
компилятор. Набираем в терминале следующую строку и выполняем ее:
./configure
После конфигурирования выдаст такую строчку: Assuming 32–bit machine BePC
Это нам говорит об успешном конфигурировании.
8. После того как произошло конфигурирование, вы перемещаетесь по пути,
где находятся исходники. Для этого набираем в командной строке:
cd /boot/develop/haiku/haiku
9. Теперь остается дело за компиляцией исходных кодов Haiku. Набираем в терминале
следующее: jam
И нажать ввод, процесс компиляции пошел, если все нормально и Haiku работает стабильно
(в которой вы собираете), то спустя долгий процесс компиляции вы можете заполучить готовые
файлы по следующему пути: /boot/develop/haiku/haiku/generated/
Если вам нужно сразу создать RAW образ Haiku такой, какой выкладывается на официальном сайте
Haiku Team, то используйте для компиляции следующую команду: jam haiku–image
в таком случае вы получаете лишь haiku.image все по тому же пути.
Дальше монтируете этот образ и копированием заменяем файлы на новые в вашей системе, если
вам необходимо лишь обновить систему.
10.Если вам нужно обновить исходники располагаемые на вашей машине, тогда перемещаетесь в
каталог с исходниками (в терминале) и запускаете svn update
Система проведет подсчет имеющихся фалов и сольет новые файлы из последней ревизии и заменит
старые, так же эту команду ожно использовать в случае разрыва или не докачки всех файлов
в процессе забора исходников.

Источник: attack-on–web.net
Автор: CrovaVIY
Копия на статью (оформлена качественее):
http://attack-on–web.net/showthread.php?p=37391#post37391

Говорите

Говорите за ошибки отловлю и исправлю статью.
==========
Haiku User
==========

Спасибо! Respect!

Спасибо! Respect!

Стараюсь, хоть

Стараюсь, хоть что–то сделать для оживления этого сообщества и облегчения жизни простым пользователям Haiku
==========
Haiku User
==========

Нужная

Нужная статья.
А вопрос такой: допустим я из тех, кому ширина и цена канала позволяет скачивать образы хоть каждый день без всяких компиляций. Корректное ли это будет обновление — простой заменой системных каталогов со всем содержимым из образа?
Ведь наверняка отличие сборок не только в дате и размере образа, но и в списке файлов, э?
Предполагаю накапливающийся мусор и потенциальные глюки.

Рекомендую

Рекомендую все же делать если есть возможность и время свою сборку, так уж получается что ревизии чаще обновляются, чем те же сборки. Сборка которая выкладывается делается в ночное время, то есть иногда на деле получается какой–то глюк фиксится быстрее. Так зачем же ждать следующей сборки и не сделать её самому?
Что касается захламления, тебе ничего не мешает переодически делать перестановку оси на чистый раздел. Захламление ОС в процессе тестирования и настройки, да и работы считаю неизбежным. Потому что «гаечка» даже не альфа.
==========
Haiku User
==========

>тебе ничего

>тебе ничего не мешает переодически делать перестановку оси на чистый раздел

Верно. Никто.
Но хотелось бы просто переписать системные файлы с сохранением настроек и программ, и не бороться с глюками после такого апдейта. Вот, что я имел в виду :)
Обновление системы наживую, так сказать.

Кстати, вопрос не в тему для сведующих: в какой стадии находится разработка сетевого стека для Гайки? Куда деньги перегонять? ;)
Без сети тоскливо…

Полагаю,

Полагаю, что в заключительной, иначе этого ответа не было бы :) А слать вестимо куда — http://www.haiku–os.org/community/donating_to_haiku

А с настройками и программами можно поступить так — хранить их на отдельном разделе (apps и home), а на загрузочный раздел кидать симлинки.

а) Смотри

а) Смотри мой комментариой ниже о сборке гайки прямо на раздел.

б) Вроде как есть уже сеточка и даже работает. Какие у тебя проблемы и с чем? С драйвером или с сеткой? В любом случае нужно кидать описание в трак.

Проблемы с pppoe

Проблемы с pppoe у меня (звучит уже как приговор).

Здесь описывал нашу сетку
http://qube.ru/forums/pppoe-dsl-i-vsja-bratvanastraivaem#comment–46773

Не смог поднять pppoe даже на R5 (и Netserver и BONE).

PS. Еще раз визуально убедился — руки вроде не из задницы…

Спасибо

Спасибо за активность! Каждый день какие–то новости, заметки, переводы статей — так держать.

Стараемся, хотя

Стараемся, хотя тут впринципе считаю все сообщество должно активничать именно это и подогревает интерес к этой ОС. Да и заслука в моей активности общая.
==========
Haiku User
==========

Собирать

Собирать непосредственно на раздел можно и так:

а) Создать целевой раздел и отформатировать его в BFS.
б) Подмонтировать этот целевой раздел (напримерк как /Krolik)
в) Перейти в корень дерева исходников и дать команду

HAIKU_INSTALL_DIR=/Krolik jam install–haiku

г) После того как предыдущая команда отработает в разделе /Krolik будем иметь актуальную версию системы. Грузимся в неё и проверяем работу.

При таком режиме обновления основная масса пользовательских настроек на целевой системе сохраняется.

я–б хотел

я–б хотел еще видеть ключи к configure с описанием.

Да, какими

Да, какими настройками при сборке стоит поиграться? jam и configure?

usage: jam [ options ] targets…

–a Build all targets, even if they are current.
-dx Display (a)actions ©causes (d)dependencies
(m)make tree (x)commands (0–9) debug levels.
-fx Read x instead of Jambase.
-g Build from newest sources first.
-jx Run up to x shell commands concurrently.
-n Don't actually execute the updating actions.
-ox Write the updating actions to file x.
-q Quit quickly as soon as a target fails.
-sx=y Set variable x=y, overriding environment.
-tx Rebuild x, even if it is up-to–date.
-v Print the version of jam and exit.

~> /boot/common/bin/jam -v
Jam 2.5-haiku–20080327. OS=HAIKU. Copyright 1993–2002 Christopher Seiwald.

Не трогай —

Не трогай — не сломаешь. Относительно jam пригодятся:
-v — увидеть версию, осознать что обломилось и пойти за обновленной версией.
-q — вывалится из билда как только встретилась первая ошибка. По умолчанию жам тупо пытается собрать все что только возможно — и сложно понять в чем суть проблемы. Даем -q — и видим сразу где свалились в первый раз.

опции конфигурации пригодится настройка на путь к кросс–компилятору в случае сборки под беос. Подробности расписаны в комментариях тут: http://qube.ru/forums/1/ustanovka-kross-kompilera-tn-sborka–080323

А еще надо

А еще надо добавить в текст ссылку, откуда скачать SVN

http://www.haiku-os.org/files/Subversion–1.1.3.pkg

То если

То если под беосиной, а если под линем или фрёй — свн и жам нужно собирать самому из дерева buildtools. Подробности в README.cross–compiling

Будет

Будет возможность переведу это дело.
==========
Haiku User
==========

Помоему только

Помоему только jam нужно собирать, svn любой подойдет.

Угу —

Угу — стандартный жам не может отработать весь полет мысли, что заложили в билд систему наши художники, ага. :–) Напильника, скацинка, просит.

Я, честно говоря, не в востроге от этой парочки. Что жам, отсасывающий половину оперативки, чтобы тупо держать в ней дерево зависимостей, что свн, дерево которого можно убить точечным мусоро–метанием в хмл–файлы, лежащие в .svn.

Успешно собрал

Успешно собрал Haiku 29609 из–под HaikuOS с инсталляцией на готовый bfs раздел винта.

HAIKU_INSTALL_DIR=/Haiku1 jam install–haiku

вот либа

вот либа собирается 24 марта фритайповская по–кривому — ось грузится перестала нормально, пришлось либу старую воткнуть с резервного раздела…

On Mon, Mar 23, 2009 at 6:19 PM, FranГ§ois Revol wrote:
>> > Log:
>> > updated freetype to 2.3.9
>>
>> This commit seems to have broken something, I now reliably get a
>> crash
>> in freetype while starting the app_server and scanning fonts.
>

Never mind, seems something was wrong with the dependencies, jam clean
; jam -q and it works fine.

Regards,

Rene

А что делать–то????
Да, какими настройками при сборке стоит поиграться?

usage: jam [ options ] targets…

–a Build all targets, even if they are current.
-dx Display (a)actions ©causes (d)dependencies
(m)make tree (x)commands (0–9) debug levels.
-fx Read x instead of Jambase.
-g Build from newest sources first.
-jx Run up to x shell commands concurrently.
-n Don't actually execute the updating actions.
-ox Write the updating actions to file x.
-q Quit quickly as soon as a target fails.
-sx=y Set variable x=y, overriding environment.
-tx Rebuild x, even if it is up–to–date.
-v Print the version of jam and exit.

~> /boot/common/bin/jam -v
Jam 2.5–haiku–20080327. OS=HAIKU. Copyright 1993–2002 Christopher Seiwald.

Дык

Дык пересобрать начисто:

jam clean # это уничтожит промежуточные и обьектные файлы.
HAIKU_INSTALL_DIR=/Haiku1 jam -q install–haiku; # это соберет заново

для надежности еще целевой раздел (/Haiku1) можно перед сборкой вычистить.

PS: jam — лажа, похоже зависимости порой не отслеживает.

пошаманил,

пошаманил, однако, собралося 29702 — загруз нормальный!

Товарищ

Товарищ Парацельс!
1) Ключ -q влияет только на исполнение сценария билда. При его наличии билд будет остановлен как только произошла ошибка. При отсутствии этого ключа — билд будет продолжен до конца. Очевидно, что ошибку в первом случае найти намного легче чем во втором. Таким образом ключ -q не «лечит» билд.
2) configure достаточно запустить один раз. Перезапускать нужно лишь при необходимости и радиакальных изменениях в дереве.
3) «Skipped image saving for lake бля–бля» — не говорит о реальной проблеме — ищите выше — еще при сборке, либо при линкове.
4) Билд желательно указывать точно — актуальная версия у меня билдится без проблем.
5) Для очистки билда в случае проблем с зависимостями в этом долбаном жаме запускайте jam clean;

Кроме

Кроме стандартного рецепта мне пришлось ручками удалить последние (свежие) файлы в папках
generated/
generated/build/

потом svn update и configure, точно не вспомню тк шаманил ночью…

Так тоже

Так тоже помогает бывает… =)
Все же редко происходят проблемы, если не собирается у меня, то чаще всего либо не докачал, либо виртуалку не включил =)
==========
Haiku User
==========

у меня попки

у меня попки происходят) такие круглыые)

Это всё

Это всё от того, что ты садомазофил. Плачешь как эмо–бой вместо того, чтобы конкретно спросить чо за хню тебе компилер написал. ага?

GNU gdb 6.3 Copyright 2004

GNU gdb 6.3
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type “show copying” to see the conditions.
There is absolutely no warranty for GDB. Type “show warranty” for details.
This GDB was configured as i586-pc–haiku”…(no debugging symbols found)

[tcsetpgrp failed in terminal_inferior: Invalid Argument]
Thread 574 caused an exception: Segment violation
Reading symbols from /boot/beos/system/runtime_loader…done.
Loaded symbols for /boot/beos/system/runtime_loader
Reading symbols from /boot/beos/system/lib/libroot.so…done.
Loaded symbols for /boot/beos/system/lib/libroot.so
[tcsetpgrp failed in terminal_inferior: Invalid Argument]
[Switching to team /boot/common/bin/jam -q install–haiku (574) thread jam (574)]
0x002aba53 in strtol () from /boot/beos/system/lib/libroot.so
(gdb)

29 марта — что делать?

Welcome to the Haiku shell.

~> jam -v
Jam 2.5-haiku–20080327. OS=HAIKU. Copyright 1993–2002 Christopher Seiwald.

“bt” набрать

“bt” набрать в gdb.

GNU gdb 6.3 Copyright 2004

GNU gdb 6.3
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type “show copying” to see the conditions.
There is absolutely no warranty for GDB. Type “show warranty” for details.
This GDB was configured as i586-pc–haiku”…(no debugging symbols found)

[tcsetpgrp failed in terminal_inferior: Invalid Argument]
Thread 569 caused an exception: Segment violation
Reading symbols from /boot/beos/system/runtime_loader…done.
Loaded symbols for /boot/beos/system/runtime_loader
Reading symbols from /boot/beos/system/lib/libroot.so…done.
Loaded symbols for /boot/beos/system/lib/libroot.so
[tcsetpgrp failed in terminal_inferior: Invalid Argument]
[Switching to team /boot/common/bin/jam -q install–haiku (569) thread jam (569)]
0x002a877c in strtol () from /boot/beos/system/lib/libroot.so
(gdb) bt
#0 0x002a877c in strtol () from /boot/beos/system/lib/libroot.so
#1 0x002a3b17 in atoi () from /boot/beos/system/lib/libroot.so
#2 0x002108fc in hcache_init ()
#3 0x00208b5f in make ()
#4 0x00205899 in main ()
(gdb) bt

А как это

А как это воспроизвести?

сборка

сборка 29768

Перейти в корень дерева исходников и дать команду для сборки на смонтированный заранее раздел жесткого диска

HAIKU_INSTALL_DIR=/Haiku01 jam -q install–haiku

Что

Что сие значит…

http://dev.haiku–os.org/ticket/3631

Интерессненько

Интерессненько :)

Что такое?

Что такое? попытка собрать 30980

…patience…
…found 75101 target(s)…
…updating 9631 target(s)…
InitScript1 generated/haiku.image-init–vars
vfork: Out of memory

памяти

памяти не хватило. добавь виртуалки.

добавил,

добавил, не помогло..
ОЗУ 512 мег, виртуалки дооо 6 гиг ставил

Значит

Значит не повезло — чета сломалось. jam clean. configure и т.д. А на какой ревизии собираешь?

30978

30978

не

не собирается

GNU gdb 6.3
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type “show copying” to see the conditions.
There is absolutely no warranty for GDB. Type “show warranty” for details.
This GDB was configured as i586-pc–haiku”…(no debugging symbols found)

[tcsetpgrp failed in terminal_inferior: Invalid Argument]
Thread 4824 caused an exception: Segment violation
Reading symbols from /boot/system/runtime_loader…done.
Loaded symbols for /boot/system/runtime_loader
Reading symbols from /boot/system/lib/libbe.so…done.
Loaded symbols for /boot/system/lib/libbe.so
Reading symbols from /boot/system/lib/libstdc++.r4.so…done.
Loaded symbols for /boot/system/lib/libstdc++.r4.so
Reading symbols from /boot/system/lib/libroot.so…done.
Loaded symbols for /boot/system/lib/libroot.so
[tcsetpgrp failed in terminal_inferior: Invalid Argument]
[Switching to team generated/objects/haiku_host/x86/release/tools/copyattr -–data (4824) thread copyattr (4824)]
0x0052118a in vfprintf () from /boot/system/lib/libroot.so
(gdb) bt
#0 0x0052118a in vfprintf () from /boot/system/lib/libroot.so
#1 0x00524330 in buffered_vfprintf () from /boot/system/lib/libroot.so
#2 0x0051f72c in vfprintf () from /boot/system/lib/libroot.so
#3 0x0051af17 in fprintf () from /boot/system/lib/libroot.so
#4 0x002023a1 in copy_entry ()
#5 0x00000000 in ?? ()
#6 0x00000b6c in ?? ()
#7 0x00000000 in ?? ()
#8 0x7ffeef68 in ?? ()
#9 0x00202cd1 in copy_files ()
Cannot access memory at address 0x834f1c60
(gdb)

В итоге

C++ generated/objects/haiku_host/x86/release/tools/set_haiku_revision.o
Link generated/objects/haiku_host/x86/release/tools/set_haiku_revision
Chmod1 generated/objects/haiku_host/x86/release/tools/set_haiku_revision
CopySetHaikuRevision1 generated/objects/haiku/x86/release/system/kernel/revisioned/kernel_x86

revision=`LC_ALL=C LANG=C svn info . 2> /dev/null |
grep Revision | awk '{printf $2}'`
if [ "$revision" = 0 -o "$revision" = "" ]; then
revision=`(cd . && LC_ALL=C LANG=C git svn info)
2> /dev/null ||
(git log --max–count=1 --grep="git-svn–id:" 2> /dev/null |
grep git-svn–id: | cut -d '@' -f 2 |
awk '{printf $1}') 2> /dev/null`
fi
if [ "$revision" = "" ]; then
revision=0
fi
generated/objects/haiku_host/x86/release/tools/copyattr -–data generated/objects/haiku/x86/release/system/kernel/kernel_x86 generated/objects/haiku/x86/release/system/kernel/revisioned/kernel_x86 &&
generated/objects/haiku_host/x86/release/tools/set_haiku_revision generated/objects/haiku/x86/release/system/kernel/revisioned/kernel_x86 ${revision}

…failed CopySetHaikuRevision1 generated/objects/haiku/x86/release/system/kernel/revisioned/kernel_x86 …
…skipped haiku.image-copy-files-dummy–system for lack of kernel_x86…
…skipped install–haiku for lack of haiku.image-copy–files…
…failed updating 1 target(s)…
…skipped 2 target(s)…
…updated 1078 target(s)…
/boot/develop/haiku/haiku>

сноси generated

сноси generated переконфигурируй.

снес,

снес, без изменений.. откат на 30640 — помогло…

Ну и то хорошо.

Ну и то хорошо. Вечером соберу актуальную у себя.

еще ошибка

еще ошибка

InitScript1 generated/haiku.image-unzip–files
BuildHaikuImage1 install–haiku
Populating image …
Error: Can't copy «/boot/develop/haiku/haiku/generated/objects/haiku/x86/release/add–ons/kernel/debugger/demangle/demangle», since directory «/Haiku0/system/add–ons/kernel/debugger/demangle» is in the way.
Deleting old MIME database …
Installing MIME database …
…updated 367 target(s)…
/boot/develop/haiku/haiku>

почисть раздел,

почисть раздел, на который ты ставишь гайку. раньше файл demangle находился в папке с таким же названием, сейчас же вынесен на уровень выше с тем же именем. ошибка сия значит что нельзя скопировать файл demangle в каталог в котором уже есть каталог с таким же именем. просто грохни каталог /Haiku0/system/add–ons/kernel/debugger как минимум — поможет.

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Allowed HTML tags: <a> <em> <i> <img> <strong> <b> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании

CAPTCHA
Введите перечисленные символы, чтобы мы убедились, что вы не робот. Не требуется для зарегистрированных пользователей.
y
Z
i
W
m
D
Enter the code without spaces and pay attention to upper/lower case.