LINUX.ORG.RU

Какую систему сборки вы предпочитаете?

 , , , ,


1

5

В комментариях хотелось бы увидеть пояснение почему используете то или иное. Всем добра и что бы всё собиралось как надо ::)

  1. Makefile 316 (45%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. Cmake 236 (33%)

    **********************************************************************************************************************************************************************************************************************************************

  3. Не знаю, просто жму build в IDE 124 (17%)

    *****************************************************************************************************************************

  4. bash/sh/etc скрипты 109 (15%)

    **************************************************************************************************************

  5. qmake 99 (14%)

    ****************************************************************************************************

  6. Apache Maven 74 (10%)

    **************************************************************************

  7. Gradle 73 (10%)

    *************************************************************************

  8. Automake 58 (8%)

    **********************************************************

  9. Другой вариант (в комментариях) 56 (8%)

    ********************************************************

  10. Ninja 33 (5%)

    *********************************

  11. Своя система сборки 33 (5%)

    *********************************

  12. Meson 29 (4%)

    *****************************

  13. Qbs 25 (4%)

    *************************

  14. Apache Ant 13 (2%)

    *************

  15. Waf 8 (1%)

    ********

  16. SCons 6 (1%)

    ******

  17. imake 3 (0%)

    ***

Всего голосов: 1295, всего проголосовавших: 709

Deleted

Проверено: Licwin ()
Последнее исправление: Deleted (всего исправлений: 4)

CMake, Gradle, Meson. Хочу запилить что-нибудь своё.

Ancient
()
Ответ на: комментарий от waker

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

Если такое происходит, то значит что программа рукожопом написана.

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

да они все такие...

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

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

Да есть «железно» написанные на питоне тот же самый ranger и как не странно playonlinux ну это как примеры.

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

Разве не наоборот?

Как раз нет. Со статикой можно расслабиться, если с типами будет что-то не так, то ghc этого не пропустит. А с динамикой многое приходится в ручном режиме проверять.

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

С чего ты это взял?

с практических наблюдений в течение ~15 лет.

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

Да есть «железно» написанные на питоне тот же самый ranger

а здесь написано что вылетает трейсбэк если отсутствует файл rc.conf: https://github.com/ranger/ranger/issues/905

т.е. вполне типичный питоноговнокод, в котором никто не проверяет коды возврата.

что характерно, баг закрыли без исправления — просто юзер понял что надо rc.conf создать :)

и как не странно playonlinux ну это как примеры.

готов поспорить, что и в playonlinux все то же самое.

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

Со статикой можно расслабиться

Ну нееет, расслабляться не стоит, не там, не там, забыть где то поставить size_t вместо int легко и получить переполнение ). Но! Это хотя бы можно отловить в отличии от где то там строку к числу добавили и отправили высчитать среднее арифметическое от уже не числа, а строки :D Бдить надо всегда ))

Deleted
()
Ответ на: комментарий от waker

отсутствует файл rc.conf

Точно! Чёрт я и забыл, я на это тоже напоролся, но сейчас пофиксили ::) К слову уже давно у меня возникает NIH-синдром переписать ranger на сишку =)....и wicd ещё :D

Ну я и не спорю что на питоне уг часто очень, даже хуже всего то что порой оно является встроенным языком и то у блендера что-то отвалиться, то openshoot скажет я не буду запускаться под пользователем user, а под любым другим пожалста :D

Я лично скрывать не буду я не люблю питон, его синтаксис, его всё, но всё же верю что и на нём можно писать надёжные вещи ::)

Deleted
()
Ответ на: комментарий от waker

а здесь написано что вылетает трейсбэк если отсутствует файл rc.conf

А было бы это написано на сипипи, то он упал бы без трейсбэк-а и юзеру пришлось бы через отладчик догадываться в чём дело. Это ещё раз доказывает что если программа сделана рукожопом, то не в языке проблема.

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

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

Ну это уже чисто сишные заморочки. Хотя на Int-е тоже может быть переполнение, но никто им пользоваться не заставляет.

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

А было бы это написано на сипипи, то он упал бы без трейсбэк-а и юзеру пришлось бы через отладчик догадываться в чём дело.

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

