LINUX.ORG.RU

Как пропатчить кодировки под протокол file://

 , ,


0

4

Я пытаюсь вставить 308-ой строкой файла /network/protocol/file/nsFileChannel.cpp вызов сеттера из базового класса:
SetContentCharset(«utf8»);

Пробовал и по-другому (что по-моему эквивалентно предыдущему):
nsCString contentCharset = «utf8»;
SetContentCharset(contentCharset);

Проблемы у меня такие:
A) при запуске под отладкой в eclipse-cdt отладчик останавливается в этом месте в нужное время, однако игнорирует изменения как будто бы я не перекомпилировал программу.

Программу я перекомпилирую командой
~/firefox/firefox-30.0+build1$ dpkg-buildpackage -b -nc -us -uc
любезно рекомендованной i-rinat, однако перекомпиляция всё равно занимает много времени (потому разработчики мозиллы не пользуются мейком напрямую, а делают всё через питон-скрипты moz.build в каждой директории)

B) Эклипс постоянно что-то переиндексирует, и мне непонятно, как убрать из workspace несколько директорий не удаляя их с диска физически

C) Как скомпилировать ровно один cpp-шник через графический интерфейс (не ковыряясь с вызовом компилятора с полным списком ключей)

Вопросы:
1) Почему не подцепляется новый код
2) как ускорить безбожно тормозящий Eclipse
3) как быстрее компилировать исходники firefox
4) какую в точности строчку надо передавать - utf8, UTF8, utf-8 или UTF-8 (где это написано)?

спасибо



Последнее исправление: mosa-spy (всего исправлений: 1)

3) как быстрее компилировать исходники firefox

1. .mozbuild свой покажи.

2. Почему не пользуешься mach build напрямую?

d2
()

однако перекомпиляция всё равно занимает много времени

... потому что dpkg-buildpackage каждый раз всё стирает и собирает заново. Собирай с помощью ./mach build

отладчик останавливается в этом месте в нужное время

Используй живительный printf (или std::cout) вместо отладчика. А файлы редактировать можно в любом текстовом редакторе, для этого не обязательно воевать с Eclipse.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от i-rinat

каждый раз всё стирает

-nc
Do not clean the source tree (implies -b if nothing else has been selected among -F, -g, -G, -B, -A or -S).

Собирай с помощью ./mach build

Из корня? Оно опять будет собирать всё. Пробовал из локаьлной папки - не находит mach, gредлагает установить. Установил как пакет. Перестало компилироваться вообще (находит какие-то фантомные ошибки прямо при сборке начисто). Сейчас буду удалять mach...

mosa-spy
() автор топика
Ответ на: комментарий от mosa-spy

Do not clean the source tree

Подумай: dpkg-buildpackage не предназначен для итеративной разработки, его назначение — собирать пакет. Да, он может не стирать файлы, что уже странная функция для сборщика пакетов. Но кто даст гарантию, что сборочная система будет работать корректно в такой ситуации? Наверняка таких как ты, собирающих deb пакет с firefox на каждое изменение, единицы. В довесок ты ждёшь, пока пакет упакуется архиватором xz, чтобы потом сразу же его распаковать.

С другой стороны, mach — штатная сборочная система Firefox'а. Наверняка почти все, кто разрабатывает Firefox, делают это итеративно, и собирают mach'ом.

Но ты волен выбирать себе страдания по душе. Свобода воли, все дела.

i-rinat ★★★★★
()
Ответ на: комментарий от mosa-spy

Из корня? Оно опять будет собирать всё.

Я как раз сегодня буду 32-й firefox собирать, для тестов. Заодно попробую померить время на пересборку после изменения нескольких файлов. Посмотрим, прав ты или нет.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Заодно попробую померить время на пересборку после изменения нескольких файлов.

Нормально всё работает. Он бредит. Можешь не проверять. :D

d2
()
Ответ на: комментарий от mosa-spy

Полная сборка — 47 минут. Если тронуть файлы из упомянутой тобой директории, то повторная сборка занимает 7 минут.

i-rinat ★★★★★
()
Ответ на: комментарий от d2

1) Почему не подцепляется новый код

потому что в нём ошибка, надо писать так:
nsCString contentCharset(«utf8»);
SetContentCharset(contentCharset);

dpkg-buildpackage -b -nc -us -uc

А здесь ошибка уже у них. Им надо при выявлении ошибки компиляции останавливать процесс, а
они процесс продолжают, используя старые файлы, не стёртые из-за флага -nc

mosa-spy
() автор топика
Ответ на: комментарий от i-rinat

3) как быстрее компилировать исходники firefox

$ grep «duration» out1.log | sort | tail -n 1
Total duration: 0:51:00.184270

$ ./mach build
...
7:10.35 Swap in/out (MB): 0/1
Your build was successful!

как будто 8 минут - это мало.
Мгновенно одну изменённую строчку собирать должна!
Иначе это чья-то недоработка.

mosa-spy
() автор топика
Ответ на: комментарий от mosa-spy

А здесь ошибка уже у них.

Как написано в гиде для молодых разработчиков Chromium в разделе Troubleshooting:

IN OPEN SOURCE NO ONE CAN HEAR YOUR SCREAM

(собственно, эта фраза и составляет всё содержимое раздела Troubleshooting)

stevejobs ★★★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.