Пакети для відновлення після оновлення gcc на системах gentoo


Відповіді:


11

TL; DR

Я по-іншому сприймаю це як користувач Gentoo. Хоча я згоден з підходом Петерфа "Нехай система вирішує", я не погоджуюся, коли мова йде про оновлення ABI . Оновлення ABI іноді є серйозним зрушенням у поведінці. Що стосується GCC 4.7, зміною ABI було прийняття нового стандарту C ++ 11, на який також вказував петерф.

Ось чому я пишу цю відповідь. Я стандарт наркоман. Я почав у веб-світі, коли було близько 4 різних браузерів та безліч тегів у HTML, які підтримували лише певні браузери. У той час усі ці теги посилили плутанину, і IMO зробило більш важку роботу. З цієї ж причини C ++ було стандартизовано, коротше, щоб ви могли скласти код, який я записую, і я можу скласти код, який ви пишете . Якщо ми вирішили не слідувати стандарту, ми втрачаємо свободу ділитися.

C ++ 98 був затвердженим стандартом протягом 13 років. C ++ 11 був ратифікований Комітетом ISO у 2011 році та був повністю інтегрований у GCC 4.7. Перегляньте поточний статус ISO та новий стандарт ISO .


Чому ми повинні відчувати себе привілейованими як користувачі Gentoo

Як користувачі джерелорозподіленого дистрибутиву, ми маємо унікальну можливість формувати майбутню поведінку пакету, оскільки ми складаємо його перед тим, як використовувати його. Як такий, щоб підготуватися до такої можливості, я вважаю, що під час оновлення до нового компілятора слід виконати такі команди:

emerge -ev system
gcc-config -l && gcc-config *new compiler name*
env-update && source /etc/profile
emerge -1v libtool
emerge -ev system

Перший прохід через систему будує новий компілятор, і це залежність, зі старим компілятором. Другий прохід через систему відновлює новий компілятор, і це залежність від нового компілятора. Зокрема, ми хочемо зробити це так, щоб наша ланцюжок побудови скористалася новими можливостями нового компілятора, якщо також були оновлені пакети Build Chain ... Деякі люди замінюють 2-й прохід через систему на світовий набір, хоча я вважаємо це непосильним, тому що ми не знаємо, які пакунки вже підтримують новий стандарт, але ми хочемо, щоб наш ланцюжок побудови поводився добросовісно.

Здійснюючи це, принаймні, набір систем, готує нас до тестування кожного пакету, який ми збираємо, на новий стандарт, оскільки ми використовуємо перехідний випуск. Таким чином, додавання -std=c++11до CXXFLAGSоновлення ланцюга збірки дозволяє нам протестувати на поломку та мати змогу надсилати помилки безпосередньо нашим баггілам чи вище за течією фактичним розробникам з простої причини:

Привіт, ваш пакет бла-благ ламається, використовуючи новий стандарт C ++, і я додав свій журнал збирання.

Я вважаю це люб’язним ставленням до розробників, оскільки зараз вони встигають підготуватися, коли стандарт стає більш широко прийнятим, а старий стандарт припиняється. Уявіть переполох з боку розробника, якщо він отримав сотні помилок, тому що він дочекався, поки стандарт припинить ...

Жоден інший дистрибутив, про який я знаю, не може використовувати цей метод, оскільки фактичні підтримуючі пакети існують як посередники, перш ніж виправлення або оновлення можуть бути використані відповідним співтовариством користувачів. У нас є технічні засоби, але ми також маємо можливість використовувати місцеве дерево.


Щодо проникливих думок, розміщених у запиті на винагороду

Я не знаю, чи було розміщено щедро, тому що вам всі подобаються мої проникливі, добре продумані відповіді, але в спробі баунті я спробую відповісти на вашу проникливу, добре продуману пропозицію щедрості. По-перше, дозвольте сказати у відповідь, що я, як користувач розподілу на основі джерела, я твердо вірю, що з'єднує точки - це все те, про що ви просили у вашому запиті на винагороду. Хтось може бути чудовим кодером, але нерозумно піклується про програмне забезпечення. Таким же чином, є люди, які є хитрими кодерами, які доглядають за програмним забезпеченням.

Перш ніж я приїхав сюди, я був завзятим плакатом на форумах Gentoo . Нарешті я зрозумів, коли почав приїжджати сюди, що кожен має певний талант, який може використати. Саме те, що вони вирішують зробити з цим, робить внесок у різницю. Деякі з нас є великими письменниками (не я), тому якщо ви хочете внести свій внесок у якийсь проект, але ви не можете чи не можете написати код або виправити помилки, пам’ятайте, що великі письменники можуть писати чудову документацію або чудові статті Wiki .

Стандарт існує з іншої причини: у Співтоваристві від його членів очікують певні правила . Дотримуйтесь цього твердження і тут. Якщо я надсилаю виправлення, виправлення, вдосконалення тощо, і немає стандартів, патч працюватиме лише в тих ситуаціях, які я вважаю важливими, тобто, якщо я використовую компілятор whizbang 2.0, а патч побудований проти компілятора whizbang 1.0, це не вдасться. Оскільки зусилля спрямовані на спільноту, громада очікує, що все працює в більшості ситуацій, тому замість того, щоб змушувати всіх користувачів перейти на компілятор 2, я можу встановити стандарт:

Цей пакет вибирає, щоб дозволити зворотну сумісність з Whizbang Compiler 1.0

Таким чином, як розробник, чіткий кодер чи ні, я знаю, що я повинен використовувати або принаймні перевірити компілятор версії 1.0. Як користувач, з іншого боку, я можу вибрати, чим хочу займатися. Якщо я незадоволений, я можу надіслати запит на виправлення, подавши помилку чи іншу крайність "Це програмне забезпечення - це лайно!", І нічого не робити. Незважаючи на те, користувач та розробник розуміють стандарт, оскільки він написаний.

Усунення прогалини вживає певної форми з боку користувача, і для цього потрібні всі речі, про які ви попросили мене та інших прокоментувати, і ми повинні покладатися на спільноту користувачів та їхні таланти усіх форм, які усувають цей проміжок. Якщо ви вирішили стати одним із користувачів, що сприяють, я вам аплодую. Тим із вас, хто вирішив бути неактивним, пам’ятайте, що якщо ви хочете щось виправити, активним потрібен ваш внесок. Тож я кажу вам, не соромтеся надсилати помилку чи повідомляйте нам, що нам потрібно оновити документацію, і якщо ми грубим, скажіть нам, або знайдіть когось іншого, поки ви не знайдете свою область знань.


Інші цікаві читання, пов'язані з цією темою

  1. Найбільші зміни в C ++ 11 (і чому вам це потрібно хвилювати)
  2. C ++ 0x / C ++ 11 Підтримка в GCC
  3. Новини, статус та обговорення щодо стандарту C ++

Тоді я
оновлю

3

Багато що залежить від того, який тип оновлення компілятора ви зробили. Якщо це було суттєво, то все слід перекомпілювати *) через можливі зміни компілятора ABI. У багатьох випадках це не знадобиться, але якщо ваші пакети залежать від чогось на зразок C ++ 11, то у вас можуть виникнути проблеми - див., Наприклад, новини Gentoo про зміну ABI у GCC 4.7 або GCC-баггіллі .

*) Зверніть увагу на наголошення на "перекомпільовано" - це, безумовно, не має сенсу перекомпілювати (читати перевстановити) додаток Python або Perl, оскільки ви змінили компілятор C. Якщо тільки він не має вродженого компонента (який він цілком може).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.