Это ещё раз доказывает что если программа сделана рукожопом, то не в языке проблема.

рукожопы выбирают питон. этим все объясняется.

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

это юмористический ресурс. как подобная статистика может влиять на реальное положение вещей?

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

прямое наблюдение никто не отменял. берешь любую программу на питоне — получаешь одно и то же.

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

Ну это уже чисто сишные заморочки. Хотя на Int-е тоже может быть переполнение, но никто им пользоваться не заставляет.

Это я к тому что при статике ты должен чётко понимать для чего тебе тот или иной тип и какого он должен быть размера, а не просто «ну вот у меня тут переменная я туды буду цыфры лажить башие и маленькие» :D Поэтому я и сетую за то что расслабляться в виду того что ошибка с типами выскочит на этапе компиляции не значит как бы не то )) Расслабляются динамики, хватит ли размера счётчика? Не важно у нас цифры бесконечные! Где память после того как я загрузил картинку обработал её и выдал в консоль qr код? Не важно оно само разрулится. Ну и тому подобное. За переменными нужно следить всегда и не важно на чём ты пишешь и есть ли у тебя GC или нет. Любой язык в хороших руках хорошо себя показывает, но всё же при статике ответственность выше, ты просто по умолчанию не даёшь себе волю халтурить, потому что поспешив один раз можешь потом огрести многочасовой секс с printf и gdb =) Статика не даёт расслабляться в принципе потому что там это недопустимо.

Deleted
()
Ответ на: комментарий от Rodegast

единственной программой на питоне, которую я считал более-менее качественно написанной, был mercurial. там конечно говнокода хватало, нормальные программы так не пишут.. но он вполне стабильно работал. пока в определенный момент не перестал. оказалось, разработчики забыли проверить extension API, и нахрен поломали половину расширений апдейтом. и что характерно, вполне в духе питона, просто сказали «да и хрен с ним, пусть будет новый API».

(ну и да, трейсбеками он тоже сыпет периодически)

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

прямое наблюдение никто не отменял

Я не думаю что прямое наблюдение одного человека будет объективнее того-же говнокода.

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

Расслабляются динамики, хватит ли размера счётчика? Не важно у нас цифры бесконечные!

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

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

Я не думаю что прямое наблюдение одного человека будет объективнее того-же говнокода.

не будет. наблюдения вполне субъективны. но в то же время, доля объективности есть, т.к. доказательств обратного пока нет совсем.

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

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

Ну тут я не поспорю, никто не запрещает )

Deleted
()
Ответ на: комментарий от waker

Ну хорошо... Вот например написал ты программу, а ей файл нужен которого нет и без него она работать не может. Что должно произойти?

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

Как в С объявить переменную для хранения бесконечно большого числа?

Кроме C есть множество других языков со статической типизацией.

Rodegast ★★★★★
()

qbs - это QuickBASIC System? Надо же, до сих пор популярен, чертяка!

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

Что должно произойти?

попробуй запустить любую *нормальную* программу, удалив нужный ей файл, и посмотри что будет.

типично, какое-то сообщение об ошибке, типа «файл не найден».

waker ★★★★★
()

У меня такое ощущение, что недавно на лоре я уже участвовал в подобной голосовалке.

псы тред не читал.

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

попробуй запустить любую *нормальную* программу, удалив нужный ей файл, и посмотри что будет.

Ну вот я взял DeaDBeeF и удалил у него каталог share. В итоге получаю вот такой выхлоп:

