LINUX.ORG.RU

Новая жизнь TheirBirthday

 


1

1

С тех пор я каждый день пользуюсь этим великолепным творением и вспоминаю его замечательных создателей tiinn и hobbit с благодарностью :=)

И все было хорошо до тех пор, пока мне не пришлось перехать с Intel на ARM64, т.е. на aarch64.
И тут начались проблемы, потому что в основных репозитариях Arch и AUR этого напоминателя пока не нашлось.

В этом посте greenman выложил PKBUILD, который, если правильно понимаю, нужен для компиляции TheirBirthday под Arch.
Только я в ней не разбираюсь, и может, кто-то поможет портировать TheirBirthday в новую среду?

★★★★★
Ответ на: удаленный комментарий

Отставить панику, из темы ясно, что собрать пакет не сложно

В Arch Linux пакеты собираются утилитой makepkg. При запуске makepkg находит в рабочем каталоге файл PKGBUILD и выполняет содержащиеся в нём указания по получению необходимых файлов, их компиляции и сборке архива пакета

Массив названий архитектур, под которые пакет может быть собран по данному PKGBUILD. Arch официально поддерживает только x86_64, но существуют сторонние проекты для других архитектур. Например, Arch Linux 32 работает с i686 и pentium4, а Arch Linux ARM предоставляет поддержку для arm (armv5), armv6h (armv6 hardfloat), armv7h (armv7 hardfloat) и aarch64 (armv8 64-bit).

В параметре используются два типа значений:
- arch=('any') — пакет соберётся на любой архитектуре и в откомпилированном состоянии будет архитектурно-независимым (пакеты со сценариями оболочки, шрифтами, темами, многими типами расширений и т.п.).
- arch=('x86_64') — пакет соберётся только на указанной(-ых) архитектуре(-ах). После компиляции пакет становится архитектурно-зависимым. В параметре указываются все архитектуры, для которых будет работать данный PKGBUILD. Для пакетов из официальных репозиториев и AUR в параметре arch указывается значение x86_64, хотя пакеты из AUR могут также поддерживать дополнительные архитектуры.

Прописываете arch=('any') и makepkg в каталоге с файлом PKGBUILD

П.С. собирать на приставке, чтобы под эту же архитектуру и собрало

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

Наконец-то разумный ответ, без бодяги :=)

Но только я делал несколько по другому.
Например, для сборки Сильфиды:

1. Прописывал arch=('aarch64')

2. Выполнял команды:

sudo pacman -Syu base-devel git micro
git clone https://aur.archlinux.org/sylpheed.git
cd sylpheed
makepkg -Asrcif
Для Сильфиды и некоторых других приложений срабатывало, для других - нет.
Я не знаю, в чем дело, и тем более не понимаю, зачем ключи -Asrcif
Я старый чукча, мне эти тонкости не положено знать :-)
Мне сказали: «Делай так!» - и я делаю.

А вы, знатоки, все это знаете, и могли бы давно подсказать.

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

Я могу ошибаться, но что-то any мне кажется не очень хорошей идеей. Подозреваю, что это для скриптоты, которой совсем уж всё равно, где работать (типа как noarch для RPM). Хотя да, найти архитектуру, на которую не портированы C++11 и Qt5, надо постараться.

(А! Вот и @wandrien про то же самое. Это хорошо, значит, это не моя паранойя… :) )

Я вот заглянул в man PKGBUILD (да-да, в Манжаре, которую некоторые так не любят, он тоже есть) и прочитал:

  arch (array)
           Defines on which architectures the given package is available (e.g., arch=('i686' 'x86_64')). Packages that contain no architecture specific files should use arch=('any'). Valid characters for members of this array are
           alphanumerics and “_”.

Таки через пробел (это ответ на вопрос ТСа).

После этого я взял PKGBUILD, который построил @greenman, и поправил там 7-ю строчку:

arch=('x86_64' 'aarch64')

Дальше начал возмущённо верещать pkgver(), но тут я сам сообразил, что это виноват mcedit, который при копипастинге разбил длинные строки (в том числе git describe ...). Поправил.

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

…Но это всё было на x86_64. Проверить, как сработает на aarch64, предоставляю ТСу. Я проверю только когда руки дойдут малинку развернуть, и это точно не сегодня.

@chukcha, работает?

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

Я могу ошибаться, но что-то any мне кажется не очень хорошей идеей.

Вообще, логично, что идея так себе в общем случае, но здесь 'any', чтобы у ТС'а точно проект собрался и не застопорился из-за неправильной архитектуры или просто опечатки

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

@chukcha, работает?

Да, Михаил aka hobbit, сработало :=)

