Created attachment 14086 [details] Ключ SSH Имя пользователя: Lenka Почта: lenadea199900@gmail.com Ментор: Евгений Синельников Хочу заниматься usability программ. Уже немного знакома с ADMC есть четкие представления по оптимизации формирования иконок программы.
Created attachment 14087 [details] Ключ GPG
Мейнтернество подтверждаю.
(In reply to Lenka from comment #1) > Created attachment 14087 [details] > Ключ GPG Ok. (In reply to Lenka from comment #0) > Created attachment 14086 [details] > Ключ SSH Ok. Ментор есть, ключи в порядке. T/J/S -> 1.3.
Подготовила пакет с темой для ADMC: https://github.com/LenkaDEA/admc_icons
Предлагаю двигаться дальше. Минимальный пакет с темой иконок ожидаю я.
Актуальная версия пакета с темами: https://github.com/LenkaDEA/admc_icons/tree/themes
ssh ключ на gitery.alt зарегистрирован. Адрес для пересылки создан. T/J/S -> 2.3.
Минимально сборка пакетов освоена, ждем исправления в .gear/rules упаковки исходников по тегу и формирование патча. После этого можно переходить к следующему этапу.
Поскольку пакет был переделан, предлагаю обновить photoflare для следующего шага: https://repology.org/project/photoflare/versions
Обновила пакет до последней версии 1.6.13-alt1: http://git.altlinux.org/people/lenka/packages/photoflare.git Есть ли замечания? Нет доступа к сборочнице, поэтому не могу создать таску.
Пакеты собираются, давайте переходить к освоению сборочницы и тестированию пакетов из тестовых сборочных задач.
ssh ключ на gyle.alt зарегистрирован. Пакет alt-gpgkeys обновлён. Адрес подписан на devel@. T/J/S -> 3.6.
Создала задание на сборочнице для пакета photoflare: https://packages.altlinux.org/ru/tasks/339458/ Сейчас в состоянии EPERM.
Опакетила новую программу: https://packages.altlinux.org/ru/tasks/340169/
(Ответ для Lenka на комментарий #13) > Создала задание на сборочнице для пакета photoflare: > https://packages.altlinux.org/ru/tasks/339458/ > Сейчас в состоянии EPERM. Предлагаю для общего развития добавить в сборку следующие исправления: 1) отдельным коммитом апстримный источник для упрощения сопровождения: https://www.altlinux.org/Gear/remotes Пример: $ gear-remotes-set-from-url https://github.com/PhotoFlare/photoflare now run gear-remotes-restore $ git status On branch master Your branch is up to date with 'origin/master'. Changes to be committed: (use "git restore --staged <file>..." to unstage) new file: .gear/upstream/remotes $ gear-remotes-restore $ git remote -v origin git://git.altlinux.org/tasks/339458/gears/100/git (fetch) origin git://git.altlinux.org/tasks/339458/gears/100/git (push) upstream https://github.com/PhotoFlare/photoflare (fetch) upstream https://github.com/PhotoFlare/photoflare (push) 2) добавить в .gear/rules exclude для каталога .gear при автоматической генерации патча к апстримным исходникам: https://bugzilla.altlinux.org/39804 Думаю, что такого варианта будет достаточно: [sin@base .gear]$ git diff . | cat diff --git a/.gear/rules b/.gear/rules index 55f0585..c9b435f 100644 --- a/.gear/rules +++ b/.gear/rules @@ -1,3 +1,3 @@ spec: .gear/photoflare.spec tar: v@version@:. -diff: v@version@:. . name=@name@-@version@-alt.patch +diff: v@version@:. . name=@name@-@version@-alt.patch exclude=.gear/** 3) почистить код в соответствии с логикой сопровождения. - После объединения с апстримными исходниками остались куски от предыдущих коммитов, которые я вносил для исправления работы: $ git diff v1.6.13 -- src/ | cat diff --git a/src/widgets/PaintWidget.cpp b/src/widgets/PaintWidget.cpp index 198ed7b..7f6860a 100644 --- a/src/widgets/PaintWidget.cpp +++ b/src/widgets/PaintWidget.cpp @@ -25,7 +25,6 @@ #include <QGraphicsScene> #include <QGraphicsSceneMouseEvent> #include <QGraphicsProxyWidget> -#include <QGraphicsEffect> #include <QImageReader> #include "../Settings.h" - в оригинальном виде исправление состояло в том, что я откатил один из апстримных коммитов: commit a3ac8be2857d96aed6d4d00e949ab37f2fec01d2 Author: Evgeny Sinelnikov <sin@altlinux.org> Date: Mon Feb 14 05:07:05 2022 +0400 Revert "Fixes #269 - Canvas shadow to separate from mdiarea bg" This reverts commit e664f48d616fa37ad4fab3c453aa958bee277c28. diff --git a/src/widgets/PaintWidget.cpp b/src/widgets/PaintWidget.cpp index 90e3ade..8b0236f 100644 --- a/src/widgets/PaintWidget.cpp +++ b/src/widgets/PaintWidget.cpp @@ -25,7 +25,6 @@ #include <QGraphicsScene> #include <QGraphicsSceneMouseEvent> #include <QGraphicsProxyWidget> -#include <QGraphicsEffect> #include <QImageReader> #include "../Settings.h" @@ -57,12 +56,7 @@ public: this->image = image; q->setSceneRect(image.rect()); canvas = addPixmap(QPixmap::fromImage(image)); - q->setStyleSheet("background-color: rgb(160, 160, 160);"); - - // Canvas drop shadow to separate from MdiArea colour - QGraphicsDropShadowEffect* effect = new QGraphicsDropShadowEffect(); - effect->setBlurRadius(15); - canvas->setGraphicsEffect(effect); + q->setStyleSheet("background-color: rgb(128, 128, 128);"); } void updateImageCanvas() - Насколько я понимаю, при обновлении до последней версии 1.6.13, откаченный коммит был почти восстановлен. "Почти", потому что удаление строки #include <QGraphicsEffect> не восстановили. - соответственно, нужно решить. Возвращаем этот коммит или нет? Зачем я его откатывал нужно ещё вспомнить. 4) уточнить статус работоспособности этого пакета в Сизифе и бранчах. Это чудное приложение в нашей сборке ведёт себя нестабильно - склонно падать при использовании инструментов - Яркость, Насыщенность, Гамма (и это только то, что я с ходу обнаружил): Как в текущей версии 1.6.9: [sin@base photflare]$ photoflare QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() kf.windowsystem: Loaded plugin "/usr/lib64/qt5/plugins/kf5/kwindowsystem/KF5WindowSystemX11Plugin.so" for platform "xcb" QMetaObject::connectSlotsByName: Connecting slot on_comboBoxLanguage_currentIndexChanged() with the first of the following compatible signals: ("currentIndexChanged(int)", "currentIndexChanged(QString)") [sin@base photflare]$ QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() kf.windowsystem: Loaded plugin "/usr/lib64/qt5/plugins/kf5/kwindowsystem/KF5WindowSystemX11Plugin.so" for platform "xcb" Magick: abort due to signal 11 (SIGSEGV) "Segmentation Fault"... [sin@base photflare]$ photoflare QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() kf.windowsystem: Loaded plugin "/usr/lib64/qt5/plugins/kf5/kwindowsystem/KF5WindowSystemX11Plugin.so" for platform "xcb" Magick: abort due to signal 11 (SIGSEGV) "Segmentation Fault"... Аварийный останов [sin@base photflare]$ photoflare QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() kf.windowsystem: Loaded plugin "/usr/lib64/qt5/plugins/kf5/kwindowsystem/KF5WindowSystemX11Plugin.so" for platform "xcb" kf.imageformats.plugins.xcf: XCF: read called on non-XCF file kf.imageformats.plugins.xcf: XCF: read called on non-XCF file kf.imageformats.plugins.xcf: XCF: read called on non-XCF file Magick: abort due to signal 11 (SIGSEGV) "Segmentation Fault"... Аварийный останов так и для новой 1.6.13: [sin@base photflare]$ photoflare QMetaObject::connectSlotsByName: No matching signal for on_actionStroke_Rect_triggered() QObject::connect: No such signal QSpinBox::changed() QObject::connect: (sender name: 'strokeWidth') QObject::connect: (receiver name: 'PointerSettingsWidget') QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() kf.windowsystem: Loaded plugin "/usr/lib64/qt5/plugins/kf5/kwindowsystem/KF5WindowSystemX11Plugin.so" for platform "xcb" Magick: abort due to signal 11 (SIGSEGV) "Segmentation Fault"... Аварийный останов [sin@base photflare]$ photoflare QMetaObject::connectSlotsByName: No matching signal for on_actionStroke_Rect_triggered() QObject::connect: No such signal QSpinBox::changed() QObject::connect: (sender name: 'strokeWidth') QObject::connect: (receiver name: 'PointerSettingsWidget') QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() kf.windowsystem: Loaded plugin "/usr/lib64/qt5/plugins/kf5/kwindowsystem/KF5WindowSystemX11Plugin.so" for platform "xcb" Magick: abort due to signal 11 (SIGSEGV) "Segmentation Fault"... Аварийный останов [sin@base photflare]$ photoflare QMetaObject::connectSlotsByName: No matching signal for on_actionStroke_Rect_triggered() QObject::connect: No such signal QSpinBox::changed() QObject::connect: (sender name: 'strokeWidth') QObject::connect: (receiver name: 'PointerSettingsWidget') QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() QDockWidgetLayout::addItem(): please use QDockWidgetLayout::setWidget() Magick: abort due to signal 11 (SIGSEGV) "Segmentation Fault"... Аварийный останов Таким образом это "отличное" приложение с достаточно отзывчивым апстримом, у которого множество недоработок. То ли связанных с наших окружением, то ли с тем, как это приложение написано вообще. К его доработке можно привлекать начинающих разработчиков для повышения квалификации. В любом случае, это приложение выглядит на текущий момент достаточно проблемным для работы в окружении сизифа (в окружении p10 я его пока не проверял). Возможно, данное приложение даёт возможность обнаружить и более общие недоработки в окружении сизифа. ____________________ Итого, обновление данного пакета, безусловно, имеет смысл и будет полезно. Но завершенность работы над пакетом, наверное, заключается в том, чтобы принять участие в его доработке. Или, по крайней мере, об этом стоит где-то сообщить. Например в devel-newbies@, примерно в такой форме: - я обновила такой-то пакет - ссылка; - при обновлении обнаружены такие-то проблемы - перечисление (возможно, в виде ссылок на нашу багзиллу, а лучше на трекер апстрима); - предлагаю заинтересованным поучаствовать в их исправлении. Ну, это если пакет, действительно вам интересен. ____________________ 5) Ещё один момент, который я пытался решить и вижу, что решение не работает - это выбор русского языка по умочанию, в зависимости от текущей локали. Сейчас, при запуске приложения, русский язык не выбран. Но его можно задать в настройках явно. Одна из проблем, которая была однаружена состоит в том, что в приложении достаточно странно релизована логика поиска файлов локализации (довольно некорретно, по отношению к стандартному расположению в дистрибутивах GNU/Linux). Предположу, что эти особенности связаны с поддержкой portable-сборок, а также поддержку windows в целом, где все файлы программы вываливаются в каталог приложения в Program Files. Возможно, я на завершил данную задачу, а только подготовил некоторые исправления в домашнем кругу, надеясь что вернусь к этому потом. В результате один патч у нас был принят, но проблему полностью он не решает: commit 33deae5c825c108137f8472d6462e8828651d931 Author: Helen Sinelnikova <helen@darkmastersin.net> Date: Sun Oct 4 23:39:38 2020 +0400 Fix check of translation file diff --git a/src/main.cpp b/src/main.cpp index d5bf7de..0f56727 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -114,14 +114,14 @@ int main(int argc, char *argv[]) app.installTranslator(&translator); QStringList paths = QStandardPaths::standardLocations(QStandardPaths::DataLocation); + paths.prepend("."); //for local builds testing for(int i = 0;i < paths.length(); i++) { - //QFileInfo check_file(paths[i]+"/languages/"+SETTINGS->getUserLanguage()+".qm"); //for installers - QFileInfo check_file("languages/"+SETTINGS->getUserLanguage()+".qm"); //local builds + QFileInfo check_file(paths[i]+"/languages/"+SETTINGS->getUserLanguage()+".qm"); if(check_file.exists() && check_file.isFile()) { - //translator.load(SETTINGS->getUserLanguage()+".qm", paths[i]+"/languages/"); //for installers - translator.load(SETTINGS->getUserLanguage()+".qm", "languages/"); //local builds + translator.load(SETTINGS->getUserLanguage()+".qm", paths[i]+"/languages/"); + break; } } MainWindow w; ____________________ Предлагаю закрыть, для начала, из перечисленных выше пунктов 1, 2 и 3. По поводу пунктов 4 и 5 предлагаю сравнить текущую и новую сборки на p10 и на сизифе на предмет наличия регрессий. Далее собрать обновление до 1.6.13 и, в зависимости от анализа регрессий и обнаруженных ошибок, "развесить" сообщения об этих ошибках "и" (как минимум, "или") призвать заинтересованных заняться этими задачами в учебном формате в рассылке devel-newbies@.
(Ответ для Lenka на комментарий #14) > Опакетила новую программу: https://packages.altlinux.org/ru/tasks/340169/ В этой сборке сделаны "лишние", взаимоисключающие шаги: Вот так выглядят правила gear: tar: @version@:. spec: .gear/clipboard.spec diff: @version@:. . exclude=.gear/** copy?:.gear/*.patch Возникает вопрос. А зачем было добавлено правило diff, если патч в итоге кладётся файлом? Зачем генерировать патч, если он далее нигде не используется? Наверное, он тогда просто не нужен? И наоборот, если патч генерируется, зачем тогда его хранить файлом и прикладывать отдельно, когда можно приложить прямо в исходники? У обоих вариантов сопровождения есть свои плюсы и минусы. Но стоит определиться - какой схемы сборки придерживаться в данном случае.
(Ответ для Evgeny Sinelnikov на комментарий #15) > Предлагаю закрыть, для начала, из перечисленных выше пунктов 1, 2 и 3. Спасибо за развернутый ответ, замечания и рекомендации по сборке. Обновила пакет согласно Вашим рекомендациям: https://packages.altlinux.org/ru/tasks/339458/ Насчет третьего пункта "почистить код в соответствии с логикой сопровождения": Проверив багу, убедилась, что она также присутствует. Поэтому приняла решение оставить наш комит: https://git.altlinux.org/gears/p/photoflare.git?p=photoflare.git;a=commit;h=a3ac8be2857d96aed6d4d00e949ab37f2fec01d2
(Ответ для Evgeny Sinelnikov на комментарий #16) > (Ответ для Lenka на комментарий #14) > > Опакетила новую программу: https://packages.altlinux.org/ru/tasks/340169/ > > В этой сборке сделаны "лишние", взаимоисключающие шаги Определилась со схемой сборки и убрала взаимоисключающие шаги. Теперь gear/rules выглядит следующим образом: $ cat .gear/rules tar: @version@:. spec: .gear/clipboard.spec copy?:.gear/*.patch Таска: https://packages.altlinux.org/ru/tasks/340169/
В ходе обсуждения получила ряд замечаний/рекомендаций касательно пакета clipboard Результатом было исправление следующих вещей в spec-файле: 1. Группа была изменена на более подходящую. 2. Убраны Provides. 3. Изменены названия подпакетов. Таска: https://packages.altlinux.org/en/tasks/340169/
Посмотрел, собрал, установил, одобрил для отправки в сизиф. Нужно перезапустить сборочную задачу с --commit. Следующим шагом предлагаю погрузиться в проблему с accountsservice. Это очень важный для нас технологический стек далее связанный с возможностями развития продуктов. Текущая проблема: https://bugzilla.altlinux.org/47499 По сути, я вижу две задачи: - починить проблему автологина для локальных пользователей; - разобраться с архитектурной связкой accountsservice/lightdm/gdm с целью решения проблемы - что нам требуется для обеспечения кеширования доменных пользователей при логине? Сейчас приходится вот так
(Ответ для Evgeny Sinelnikov на комментарий #20) ... > Сейчас приходится вот так вручную решать проблему отсутствия кеширования доменных пользователей: $ busctl call org.freedesktop.Accounts /org/freedesktop/Accounts org.freedesktop.Accounts CacheUser "s" "sin" o "/org/freedesktop/Accounts/User758801104" Ещё одна примыкающая задача - задание пароля для пользователей. Для доменных пользователей она и не может работать, там и проверка на "локальность" не выполняется: $ busctl call org.freedesktop.Accounts /org/freedesktop/Accounts/User758801104 org.freedesktop.Accounts.User SetPassword "ss" "Qw12345678" "Qw" Call failed: running '/usr/sbin/chpasswd' failed: Дочерний процесс завершился с кодом 1