Стали известны (http://tabletroms.com/index.php/2011/10/23/getting-ready-to-.../) требования к сборочному окружению для полной пересборки Android 4.0 (http://www.opennet.me/opennews/art.shtml?num=32079) из исходных текстов. В настоящее время доступ к коду уже получили производители телефонов и партнёры Google, публичное открытие кода планируется (http://www.opennet.me/opennews/art.shtml?num=32090) сразу после поступления в продажу первой модели телефона на базе новой версии платформы. Судя по спецификации требования к сборочному окружению увеличены примерно в два раза, по сравнению с выпуском Android 2.3. Для сборки рекомендуется система с 16 Гб ОЗУ и 25 Гб свободного дискового пространства для сборки под одну платформу (для сборки для всех платформ требуется 80 Гб). Объем кода составляет 6 Гб. Время сборки на системе с 24 Гб ОЗУ и двухядерным CPU Intel Xeon E5620 2.4GHz составляет 25 минут реального времени или 5 часов процессор...URL: http://tech.slashdot.org/story/11/10/24/0016241/android-ics-...
Новость: http://www.opennet.me/opennews/art.shtml?num=32118
Интересно, чего там такого на 6 Гиг исходников.
Даже если там много картинок и др. мультимедия. Может кто нибудь объяснить?
Объем распакованного ядра Linux знаешь?
я знаю - ~300 метров если ванильное , исходники цианогена с андроидом 2.3.5 весят около 2х гиг
494M linux-3.0.6-gentoo
$ file /boot/vmlinuz-linux
/boot/vmlinuz-linux: Linux kernel x86 boot executable bzImage, version 3.0-ARCH (tobias@T-POWA-LX) #1 SMP PREEMPT Wed Oct 19 10:27:51 , RO-rootFS, root_dev 0x902, swap_dev 0x2, Normal VGA
$ ls -l /boot/vmlinuz-linux
-rw-r--r-- 1 root root 3020080 Окт 19 11:30 /boot/vmlinuz-linux
3020080 байт == 2949.296875 килобайт == 2.8801727294921875 мегабайт
Три мегабайта. Не триста и даже не сто.
Вообще ощущаете разницу между ИСХОДНИКАМИ и СКОПИЛЕНЫМ БИНАРЁМ? ;)
# git showcommit c3b92c8787367a8bb53d57d9789b558f1295cc96
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date: Mon Oct 24 09:10:05 2011 +0200Linux 3.1
# du -sh .
1,4G .
Вы в Андроиде будете юзать модуль KVM, например? Если все вкомпилировать может и будет столько. Но ни зачто на свете не поверю что одно ядро весит более 100 Мб
а где там написанно про ядро?
sapienti sat
> Интересно, чего там такого на 6 Гиг исходников.Для примера:
[eugeni@snb-hp-x86_64 13:51:20 ~/android] $ du -sh android-x86/
6.1G android-x86/Список того, что там есть, можно посмотреть на http://www.android-x86.org/getsourcecode например.. От ice cream sandwich особо много отличий нету.
> Интересно, чего там такого на 6 Гиг исходников.Java.
Покомпильте как-нибудь на досуге java или openoffice.
а чего там такого, что для сборки надо 16 Гиг ???
может какие-то искусственные ограничения вводят, что ыб собрать можно было только на толстом серваке какого-нибудь производител железа ? отсеивают всяких энтузиастов-самопальщиков
4 ГБ модуль DDR3 стоит восемьсот рублей, практически все современные десктопные материнские платы с четырьмя слотами такие модули поддерживают.
А вот у меня система поддерживает максимум 3 ГиБ ОЗУ, и менять пока не собираюсь.
А у меня есть нетбук, в котором два гигабайта и больше не воткнуть. Но мне не приходит в голову использовать его для сборки андроида.
Что там такое делается что требует чудовищных обьемов памяти? Рассчет диффуравнений ядерного рекатора, распознавание образов? Ссаный поиск по подстроке, и обходы графов.
Да не - достаточно заюзать жабу :)
Ну для вас специально же гугл сделает редакцию, которая на двух гигах собираться будет.
> 4 ГБ модуль DDR3 стоит восемьсот рублей,Найди пожалуйста мне 16 Гб (8x2Gb) PC3200 (DDR 400), ECC, Registred CL2.5,
я даже заплачу по 500 рублей за двухгиговый модуль.
Что вам, уважаемый стало понятнее, у меня в gentoo в дистфайлс лежит 4 с хвостиком гига архивированных исходников. Предположим, что половина из них старые версии и то что стоит слотами т.е параллельно, но даже если распаковать оставшиеся 2 гига, я думаю станет больше 6 гигов.
Между тем, у меня в системе только то что МНЕ надо, а в андроиде нечто среднее для всех, так что 6 гигов исходников это не много для целой системы поставленной в исходных текстах...можете к примеру с оффтопиком по сравнивать.
А вот 16 гигов озу для сборки - это сииильно рекомендательно ;)
> Что вам, уважаемый стало понятнее, у меня в gentoo в дистфайлс лежит
> 4 с хвостиком гига архивированных исходников. Предположим, что половина из них
> старые версии и то что стоит слотами т.е параллельно, но даже
> если распаковать оставшиеся 2 гига, я думаю станет больше 6 гигов.
> Между тем, у меня в системе только то что МНЕ надо, а
> в андроиде нечто среднее для всех, так что 6 гигов исходников
> это не много для целой системы поставленной в исходных текстах...можете к
> примеру с оффтопиком по сравнивать.
> А вот 16 гигов озу для сборки - это сииильно рекомендательно ;)вопрос же не в абсолютном размере , а если сравнивать с прошлыми версиями
то есть , раньше было около 2х гиг (ну даже допустим будет 3), и было всё ок , а сейчас 6тьоткуда такая разница ?
Дайте ссылку на исходники оффтопика, очень хотелось бы сравнить.
джава )
Простите, автор этой новости (не оригинала) вообще понимает, о чем пишет?
В оригинале ангельским по белому написано: "16GB RAM _recommended_".
Вообще, и оригинал очень вольно обходится с "recommended" и "required". Может быть, он тоже не видит разницы? В принципе, для "энтузиаста из Бангалора" это вполне простительно...
Да, подкачку же в многозадачных ОС давно отменили. Автор по ходу не видит разницы между виртуальной и физической памятью.
> Да, подкачку же в многозадачных ОС давно отменили. Автор по ходу не
> видит разницы между виртуальной и физической памятью.Похоже это вы не понимайте о чем пишите. Попытайтесь на досуге пособирать с залезанием в своп, минута легко превращается в неделю.
В Android сборка многопоточная с настройками не скупящимися на память, чтобы собрать имея ОЗУ меньше рекомендованного вам придется переписать скрипты сборки.
То есть собрать исходники можно (хотя и медленно) с меньшей памятью.
А если переписать скрипты сборки (что не должно быть нерешаемой задачей для человека, который взялся сам компилировать ОС), то можно и оптимизировать процесс для другого железа.Таким образом, новость с учетом вашего комментария представляется так: "те, кто писал скрипты сборки Андроида, явно рассчитывали на машины, богатые памятью".
И никаких "понадобится" или "требует"...
> А если переписать скрипты сборки (что не должно быть нерешаемой задачей для человека, который взялся сам компилировать ОС)Весь (я повторю, ВЕСЬ) Андроид собирается из одного Makefile. Который рекурсивно билдит все модули, ядро, библиотеки, итд.
Отсюда и размер - по-умолчанию используется -j16, так что параллельно все эти процессы и используют до 16ГБ памяти для линковки и кеща.
Ну и чего там на 16 гиг-то? Да мир в генте с -j16 (тоже одной командой, ну и что?) и то соберется с 1ГБ ОЗУ без проблем, хватит за глаза. Вместе с кедами, явой, ядром и офисом.16 гиг это по ходу субъективные предпочтения автора статьи.
> Простите, автор этой новости (не оригинала) вообще понимает, о чем пишет?
> В оригинале ангельским по белому написано: "16GB RAM _recommended_".Где вы такой оригинал нашли, там написано "no less than 16 GB RAM", а именно "Ice Cream Sandwich will need workstations with no less than 16 GB RAM to build the source code, twice the amount Gingerbread needed"
> Где вы такой оригинал нашлиПервая ссылка в новости. Слэшдот ссылается туда же под "no less".
Там заявление некоего энтузиаста, в котором он сначала утверждает, что 16 гигов требуются, потом - что рекомендуются.
Меня больше интересует откуда взялось утверждение про то, что сборка пряника требует 8 гиг.
Собирал я цианоген в виртуалке. Сперва по дурке дал ей 256 Мб - разумеется ушла глубоко в своп. С гигом памяти и на одном ядре E8400 собралось за 4-5 часов (точно не засекал). Т.е. понятно, что чем больше, тем будет быстрее, но "no less than" больше похоже на откровенное гонево.
> Меня больше интересует откуда взялось утверждение про то, что сборка пряника требует
> 8 гиг.Я полагаю что это рекомендуемый размер, чтобы как исходники так и объекты разместились в памяти вместе с линковкой всего этого хозяйства. Как-раз как-то под 16ГБ и выходит все вместе.
Можно собрать и с меньшем количеством памяти, но в память все не поместится, будет своппиться.
Таки да. "no lesser than 16 GB RAM to build the source code(I am not kidding)", это исключительно фантазии постера. Там же в камментах есть ссылка на google groups, откуда видимо и взяты эти цифры, но про требования там ничего нету, только "recommended".Опять же, 1 гиг и одно ядро 3GHz, это как бы не в два раза меньше озвученной конфиги, а те же 5 часов получаются.
Хоть кто-нибудь в этой теме понимает, что собирать все исходники - такой же бред, как и смотреть все фильмы/слушать всю музыку сразу? Никто не запрещает помодульную сборку.>Объем кода составляет 6 Гб.
Вы в своём уме? Моя домашняя библиотека, где собрано лучшее из мировой литературы, по моему мнению (свыше 1000 книг), столько не занимает. Вероятно, имеется в виду код + медиа-ресурсы?
И часто вы перекомпилируете свою домашнюю библиотеку? ;)Не всегда можно отделить код от ресурсов. Есть, например, формат XPM - это одновременно и картинка, и С-код. Причем не слишком-то оптимальный...
> И часто вы перекомпилируете свою домашнюю библиотеку? ;)Не понял шутки, при чём здесь компиляция библиотеки?
> Не всегда можно отделить код от ресурсов. Есть, например, формат XPM - это одновременно и картинка, и С-код. Причем не слишком-то оптимальный...
Так в том и дело, что в Google над Android'ом работают серьёзные системные архитекторы и программисты, на полную рабочую ставку, которые ещё на этапе проектирования ОС должны были разобраться с форматами ресурсов и оптимизацией сборки. Не сделаешь это в начале - убьёшь инфраструктуру проекта на корню, превратив его в "базар" вместо "собора". Очень удивлён таким объёмом кода, сколько же будет занимать среднестатистический собранный загрузочный образ системы?
> Так в том и дело, что в Google над Android'ом работают серьёзные
> системные архитекторы и программисты, на полную рабочую ставку, которые ещё на
> этапе проектирования ОС должны были разобраться с форматами ресурсов и оптимизацией
> сборки. Не сделаешь это в начале - убьёшь инфраструктуру проекта на
> корню, превратив его в "базар" вместо "собора". Очень удивлён таким объёмом
> кода, сколько же будет занимать среднестатистический собранный загрузочный образ системы?Около 120 мегабайт.
Собственно, ничего удивительного тут нет. Та же библиотека webkit, которая занимает около 10 мегабайт в исходниках, требует под 15ГБ для полной сборки. В андроиде она собирается только с конкретными ключами, но все равно, она одна больше гигабайта требует под .o файлы.
При линковке, финальном сжатии и упаковке и strip'е все это сжимается где-то с 6 гигабайт до 100-с-чем-то мегабайт.
А в вашей библиотеке случаем книжки не на 57 языках дублируются (должно выйти свыше 57 тысяч)? А то вот "Gingerbread comes in with a whopping 57 languages". Представьте объем текста на стольких языках для всех приложений. Да еще и весь текст в utf-8 надо хранить как минимум. И это еще без учета картинок, звуков...
Про особенности сборки Android'а написано выше, я считаю идею нести на борту каждого Anroid-устройства все 57 языков в корне неверной. Программы с нужными локалями собирать/устанавливать уже давным-давно можно, хватает английского и языка страны, для которой предназначено устройство. Либо, как вариант, после перового знакомства с системой предлагать пользователю самому решать, какие языки оставлять в системе, а какие - удалять, освобождая дополнительное место на SSD.
Никто же и не говорит, что каждый байт из этих 6 гиг примет участие в компиляции в вашем конкретном случае. Это _полный_ код системы, на все случаи жизни.
> на двухпроцессорной системе ... 25 минут реального времени или 5 часов процессорного времени.Одному мне кажется, что что-то не сходится?
Два шестиядерных процессора?
Но нужно заметить, что упомянутый в новости Intel Xeon E5620 4-х ядерный :-)
К чему все эти крики, 16гб это рекомендовано, можно с успехом собрать и на 1гб, какого нибудь целерона, но собираться будет не 25 минут, а 5 дней.
Никто не стремится решать задачи. Половина кода рождается ради того, чтобы быть, а другая, чтобы хоть как-нибудь работало.
> Никто не стремится решать задачи. Половина кода рождается ради того, чтобы быть,
> а другая, чтобы хоть как-нибудь работало.Открытие века совершил. Ха. А что, на какой-то планете это не так?
Так есть, было и будет