LINUX.ORG.RU

Перенос ICU SQLite плагина из macOS в Linux продакшен

 , , , ,


0

2

Коллеги, нужен совет по подключению ICU плагина для SQLite в условиях ограниченного доступа.

Ситуация:

Есть TypeScript проект с Grist

Подключаю плагин через db.loadExtension(‘libsqliteicu.so’)

Нет доступа к рабочей Linux-машине в продакшене

Есть только git-репозиторий для деплоя

Не хочу настраивать Docker/CD-сборку для компиляции

Что сделал:

Сделал Форк проекта развернул у себя локально восстановил все версии SQL точно такие же как в production

На MacBook собрал libsqliteicu.so из исходников

Локально через Docker и yarn всё работает ✅

Вопросы:

Если я просто перенесу .so файл, собранный на macOS, в Linux-окружение - будет ли работать?

Или лучше скачать готовый собранный плагин для Linux из проверенного источника?

Какие есть риски несовместимости?

Может есть готовые .so файлы для Ubuntu 20.04/22.04?

Варианты которые рассматриваю:

✅ Просто залить мой macOS-собранный .so в репозиторий

✅ Скачать готовый libsqliteicu.so для Linux из интернета

❌ Не хочу настраивать сложную CI/CD сборку

Очень нужен опыт тех, кто уже делал подобное! Особенно с Grist.

Заранее спасибо за советы!



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

go

Причём здесь?

Если я просто перенесу .so файл, собранный на macOS, в Linux-окружение - будет ли работать?

Нет

Или лучше скачать готовый собранный плагин для Linux из проверенного источника? … Какие есть риски несовместимости?

Да, если такой источник есть. Несовместимости — разделяемые библиотеки.

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

Like будет 100%. Да уже как бы разобрался с icu и подготовил все для него не вариант брать что то другое, да и спринт кончается через 3 дня нужно успеть закончить и протестировать

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

да и спринт кончается через 3 дня нужно успеть

Ой как херово у вас всё. Если возникла новая задача, она либо откладывается на «потом», либо делается репланинг и она делается в этом спринте. Попытки сэкономить/закостылить новые задачи чтобы закрыть текущие это катастрофический факап в планировании и будущий факап на проде.

no-dashi-v2 ★★★
()
Ответ на: комментарий от no-dashi-v2

Если я просто перенесу .so файл, собранный на macOS, в Linux-окружение - будет ли работать?
да и спринт кончается через 3 дня нужно успеть

Ой как херово у вас всё
Если возникла новая задача

Скрам-мастер, ето ты? Я узнал тебя по твоим сообщениям на форуме…

[spoiler] У них всё херово не потому, что возникла новая задача, а потому что чел вообще не отдупляет, что творит. [/spoiler]

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

А что не так? Если бы я понимал что я творю не пришел бы на форум. Пришел попросил совет, да я не очень опытный в этой теме, дали мне эту задачу потому что все девопсы заняты. Мне сейчас просто хоть как то сделать, а с компеляцией через docker пусть занимается devops.

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

Скрам-мастер, ето ты? Я узнал тебя по твоим сообщениям на форуме

Теперь мне придется тебя убить!

Но вообще «создавать какую-то хрень» и «творить какую-то хрень» это вещи ортогональные. Тут принять решение что и как делать должен был тимлид или продакт, потому как если чел сотворит дичь то в нормальном процессе эта дичь просто не доедет до прода или доедет в сломанном виде, или приедет костылем. Первые два случая означают зафейленую таску (не доехало, не работает), третий означает что надо будет переделывать.

На месте ТС я бы сначала собрал локально, проверил что работает, пришел к тимлиду и сказал что надо сделать вот то и вот это, без этого оно не поедет, и потом, когда пререквизиты собраны и их сборка автоматизирована, вернулся к задаче.

no-dashi-v2 ★★★
()
Ответ на: комментарий от no-dashi-v2

Тут принять решение что и как делать должен был тимлид или продакт

Заорал в голосяндру белугой. Оба два вкинули таску в спринт со словами "сделайте как-нибудь, очень надо, друг просит клиент требует". Как оно там работает - всем насрать, пока от клиента тикет в поддержку не прилетит.

Аджайл на скраме и спринтами погоняет в самом образцовом виде.

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

Нашел готовые сборки сборки на https://github.com/nalgeon/sqlean скачал

Осторожно, очень старая версия Unicode:

#define SQLITE3_UNICODE_VERSION_MAJOR 5
#define SQLITE3_UNICODE_VERSION_MINOR 1
#define SQLITE3_UNICODE_VERSION_MICRO 0
#define SQLITE3_UNICODE_VERSION_BUILD 12

// Originally by Unknown Author, Public Domain
// https://github.com/Zensey/sqlite3_unicode

9 years ago

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

Вот пример удаления (Apr 28, 2021) этого модуля из FarManager:

  1. As it turned out, the sqlite unicode extension that we were using has a rather unorthodox notion of nocase collation. Quote: «automatically try to unaccent any characters that are over the 0x80 character», in other words it treats Ä, Á, Ą, Â, Ă as the same thing. Given that we only need nocase for case-insensitive, Windows-like file name lookup, this does more harm than good. The extension has been removed and nocase collation is now delegated to Windows.
dataman ★★★★★
()