LINUX.ORG.RU
ФорумTalks

libpng1.6.0

 , ,


0

1

http://sourceforge.net/mailarchive/forum.php?thread_name=CA+PdXcvCWOWajJH6W7g...

Объясните мне кто-нибудь, как можно удалять ф-ии из api и не менять soname? Почему существуют такие люди?

★★★★

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

А разве нельзя в опциях линковки четко выставить номер версии библиотеки?

Вообще особых проблем не вижу. Вот если бы они номер версии вообще не изменили - тогда была бы беда.

trex6 ★★★★★
()
Ответ на: комментарий от dikiy

ок, допустим у меня в пакете было написано dependency: >= libpng1.5 ставлю я себе libpng1.6 и у меня всё благополучно крешится. Я не считаю это нормальным.

nanoolinux ★★★★
() автор топика
Ответ на: комментарий от vurdalak

Чёрт, я не знал что всё так плохо… День окончательно испорчен…

nanoolinux ★★★★
() автор топика
Ответ на: комментарий от nanoolinux

ок, допустим у меня в пакете было написано dependency: >= libpng1.5

Кривые зависимости какого-то пакета - это не проблема ребят из libpng. Мне кажется, что хорошей практикой было бы ставить в dependency как >= так и <=, чтобы пользователь видел, что пакет тестировался только для этих версий внешней библиотеки и дальше уже ставил все на свой страх и риск, либо держал у себя несколько версий библиотеки.

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

Ну, в этом весь прикол этих циферок вообще-то.

это не проблема ребят из libpng

Это как раз проблема их криворукости на мой взгляд. Даже не могу себе представить сколько головной боли это добавляет ментейнерам пакетов.

nanoolinux ★★★★
() автор топика
Ответ на: комментарий от trex6

В генте обычно такие вещи делаются слотами. Т.е. есть обновляемый в пределах совместимой версии пакет в слоте 1.5 и в слоте 1.6, они могут быть установлены одновременно и обновляются независимо. А пакету просто прописывают зависимость от libpng:1.5

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

А как это решается на уровне фс? Допустим я линкую програму с какой-нибудь libastral. Какую версию выберет линкер если я ему добавлю -lastral в мейкфайл например?

Что-то я в шоке от бардака в опенсорсе современности…

nanoolinux ★★★★
() автор топика

Если будут проблемы с «Не могу пересобрать программу, потому что другая программа хочет -lpng15, которого нет» пиши, я недавно обновлял libpng14 до libpng15 и ещё всё помню.

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

Да на png мне как-то пофиг, просто в новостях наткнулся и был как-то… обескуражен.

Я с libtiff работаю немного, но там вроде как стабильно всё, проблем не замечал.

nanoolinux ★★★★
() автор топика
Ответ на: комментарий от nanoolinux

nanoolinux

Ну, в этом весь прикол этих циферок вообще-то.

это не проблема ребят из libpng

Это как раз проблема их криворукости на мой взгляд. Даже не могу себе представить сколько головной боли это добавляет ментейнерам пакетов.

все они нормально делают. Чего тебе не нравиться? Хочешь, чтобы >=1.5 работало всегда? Про обратную совместимость лучше тут промолчать.

dikiy ★★☆☆☆
()
Ответ на: комментарий от nanoolinux

Скорее всего выберет ту, на которую указывает симлинк libastral.so, но я не уверен точно. Я сишный код вручную почти не собирал и тем более не писал.

vurdalak ★★★★★
()
Ответ на: комментарий от nanoolinux

А как это решается на уровне фс? Допустим я линкую програму с какой-нибудь libastral. Какую версию выберет линкер если я ему добавлю -lastral в мейкфайл например?

добавь -l/usr/lib/atral.so.1.1.1 или как-то так. Должно работать.

Что-то я в шоке от бардака в опенсорсе современности…

как раз никакого бардака нет.

dikiy ★★☆☆☆
()
Ответ на: комментарий от dikiy

Хочешь, чтобы >=1.5 работало всегда?

Бинго! И разве это плохо? Или сложно сделать?

