Никто не желает порадовать школьников в преддверии нового года рабочим ebuild?
Лучшее – детям
Давайте попробую (не судите строго, в каких-то моментах проявил вольность):
# eix-sync && eix-update
...
База данных содержит 19130 пакетов в 172 категориях
* Вызов eix-diff
[N] >> dev-lang/pascalabcnet (~9999) [3]: PascalABC.NET is a Pascal programming language that implements classic Pascal, most Delphi language features, as well as a number of their own extensions
* Статистика времени:
...
# equery list -op dev-lang/pascalabcnet
* Searching for pascalabcnet in dev-lang ...
[--O] [ ~] dev-lang/pascalabcnet-3.9.0-r3390:0
[--O] [ ~] dev-lang/pascalabcnet-9999:0
# eix dev-lang/pascalabcne
* dev-lang/pascalabcnet [1]
Доступные версии: ~3.9.0-r3390^ms ~9999^ms {+chm gtk2}
Домашняя страница: http://pascalabc.net/
Описание: PascalABC.NET is a Pascal programming language that implements classic Pascal, most Delphi language features, as well as a number of their own extensions
[1] "custom" /var/calculate/repos/custom
# emerge -av dev-lang/pascalabcnet
Local copy of remote index is up-to-date and will be used.
Local copy of remote index is up-to-date and will be used.
These are the packages that would be merged, in order:
Calculating dependencies... done!
Dependency resolution took 10.40 s (backtrack: 0/20).
[binary N ] acct-group/geoclue-0-r2::gentoo 12 KiB
[binary N ] acct-user/geoclue-0-r2::gentoo 0 KiB
[binary N ] dev-libs/chmlib-0.40-r2::gentoo USE="examples -static-libs" 49 KiB
[binary N ] dev-libs/libzip-1.9.2:0/5::gentoo USE="bzip2 ssl zstd -gnutls -lzma -mbedtls -static-libs -test -tools" 246 KiB
[binary N ] dev-lang/mono-6.12.0.199-r2::gentoo USE="minimal nls -doc -pax-kernel (-selinux) -xen" ABI_X86="32 (64) (-x32)" 0 KiB
[binary NS ] dev-qt/qtwebchannel-5.15.14:5/5.15::gentoo [6.7.3:6/6.7.3::gentoo] USE="qml -debug% -test" 101 KiB
[binary N ] dev-qt/qtpositioning-5.15.14:5/5.15::gentoo USE="geoclue qml -debug -test" 337 KiB
[binary N ] app-misc/geoclue-2.7.2:2.0::gentoo USE="introspection -gtk-doc -modemmanager -vala -zeroconf" 206 KiB
[binary N ] dev-qt/qtwebengine-5.15.14_p20240510:5/5.15::gentoo USE="alsa geolocation jumbo-build pulseaudio screencast system-icu widgets -bindist -debug -designer -kerberos -test" 50901 KiB
[ebuild N ~] app-text/kchmviewer-8.0::gentoo 305 KiB
[ebuild N ~] dev-lang/pascalabcnet-9999::custom USE="chm -gtk2" 7883 KiB
Total: 11 packages (10 new, 1 in new slot, 9 binaries), Size of downloads: 60036 KiB
The following keyword changes are necessary to proceed:
(see "package.accept_keywords" in the portage(5) man page for more details)
# required by dev-lang/pascalabcnet (argument)
=dev-lang/pascalabcnet-9999 ~amd64
# required by dev-lang/pascalabcnet-9999::custom[chm]
# required by dev-lang/pascalabcnet (argument)
=app-text/kchmviewer-8.0 ~amd64
Would you like to add these changes to your config files? [Yes/No]
# cat /var/calculate/repos/custom/dev-lang/pascalabcnet/pascalabcnet-3.9.0-r3390.ebuild
Спойлер
# Copyright 2020-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit rpm
DESCRIPTION="PascalABC.NET is a Pascal programming language that implements classic Pascal, most Delphi language features, as well as a number of their own extensions"
HOMEPAGE="http://pascalabc.net/"
SRC_URI="amd64? ( http://mirror.rosalinux.ru/rosa/rosa2021.1/repository/x86_64/contrib/release/${P}-1.gitf309df.3-rosa2021.1.x86_64.rpm )"
LICENSE="LGPL-3.0"
SLOT="0"
KEYWORDS="~amd64"
RESTRICT="mirror strip"
IUSE="+chm gtk2"
RDEPEND="
chm? ( app-text/kchmviewer )
dev-dotnet/libgdiplus
dev-lang/mono
gtk2? ( media-libs/libcanberra[gtk2] )
gtk2? ( x11-misc/appmenu-gtk-module[gtk2] )
"
DEPEND="${RDEPEND}"
S="${WORKDIR}"
src_unpack() {
rpm_unpack ${P}-1.gitf309df.3-rosa2021.1.x86_64.rpm
}
src_install() {
cp -R "${WORKDIR}/usr" "${D}" || die "install failed!"
}
pkg_postinst() {
if !(use gtk2) ; then
elog "Если будет докучать ошибка-предупреждение об отсутствующей библиотеке 'appmenu-gtk-module' или 'canberra-gtk-module', то поступите следующим образом:"
elog ""
elog "Задайте USE-флаги командой: echo 'dev-lang/pascalabcnet gtk2' >> /etc/portage/package.use/custom && echo 'x11-misc/appmenu-gtk-module gtk2' >> /etc/portage/package.use/custom && echo 'media-libs/libcanberra gtk2' >> /etc/portage/package.use/custom"
elog ""
elog "и переустановите программу 'PascalABCNETLinux' следующей командой: emerge -av dev-lang/pascalabcnet"
elog ""
fi
}
# cat /var/calculate/repos/custom/dev-lang/pascalabcnet/pascalabcnet-9999.ebuild
Спойлер
# Copyright 2020-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit unpacker
DESCRIPTION="PascalABC.NET is a Pascal programming language that implements classic Pascal, most Delphi language features, as well as a number of their own extensions"
HOMEPAGE="http://pascalabc.net/"
SRC_URI="amd64? ( https://pascalabc.net/downloads/PascalABCNETLinux.zip )"
LICENSE="LGPL-3.0"
SLOT="0"
KEYWORDS="~amd64"
RESTRICT="mirror strip"
IUSE="+chm gtk2"
RDEPEND="
chm? ( app-text/kchmviewer )
dev-dotnet/libgdiplus
dev-lang/mono
gtk2? ( media-libs/libcanberra[gtk2] )
gtk2? ( x11-misc/appmenu-gtk-module[gtk2] )
"
DEPEND="${RDEPEND}"
S="${WORKDIR}"
src_install() {
local dst_path="opt"
###Извлечём файлы дистрибутива по пути:
insinto "${dst_path}"
doins -r "PascalABCNETLinux" || die "install failed!"
insinto "${dst_path}/PascalABCNETLinux"
doins -r "Samples" || die "install failed!"
###Создадим и наполним стартовый сценарий:
insinto "${dst_path}/PascalABCNETLinux"
newins - "PascalABCNETLinux.sh" <<_EOF
#!/bin/bash
export MONO_IOMAP=all
export MONO_HELP_VIEWER=kchmviewer
export MONO_REGISTRY_PATH="HOME_VAR/PABCWork.NET"
[ -d "MONO_VAR_REGISTRY_PATH" ] || mkdir -p "MONO_VAR_REGISTRY_PATH"
mono "/${dst_path}/PascalABCNETLinux/PascalABCNETLinux.exe"
_EOF
sed -i 's|HOME_VAR|\$HOME|g' "${D}/${dst_path}/PascalABCNETLinux/PascalABCNETLinux.sh"
sed -i 's|MONO_VAR|\$MONO|g' "${D}/${dst_path}/PascalABCNETLinux/PascalABCNETLinux.sh"
chmod 0755 "${D}/${dst_path}/PascalABCNETLinux/PascalABCNETLinux.sh"
###Создадим файл иконки и наполним его:
base64png="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"
insinto "${dst_path}/PascalABCNETLinux"
newins - "PascalABCNETLinux.png"
base64 -d <<<${base64png} > "${D}/${dst_path}/PascalABCNETLinux/PascalABCNETLinux.png"
insinto "usr/share/pixmaps"
doins "${D}/${dst_path}/PascalABCNETLinux/PascalABCNETLinux.png"
###Создадим и наполним .desktop-файл:
insinto "${dst_path}/PascalABCNETLinux"
newins - "PascalABCNETLinux.desktop" <<_EOF
[Desktop Entry]
Categories=Education;Development;
Comment[ru]=Система программирования PascalABC.NET
Comment=
Exec=/${dst_path}/PascalABCNETLinux/PascalABCNETLinux.sh %F
GenericName[ru_RU]=
GenericName=
Icon=/${dst_path}/PascalABCNETLinux/PascalABCNETLinux.png
MimeType=
Name[ru_RU]=PascalABC.NET for Linux
Name=PascalABC.NET for Linux
StartupNotify=true
Terminal=false
Type=Application
X-KDE-SubstituteUID=false
X-KDE-Username=
_EOF
insinto "usr/share/applications"
doins "${D}/${dst_path}/PascalABCNETLinux/PascalABCNETLinux.desktop"
}
pkg_postinst() {
if !(use gtk2) ; then
elog "Если будет докучать ошибка-предупреждение об отсутствующей библиотеке 'appmenu-gtk-module' или 'canberra-gtk-module', то поступите следующим образом:"
elog ""
elog "Задайте USE-флаги командой: echo 'dev-lang/pascalabcnet gtk2' >> /etc/portage/package.use/custom && echo 'x11-misc/appmenu-gtk-module gtk2' >> /etc/portage/package.use/custom && echo 'media-libs/libcanberra gtk2' >> /etc/portage/package.use/custom"
elog ""
elog "и переустановите программу 'PascalABCNETLinux' следующей командой: emerge -av dev-lang/pascalabcnet"
elog ""
fi
}
Куда уж без скринов, прикладываю один из: