Я вже неодноразово згадував, що моя найулюбленіша система збирання проєктів — це #Qbs. Базується цей вибір на двох суперобʼєктивних причинах авжеж: 1) на хибному першому враженні, що за мову там використовують #QML (90% збігається, але насправді це не вона, від чого реально палає нерідко), та 2) на тому, що не можу терпіти #CMake 😁
В кьюбсі в найпростішому вигляді достатньо викликати
Тож я пішов та зробив свій перший внесок в Qbs аж на пʼять рядків коду, який це виправляє😂 Довелось заради цього навіть gerrit налаштувати собі з його ґітовими гуками.
Сьогодні вмержив🥳 🍾
В кьюбсі в найпростішому вигляді достатньо викликати
qbs build
або навіть qbs run
, й він все сам зробить. Втім інколи треба додати пару якихось ключів в команд-лайн, які я безумовно не памʼятаю. Що в таких випадках люди роблять першочергово? Правильно, пишуть qbs build --help
. Але це суперечить концепції(!) головного розробника, тому наразі результат отакий:ERROR: Invalid use of command 'build': Unknown option '--help'.Концептуальність — це завжди офігезно авжеж, але не тоді, коли це щодня наламує мені UX. Так, я не можу спеціально для цієї тулзи тримати в памʼяті, що треба писати
Type 'qbs help build' to see how to use this command.
qbs help build
замість qbs build --help
, бо в нормальних прогах це тотожні виклики. Тож я пішов та зробив свій перший внесок в Qbs аж на пʼять рядків коду, який це виправляє
Сьогодні вмержив
Please open Telegram to view this post
VIEW IN TELEGRAM
Я й досі використовую #Qbs як білд-систему. Не тому, що він прям суперкрутий, а тому, що #CMake я не можу терпіти ще більше. На додачу ми в пет-проєкті використовуємо #Conan, щоб ставити деякі залежності типу того ж spdlog.
Ізі-пізі все, на маку потестив — працює збс. На вінді друган потестив — теж працює. А на віндовому CI, бляха, ні!
Перша проблема: для конана треба, щоб профіль існував. І я начебто навіть всі необхідні дані й так через команд-лайн передаю, але чогось скаржиться все одно. Найпростіший спосіб створити — це викликати:
Втім не все так просто. Наш self-hosted ранер для GitHub Actions працює як сервіс від імені
Та не збирається все одно, собака! І найболячіше те, що з одним і тим самим команд-лайном воно видає різні помилки залежно від того, чи я запускаю це сам руками від свого імені, чи це робить ранер.
Схема така, що за задумом треба використовувати Conan як точку входу, а той своєю чергою вже викликає Qbs. Але мене це дратувало, тож я написав так звану Probe для Qbs, яка перед всіма іншими діями викликає Conan, а вже потім продовжує свою роботу. І навіть тут якась чортівня: результати виклику
З самим Conan до речі окрема історія теж. У нього налаштування залежать від платформи. Наприклад, на macOS треба передавати
Яке ж лайно!💩 …в якому мені доведеться порпатися далі.
Ізі-пізі все, на маку потестив — працює збс. На вінді друган потестив — теж працює. А на віндовому CI, бляха, ні!
Перша проблема: для конана треба, щоб профіль існував. І я начебто навіть всі необхідні дані й так через команд-лайн передаю, але чогось скаржиться все одно. Найпростіший спосіб створити — це викликати:
conan profile detect
Втім не все так просто. Наш self-hosted ранер для GitHub Actions працює як сервіс від імені
NETWORK SERVICES
, щоб після ребуту він одразу запускався, а не чекав, доки користувач залогіниться. Тож я не можу просто зайти на віндову тачку та викликати цю команду. Ну ок, додав та прибрав степ, який це один раз робить. З цим порішали.Та не збирається все одно, собака! І найболячіше те, що з одним і тим самим команд-лайном воно видає різні помилки залежно від того, чи я запускаю це сам руками від свого імені, чи це робить ранер.
Схема така, що за задумом треба використовувати Conan як точку входу, а той своєю чергою вже викликає Qbs. Але мене це дратувало, тож я написав так звану Probe для Qbs, яка перед всіма іншими діями викликає Conan, а вже потім продовжує свою роботу. І навіть тут якась чортівня: результати виклику
conan install
з однаковими параметрами й всім однаковим під тим самим користувачем(!) відрізняються, коли я запускаю це через Qbs або коли вручну. Тобто у мене вже є щонайменше три різні помилки, і я тупо не бачу жодного звʼязку між ними. Наче сліпий навпомацки, намагаюся щось правити й «дивлюся» на результат.З самим Conan до речі окрема історія теж. У нього налаштування залежать від платформи. Наприклад, на macOS треба передавати
os.version
, а на Windows версію не можна вказувати. Тобто воно його не ігнорує, а прям каже: «Ти шо, не передавай мені це!» — і падає з помилкою.Яке ж лайно!
Please open Telegram to view this post
VIEW IN TELEGRAM