Идея проста: слинковал код с 1.5 - работает со всеми до 1.99. Поменяли апи: релиз 2.0. Причём в „поменяли апи“ не входит его расширение например. Ну а баги есть баги, от них никуда не деться всё равно.

nanoolinux ★★★★
() автор топика

просто linux это зоопарк немогут волк с овцой ужиться тут так же каждый сам по себе предлагаю терпеть раз выбрали такой путь

xterm
()
Ответ на: комментарий от Reset

Правила хорошего тона требуют еще менять soname.

ну это такое дело. Можно и не менять. Сменить версию достаточно.

dikiy ★★☆☆☆
()
Ответ на: комментарий от vurdalak

В дистрибутивах вроде держат по несколько версий libpng обычно.

Вот, кстати, единственная либа, которая присутствует у меня в системе аж в трёх версиях. Я считаю, что это категорически нездоровая херня.

Axon ★★★★★
()
Ответ на: комментарий от Reset

Я не знаю, что такое soname, но в пакете можно слинковать зависимый софт с libpng.so.5 или libpng.so.6, а не libpng.so

vurdalak ★★★★★
()
Ответ на: комментарий от dikiy

Сменить версию достаточно.

Нет, за такое руки повыдёргивать хочется.

dinn ★★★★★
()
Ответ на: комментарий от nanoolinux

Хочешь, чтобы >=1.5 работало всегда?

Бинго! И разве это плохо? Или сложно сделать?

может и не сложно. Но кому-то не хочется/не считает нужным. Я к примеру не считаю такой подход чем-то ненормальным.

Идея проста: слинковал код с 1.5 - работает со всеми до 1.99. Поменяли апи: релиз 2.0. Причём в „поменяли апи“ не входит его расширение например. Ну а баги есть баги, от них никуда не деться всё равно.

хз. Так или иначе - это не является законом. Версионирование работает тоже ок. Другое дело, что можно договориться менять сразу мажорный номер, а не минорный, но это уже дело такое.

dikiy ★★☆☆☆
()
Ответ на: комментарий от vurdalak

А питон у тебя в одной версии? Вроде же еще не все на третий перешли.

Ну, питон - это отдельная история. Опять же, его-то, хотя бы, два экземпляра, а не три.

Axon ★★★★★
()
Ответ на: комментарий от nanoolinux

костыль на костыле костылём поганяет, да.

где ж костыль? Хочешь первую версию - линкуешь с /usr/lib/libastral.so.1

хочешь вторую - линкуешь с /usr/lib/libastral.so.2

что не нравится-то? Это смена soname костыль.

dikiy ★★☆☆☆
()
Ответ на: комментарий от nanoolinux

Идея проста: слинковал код с 1.5 - работает со всеми до 1.99.

так и линковал бы с /usr/lib/libpng.so.1.5

и все ок. Они API сменили, и версию на 1.6 поменяли. А если б не сменили, меняли бы в пределах 1.5.*

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

конечно можно, пионерии, которая пишет опенсорс, всё можно, а в результате мы имеем говно и глюкодром

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

конечно можно, пионерии, которая пишет опенсорс, всё можно, а в результате мы имеем говно и глюкодром

ты ошибаешься. Есть три общепринятых уровня нумерации версий либ. И добавлять еще один уровень в виде soname нет никакой необходимости.

dikiy ★★☆☆☆
()
Ответ на: комментарий от dikiy

Совершенно верно и это плохо. Этот мир для халтурщиков ©

nanoolinux ★★★★
() автор топика
Ответ на: комментарий от trex6

А разве нельзя в опциях линковки четко выставить номер версии библиотеки?

нельзя. Линкер такое не умеет. Какой файл библиотеки ему подсунули, тот и линкует

Harald ★★★★★
()
Ответ на: комментарий от trex6

Кривые зависимости какого-то пакета - это не проблема ребят из libpng.

Ребята из libpng создают кучу проблем окружающим за счет того, что не следуют спецификации http://semver.org/

Нарушена обратная совместимость => должен быть увеличен мажорный номер версии.

Manhunt ★★★★★
()
Ответ на: комментарий от Axon