rodegast@rodegast:~$ /opt/deadbeef/bin/deadbeef 
starting deadbeef 0.7.2 [static]
server_start
searching for GUI plugins in /home/rodegast/.local/lib64/deadbeef
searching for GUI plugins in /home/rodegast/.local/lib/deadbeef
searching for GUI plugins in /opt/deadbeef/lib/deadbeef
load_plugin_dir /opt/deadbeef/lib/deadbeef: scandir found 53 files
found gui plugin ddb_gui_GTK2.so
added GTK2 gui plugin
found gui plugin ddb_gui_GTK3.so
added GTK3 gui plugin
load gui plugin
checking GUI plugin: GTK2
found selected GUI plugin: GTK2
loading plugin /opt/deadbeef/lib/deadbeef/ddb_gui_GTK2.so
loading plugins from /home/rodegast/.local/lib64/deadbeef
loading plugins from /home/rodegast/.local/lib/deadbeef
loading plugins from /opt/deadbeef/lib/deadbeef
load_plugin_dir /opt/deadbeef/lib/deadbeef: scandir found 53 files
loading plugin /opt/deadbeef/lib/deadbeef/aac.so
loading plugin /opt/deadbeef/lib/deadbeef/adplug.so
loading plugin /opt/deadbeef/lib/deadbeef/alac.so
loading plugin /opt/deadbeef/lib/deadbeef/alsa.so
loading plugin /opt/deadbeef/lib/deadbeef/artwork.so
loading plugin /opt/deadbeef/lib/deadbeef/cdda.so
loading plugin /opt/deadbeef/lib/deadbeef/converter.so
loading plugin /opt/deadbeef/lib/deadbeef/converter_gtk2.so
loading plugin /opt/deadbeef/lib/deadbeef/converter_gtk3.so
loading plugin /opt/deadbeef/lib/deadbeef/dca.so
loading plugin /opt/deadbeef/lib/deadbeef/ddb_ao.so
loading plugin /opt/deadbeef/lib/deadbeef/ddb_dumb.so
loading plugin /opt/deadbeef/lib/deadbeef/ddb_mono2stereo.so
loading plugin /opt/deadbeef/lib/deadbeef/ddb_shn.so
loading plugin /opt/deadbeef/lib/deadbeef/dsp_libsrc.so
loading plugin /opt/deadbeef/lib/deadbeef/ffap.so
loading plugin /opt/deadbeef/lib/deadbeef/ffmpeg.so
loading plugin /opt/deadbeef/lib/deadbeef/flac.so
loading plugin /opt/deadbeef/lib/deadbeef/gme.so
loading plugin /opt/deadbeef/lib/deadbeef/hotkeys.so
loading plugin /opt/deadbeef/lib/deadbeef/in_sc68.so
loading plugin /opt/deadbeef/lib/deadbeef/lastfm.so
loading plugin /opt/deadbeef/lib/deadbeef/m3u.so
loading plugin /opt/deadbeef/lib/deadbeef/mms.so
loading plugin /opt/deadbeef/lib/deadbeef/mp3.so
loading plugin /opt/deadbeef/lib/deadbeef/musepack.so
loading plugin /opt/deadbeef/lib/deadbeef/notify.so
loading plugin /opt/deadbeef/lib/deadbeef/nullout.so
loading plugin /opt/deadbeef/lib/deadbeef/oss.so
loading plugin /opt/deadbeef/lib/deadbeef/pltbrowser_gtk2.so
loading plugin /opt/deadbeef/lib/deadbeef/pltbrowser_gtk3.so
loading plugin /opt/deadbeef/lib/deadbeef/pulse.so
loading plugin /opt/deadbeef/lib/deadbeef/shellexec.so
loading plugin /opt/deadbeef/lib/deadbeef/shellexecui_gtk2.so
loading plugin /opt/deadbeef/lib/deadbeef/shellexecui_gtk3.so
loading plugin /opt/deadbeef/lib/deadbeef/sid.so
loading plugin /opt/deadbeef/lib/deadbeef/sndfile.so
loading plugin /opt/deadbeef/lib/deadbeef/supereq.so
loading plugin /opt/deadbeef/lib/deadbeef/tta.so
loading plugin /opt/deadbeef/lib/deadbeef/vfs_curl.so
loading plugin /opt/deadbeef/lib/deadbeef/vfs_zip.so
loading plugin /opt/deadbeef/lib/deadbeef/vorbis.so
loading plugin /opt/deadbeef/lib/deadbeef/vtx.so
loading plugin /opt/deadbeef/lib/deadbeef/wavpack.so
loading plugin /opt/deadbeef/lib/deadbeef/wildmidi.so
loading plugin /opt/deadbeef/lib/deadbeef/wma.so
selected output plugin: ALSA output plugin
INFO: loading playlist Monastic Song_ 12th Century Monophonic Chant
INFO: from file /home/rodegast/.config/deadbeef/playlists/0.dbpl
convgui: gtkui plugin not found
plugin Converter GTK3 UI failed to connect to dependencies, deactivated.
plugin Playlist browser GTK3 failed to connect to dependencies, deactivated.
shellexecui: can't find gtkui plugin
plugin Shellexec GTK3 UI failed to connect to dependencies, deactivated.
gtkui plugin compiled for gtk version: 2.16.0

** (deadbeef:8452): WARNING **: Couldn't find pixmap file: play_16.png

** (deadbeef:8452): WARNING **: Couldn't find pixmap file: pause_16.png

** (deadbeef:8452): WARNING **: Couldn't find pixmap file: buffering_16.png
connecting button tray signals

(deadbeef:8452): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_width: assertion 'GDK_IS_PIXBUF (pixbuf)' failed

(deadbeef:8452): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_height: assertion 'GDK_IS_PIXBUF (pixbuf)' failed

(deadbeef:8452): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_pixels_with_length: assertion 'GDK_IS_PIXBUF (pixbuf)' failed

(deadbeef:8452): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_rowstride: assertion 'GDK_IS_PIXBUF (pixbuf)' failed

(deadbeef:8452): GdkPixbuf-CRITICAL **: gdk_pixbuf_get_n_channels: assertion 'GDK_IS_PIXBUF (pixbuf)' failed

(deadbeef:8452): GLib-ERROR **: /build/glib2.0-B1uXKV/glib2.0-2.50.3/./glib/gmem.c:328: overflow allocating 18446744073709551615*18446744073709551615 bytes
Ловушка трассировки/останова
Чем это лучше трейсбэк-а?

Rodegast ★★★★★
()

Makefile+asdf+велосипеды.

Опросу не хватает варианта «специфичная для языка».

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

Чем это лучше трейсбэк-а?

Ну как же... ведь трейсбэка-то нет!!11

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

при статике ответственность выше, ты просто по умолчанию не даёшь себе волю халтурить, потому что поспешив один раз можешь потом огрести многочасовой секс с printf и gdb =) Статика не даёт расслабляться в принципе потому что там это недопустимо.

Какой высокопарный бред. Мне кажется, я уже слышал такое - ты раньше под каким ником писал?

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

Чем это лучше трейсбэк-а?

тем, что перед вылетом тебе написали кучу ошибок о ненайденных файлах.

но вообще я нигде не говорил что glib и gtk не говно.

ну и кстати, в примере про ranger речь шла о конфиге. я если честно ранее не сталкивался с программами, требующими конфиги вручную писать, перед запуском :) разве что разные веб-сервера, но чето я сомневаюсь что они вылетают при отсутствующем конфиге.

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

тем, что перед вылетом тебе написали кучу ошибок о ненайденных файлах.

Ну никакой кучи ошибок я как раз и не наблюдаю. Мне сначала сообщили что загружены какие-то плагины, потом написали 3 warning-а про то что ресурсы не найдены, а потом он тупа упал.

в примере про ranger речь шла о конфиге. я если честно ранее не сталкивался с программами, требующими конфиги вручную писать, перед запуском :)

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

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

но вообще я нигде не говорил что glib и gtk не говно.

Ты вообще нигде не говорил, что хоть что-нибудь - не говно.

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

Ну никакой кучи ошибок я как раз и не наблюдаю.
потом написали 3 warning-а про то что ресурсы не найдены, а потом он тупа упал.

/0

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

я, кстати, повторил твой эксперимент — deadbeef запустился и работает без этих файлов, и через gtk2, и через gtk3.

могу видео записать если не веришь.

разницу с твоей системой можно объяснить отличиями в версии гтк и самого deadbeef.. вероятно где-то был такой баг, и его исправили. или, наоборот, добавили.

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

что, давай может попробуем теперь твою программу на питоне сломать? есть таковые же?

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

нашел какую-то хризопею на гитхабе. написана на питоне, ник совпадает.

скачал, поставил pyqt4..

и что мы видим?

waker@ubuntux:~/hrizopea$ ./main.py 
Traceback (most recent call last):
  File "./main.py", line 11, in <module>
    if len(sys.argv) == 1: win = X(pwd = sys.argv[1])
IndexError: list index out of range
waker ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.