Заодно приведу пример, как надо давать советы в качестве хавту, чтобы без лишних вопросов их понял любой юзер:

1. Создал юзерский каталог -

	/TheirBirthday
2. Положил в него PKGBUILD от нашего "Зеленого Человека" :=)

3. Поменял в нем -
	arch=('x86_64')
на
	arch=('aarch64')
4. Выполнил команду -
	makepkg -Asrcif
Сборка прошла успешно, кроме одного места -
..............
mainwindow.cpp: В функции-члене «int MainWindow::getDayOfWeekOfMonth(int)»:
mainwindow.cpp:1154:1: предупреждение: управление достигает конца не-void функции [-Wreturn-type]
 1154 | }
      | ^
...............
Не в курсе, что оно значит.

5. Удалил юзерский каталог -
	/TheirBirthday

Все, теперь превосходный TheirBithday работает даже на TV-приставке! :-)

PS. Если бы такой совет знатоки выдали сразу, то обсуждение закончилось бы, едва начавшись, а не растянулось на 2 страницы.

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

PS. Если бы такой совет знатоки выдали сразу, то обсуждение закончилось бы, едва начавшись, а не растянулось на 2 страницы.

@hobbit, у тебя там кнопка бана не мигает призывно, не манит нажать ее. :)

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

Если бы такой совет знатоки выдали сразу, то обсуждение закончилось бы, едва начавшись, а не растянулось на 2 страницы.

Так ты больше таких тупых вопросов и не задавай, ты либо ИИ, или твой аккаунт школьник украл.

PS
Хотя да, деменция вещь жесткая, но я тебе не верю.

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

PS. Если бы такой совет знатоки выдали сразу, то обсуждение закончилось бы, едва начавшись, а не растянулось на 2 страницы.

Форум всё-таки для плодотворного обмена опытом. А не для одностороннего разжёвывания 100 раз одного и того же. Такое «хавту» можно написать про ПОЧТИ ЛЮБОЙ проект с гитхаба. Not Your Personal Army.

Заодно приведу пример, как надо давать советы в качестве хавту, чтобы без лишних вопросов их понял любой юзер:

А я в качестве ответа дам ссылку на документ, поясняющий, почему так не делают: Эрик Стивен Реймонд, Как правильно задавать вопросы. Да, с современных позиций автор несколько перегибает палку, однако понять его позицию — полезно.

  1. Поменял в нем

А если обе архитектуры указать через пробел, как я предлагал выше — не работает? Так всё-таки корректнее, и не надо править PKGBUILD каждый раз под новую сборку.

кроме одного места

Вот за это спасибо.

@tiinn, у тебя там MainWindow::getDayOfWeekOfMonth() хулиганит. Умозрительно там управление до этого места не должно доходить, но всё-таки стоит ввалить в конце какой-нибудь return -1 на такой случай. И может, даже проверять его в вызывающем коде.

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

А если обе архитектуры указать через пробел, как я предлагал выше — не работает? Так всё-таки корректнее, и не надо править PKGBUILD каждый раз под новую сборку.

Да, Михаил я обратил внимание на это ваше предложение.
Но подумал, что если оставить 2 архитектуры, то и компиляция будет происходить на обе, т.е. будет больше кода и занимаемого места.
Может это и не так, но на всякий случай по-другому не делал.

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

Эрик Стивен Реймонд, Как правильно задавать вопросы.

В 2023 к списку шести первоначальных действий добавился бы седьмой пункт - «Спросите ChatGPT». Правда этот ‘ИИ’ еще глупенький, не дорос до момента, когда и пальцы будет за нас загибать. 🙂

p.s. Кстати, хороший текст для понимания ментальности западного специалиста. А то у нас на ЛОРе частенько, «вот русские форумы такие-сякие, а вот на забугорных вас и оближут и на руках поносят, и слюнки вытрут…».

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

@tiinn, у тебя там MainWindow::getDayOfWeekOfMonth() хулиганит.
Умозрительно там управление до этого места не должно доходить, но всё-таки стоит ввалить в конце какой-нибудь return -1 на такой случай.
И может, даже проверять его в вызывающем коде.

Можно надеятся, что будет правка PKGBUID?
И тогда TheirBiirthday можно будет положить в AUR?

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

Можно надеятся, что будет правка PKGBUID?

PKGBUILD

pkgname='theirbirthday-git'

Т.е. просто пересобрать, оно с github все изменения подтянет (при наличии интернета, конечно же).

(А в AUR без тех изменений, что я упоминал, theirbirthday будет пакетом типа такого)

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

Проверил опцию -A.

Сделал так:

$ grep arch PKGBUILD
arch=('')

теперь:

$ makepkg
==> ОШИБКА: Пакета 'theirbirthday-git' нет для архитектуры 'x86_64'.

А вот так собирается:

$ makepkg -A

(Выше было проверено, в общем-то)

и несколько архитектур через пробел будут работать. Немало таких пакетов в AUR.

Вот пример

https://aur.archlinux.org/packages/yay

arch=('i686' 'pentium4' 'x86_64' 'arm' 'armv7h' 'armv6h' 'aarch64' 'riscv64')
greenman ★★★★★
()
Последнее исправление: greenman (всего исправлений: 3)
Ответ на: комментарий от greenman

и несколько архитектур через пробел будут работать

makepkg будет пытаться собрать пакет, если более строго. А соберётся ли до конца, и будет ли работать приложение — надо проверять. Поэтому сопровождающие, как правило, не пишут в строке arch не проверенных кем-либо (в комментариях к пакету, например) архитектур.

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

Но подумал, что если оставить 2 архитектуры, то и компиляция будет происходить на обе

Думаю, нет. Я выше цитировал:

Defines on which architectures the given package is available

Ну и для того, чтобы «компилировать на обе» надо хотя бы иметь установленный кросс-компилятор на «чужую». :) То бишь в данном контексте, при сборке на самой приставке — иметь на ARM кросс-компилятор под x86_64. Честно говоря, я не уверен, что такое (не наоборот!) вообще в природе существует. :)

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

Это я подчеркнул, что это -git пакет, и он не требует (пока что-то сильно не поменялось) изменения PKGBUILD-а при изменениях на github-е.

Надо сделать makepkg -Asrcif с тем же самым PKGBUILD-ом, и будет установлена самая свежая версия.

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

А как же это?

@tiinn, у тебя там MainWindow::getDayOfWeekOfMonth() хулиганит. Умозрительно там управление до этого места не должно доходить, но всё-таки стоит ввалить в конце какой-нибудь return -1 на такой случай. И может, даже проверять его в вызывающем коде.

@tiinn пообещал, что на досуге посмотрит.

Хотелось бы исправления всех недочетов, чтобы потом спокойно выложить на AUR, а то иноземцы скептически отнеслись к нашему TheirBirthday, утверждая, что ним никто не пользуется.

Кстати - как на ЛОРе организовать опрос по TheirBirthday?
Поиском нашел много сообщений, что он вроде существует и ним пользуются, но вот где он и как пользоваться, не нашел.

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

А как же это?

А что это? Это, конечно, не очень приятное место, но к исходному вопросу отношения не имеет. Собралось, работает.

Хотелось бы исправления всех недочетов, чтобы потом спокойно выложить на AUR

Ну программ без ошибок не бывает. Если только у Дональда Кнута. :) А по поводу AUR человек, который им здесь лучше всех владеет, высказался — файлы с датами только на русском языке, если выкладывать в таком виде, то для иностранцев получится что-то типа как для нас китайский репозиторий, на который он дал ссылку.

Я, кстати, не уверен, что это плохо. Китайца, наверное, всё устраивает, раз он репу держит в таком виде. Но если мы всё-таки хотим, чтобы программа…

Получила бы распротранение не только в ЛОРе, но и в мире :=)

…с этим надо что-то делать. Например, сделать аналогичный файл с англоязычными датами. Кто вот только будет подсовывать программе файл на нужном языке — пользователь ли после установки, или сама программа при первом запуске спросит, если это ещё не было настроено…

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

…с этим надо что-то делать. Например, сделать аналогичный файл с англоязычными датами. Кто вот только будет подсовывать программе файл на нужном языке — пользователь ли после установки, или сама программа при первом запуске спросит, если это ещё не было настроено…

Но это же значит, что программу надо опять дорабатывать, не?

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

Но это же значит, что программу надо опять дорабатывать, не?

Нет

Это значит, что ты в край обнаглел. По хорошему счету ты должен тем, кто тебе помогал, предложить 10-15 часов по минимальному рейту предложить, если тебе что-то надо. Хватит пользоваться людьми

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

Вот этот serg002 и нижеподписавшиеся не знают историю создания этого чудесного TheirBirthday, поэтому не полняли мой вопрос, зато упав на хвост темы, с нахрапу загадили тему своими глупыми предположениями.
Ну как тот слон в посудной лавке. Вандалы, что с таких взять.
Спасибо, что авторы и другие форумчане в курсе происходящего.

Лично мне от программы уже ничего не нужно, она отлично работает и в ARM.
Просто хотелось каким-то образом отблагодарить авторов (которые в самом начале вежливо отказались взять с меня деньги) отрекламировав их творение, поместив его для этого в AUR.

PS. Впрочем, извините за сравнение со слоном, это животное куда более разумное, чем эти форумные вандалы.

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