CPPLASTIC Telegram 307
Добре, попередній допис я ще вчора написав. Але вдень у мене відпустка, тож пофіксив я все вночі 😅

Проблема №1: ручний запуск #Conan відрізнявся від запуску зсередини #Qbs. Для останнього є приблизно такий код:
const p = new Process()
p.start(executable, args)

Тут args — це список рядків. І у мене там були рядки виду '-s:a compiler=msvc', '-s:a compiler.cppstd=20' тощо. Прикол у тому, що, схоже, Qbs їх додатково бере у лапки, і це неправильно парситься саме на деяких компах з віндою 🤯 Пофіксив, замінивши кожен з сеттінгів на ['-s:a', 'compiler=msvc'], а потім зробивши .flat(). Важко сказати, як я до цього прийшов — чисто чуйка.

Проблема №2: ручний запуск qbs build з тими самими параметрами, що на CI, видавав інший результат. Виявилося, що… 🥁 параметри були не тими самими. Я помилився в одному символі, коли вказував архітектуру 🤡, а Qbs нічого проти не має. Хочете x64_86 — легко! Хочете x86_65 — будь ласка! Яке ж дно 🤦🏻‍♂️ Але принаймні на тому самому компі зібралося успішно.

Проблема №3: білд на CI все одно не працював. Тут було вкрай важко збагнути, що не так. Допомогла тільки тулза PsExec від SysInternals, бо на вінді немає простого вбудованого способу запустити щось від імені іншого користувача. Коли вже отримав термінал під NETWORK SERVICES, то виявилося, що… conan.exe просто відсутній 😂 І Qbs на це навіть ексепшн не кинув. Типу: «немає бінаря, що я маю запускати? та й хуй з ним, поїхали далі!»

Як так трапилося? Раніше у мене стояв Conan 1.x, який я встановив через Chocolatey. Ну й, власне, він бінарь кудись до себе кидав у C:\ProgramData\chocolatey\bin\, який є у Path. Але я зробив апгрейд до Conan 2.x (власне, у цьому й полягала задача). І виявляється, що для другої версії Chocolatey просто качає інстолер, котрий раніше не існував, і запускає його. А останній ставиться у C:\Program Files\Conan\conan\ та додає цей шлях в Path тільки для поточного користувача 🤦🏻‍♂️ Короч, додав у системний — і все полетіло.

І шо я думаю… Збирання C++ — це, звісно, доволі важка задача, бо є купа нюансів, є легасі рішення тощо. Але це все не виправдовує погані #тулзи. Чи можна на C++ писати хороший тулінг? Та звісно! Але таке враження, що більшість плюсистів просто не знає, що це таке, бо не має досвіду з іншими адекватнішими мовами з нормальною інфраструктурою. Тобто звикли постійно страждати, і вже важко цього позбутися, чи шо? Нє, ну серйозно…
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5😱1



tgoop.com/cpplastic/307
Create:
Last Update:

Добре, попередній допис я ще вчора написав. Але вдень у мене відпустка, тож пофіксив я все вночі 😅

Проблема №1: ручний запуск #Conan відрізнявся від запуску зсередини #Qbs. Для останнього є приблизно такий код:

const p = new Process()
p.start(executable, args)

Тут args — це список рядків. І у мене там були рядки виду '-s:a compiler=msvc', '-s:a compiler.cppstd=20' тощо. Прикол у тому, що, схоже, Qbs їх додатково бере у лапки, і це неправильно парситься саме на деяких компах з віндою 🤯 Пофіксив, замінивши кожен з сеттінгів на ['-s:a', 'compiler=msvc'], а потім зробивши .flat(). Важко сказати, як я до цього прийшов — чисто чуйка.

Проблема №2: ручний запуск qbs build з тими самими параметрами, що на CI, видавав інший результат. Виявилося, що… 🥁 параметри були не тими самими. Я помилився в одному символі, коли вказував архітектуру 🤡, а Qbs нічого проти не має. Хочете x64_86 — легко! Хочете x86_65 — будь ласка! Яке ж дно 🤦🏻‍♂️ Але принаймні на тому самому компі зібралося успішно.

Проблема №3: білд на CI все одно не працював. Тут було вкрай важко збагнути, що не так. Допомогла тільки тулза PsExec від SysInternals, бо на вінді немає простого вбудованого способу запустити щось від імені іншого користувача. Коли вже отримав термінал під NETWORK SERVICES, то виявилося, що… conan.exe просто відсутній 😂 І Qbs на це навіть ексепшн не кинув. Типу: «немає бінаря, що я маю запускати? та й хуй з ним, поїхали далі!»

Як так трапилося? Раніше у мене стояв Conan 1.x, який я встановив через Chocolatey. Ну й, власне, він бінарь кудись до себе кидав у C:\ProgramData\chocolatey\bin\, який є у Path. Але я зробив апгрейд до Conan 2.x (власне, у цьому й полягала задача). І виявляється, що для другої версії Chocolatey просто качає інстолер, котрий раніше не існував, і запускає його. А останній ставиться у C:\Program Files\Conan\conan\ та додає цей шлях в Path тільки для поточного користувача 🤦🏻‍♂️ Короч, додав у системний — і все полетіло.

І шо я думаю… Збирання C++ — це, звісно, доволі важка задача, бо є купа нюансів, є легасі рішення тощо. Але це все не виправдовує погані #тулзи. Чи можна на C++ писати хороший тулінг? Та звісно! Але таке враження, що більшість плюсистів просто не знає, що це таке, бо не має досвіду з іншими адекватнішими мовами з нормальною інфраструктурою. Тобто звикли постійно страждати, і вже важко цього позбутися, чи шо? Нє, ну серйозно…

BY Cіпласпластик




Share with your friend now:
tgoop.com/cpplastic/307

View MORE
Open in Telegram


Telegram News

Date: |

Unlimited number of subscribers per channel On June 7, Perekopsky met with Brazilian President Jair Bolsonaro, an avid user of the platform. According to the firm's VP, the main subject of the meeting was "freedom of expression." How to Create a Private or Public Channel on Telegram? But a Telegram statement also said: "Any requests related to political censorship or limiting human rights such as the rights to free speech or assembly are not and will not be considered." The best encrypted messaging apps
from us


Telegram Cіпласпластик
FROM American