А у меня жопег всего один, турбо. Но я вижу пакет jpeg с двумя слотами: 6 и последняя (в данный момет 8, но может обновляться до любой).

vurdalak ★★★★★
()
Ответ на: комментарий от dikiy

Чувак, ты даже не предсталяешь, насколько сильно ты себе противоречишь. Если не веришь - попробуй запустить третьекеды поверх qt4. Тебя ждёт большой сюрприз.

А потом еще возьми кеды 4.0.2 слинкованые с qt4.0.0 какой-нибудь и запусти их поверх qt4.8. Никаких сюрпризов ты не увидишь, потому-что в троллтехе не дураки и руки им отрывать не за что.

nanoolinux ★★★★
() автор топика
Ответ на: комментарий от Manhunt

Ребята из libpng создают кучу проблем окружающим за счет того, что не следуют спецификации http://semver.org/

С моей стороны возражений больше нет.

dikiy ★★☆☆☆
()
Ответ на: комментарий от nanoolinux

Чувак, ты даже не предсталяешь, насколько сильно ты себе противоречишь. Если не веришь - попробуй запустить третьекеды поверх qt4. Тебя ждёт большой сюрприз.

я уже понял, где ошибся.

dikiy ★★☆☆☆
()
Ответ на: комментарий от ZenitharChampion

обновлял libpng14 до libpng15

А я вот обновлял libpng14 до libpng15, и ничего не было. Гента же.

PaxtonFettel
()

так а что не так? удалили вроде то, что было объявлено deprecated. или на ворнинги мы большой и толстый кладем?

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

Конечно нет, -Werror во всех проектах. Просто с этой либой я дела не имею (и это хорошо, очевидно).

Проблема в том, что есть устоявшиеся правила, об которые они вытирают ноги, усложняя тем самым жизнь тех, кто эту либу пользует или ментейнит.

В идиале deprecated надо выкидывать когда обновляется мажор версия. Но я понимаю, что слишком много хочу, перфекционизм и всё такое. Но менять ещё и сигнатуры ф-ий в public api - это слишком. Изменения таковы, что надо было бы подумать о новой мажор версии. Может они боятся, что кому-то это надоест и он форкнет их либу?

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

Даже не могу себе представить сколько головной боли это добавляет ментейнерам пакетов.

ну, просто никто не хочет тестировать свой билд с новой версией libpng -)

stevejobs ★★★★☆
()
Ответ на: комментарий от dikiy

и все ок. Они API сменили, и версию на 1.6 поменяли. А если б не сменили, меняли бы в пределах 1.5.*

Принято менять API в мажорной версии, а не в минорной или номере патча. Впрочем, дело можно было поправить в формате ELF, да только нет в нём отдельно версии ABI библиотеки.

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

Сломали обратную совместимость и не изменили при этом мажорный номер версии.

и где несоблюдение?

не поленился собрать.

(victor@ksakep)~ $> ls /tmp/png15/usr/lib                                                                                                  [sh]
libpng15.a  libpng15.la*  libpng15.so@  libpng15.so.15@  libpng15.so.15.14.0*  libpng.a@  libpng.la@  libpng.so@  pkgconfig/
(victor@ksakep)~ $> ls /tmp/png16/usr/lib                                                                                                  [sh]
libpng16.a  libpng16.la*  libpng16.so@  libpng16.so.16@  libpng16.so.16.0.0*  libpng.a@  libpng.la@  libpng.so@  pkgconfig/
(victor@ksakep)~ $>                                                                                                                        [sh]

все соответствует, рантайм будет верещать. а если какой-то муфлон забил на то, что ему вещает компилятор при сборке, а потом начинает доказывать, что это он в шляпе и с усами, а все остальные нетрадиционной ориентации - так муфлон и есть муфлон

ananas ★★★★★
()
Ответ на: комментарий от nanoolinux

Проблема в том, что есть устоявшиеся правила, об которые они вытирают ноги, усложняя тем самым жизнь тех, кто эту либу пользует или ментейнит.

да ну?. есть разработчик. впадло тебе чистить код - пропиши -lpng<apiver>, и всего делов. не надо перекладывать с больной головы на здоровую

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