Всем привет!
Понравился KDE4 плазмоид eyasdp, который ставит кнопки выключения/перезагрузки/..., дабы лишний раз в меню не тянуться. Сделал под него .ebuild для Gentoo. Выкладываю дабы:
- может кому-то виджет приглянется
- может кто-то почерпнет что-то по ebuild'о-писанию (тут, кстати, cmake используется)
- кто найдет ошибки/замечания - маякуйте, буду признателен
Всем, кому не терпится сказать «не нужно», просьба проходить мимо.
/usr/local/portage/kde-misc/plasma-eyasdp/plasma-eyasdp-1.1.0.ebuild
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
EAPI=5
KDE_MINIMAL="4.7.0"
QT_MINIMAL="4.7.0"
inherit cmake-utils kde4-base
DESCRIPTION="KDE4 plasmoid. eYaSDP allows to set a number of system buttons in your panel or desktop for comfortable and quick access."
HOMEPAGE="http://kde-look.org/content/show.php/eYaSDP?content=146530"
SRC_URI="http://kde-look.org/CONTENT/content-files/146530-eyasdp-1.1.0.tar.bz2"
#S="${WORKDIR}/eyasdp-1.1.0"
S="${WORKDIR}/${P#plasma-}"
#MY_P="${P#plasma-}"
LICENSE="GPL"
SLOT="0"
KEYWORDS="~x86 ~amd64"
IUSE=""
DEPEND="
$(add_kdebase_dep plasma-workspace)
dev-util/automoc
dev-lang/perl
"
RDEPEND="$(add_kdebase_dep plasma-workspace)"
Предполагается, что в make.conf есть PORTDIR_OVERLAY=«/usr/local/portage/»
Еще: скрипт, для определения минимального списка библиотек, от которых напрямую зависит определенный запускаемый файл/библиотека. Скрипт исключает непрямые зависимости; например, если plasma_applet_eyasdp.so зависит от libkworkspace.so.4 и libplasma.so.3, а libkworkspace.so.4 также зависит от libplasma.so.3, то libplasma.so.3 будет исключен из списка, так как предполагается, что при «подключении» libkworkspace.so.4 автоматически «подключится» и libplasma.so.3.
#!/bin/sh
# List minimum dependensies
Help()
{
echo "List minimum dependencies of a dynamic executable"
echo
echo "Usage: $0 <executable file or library>"
}
ListDependencies()
{
ldd "$1" 2>/dev/null | while read L1 A L2 OTHER ; do
if [[ "${L1:0:1}" == "/" ]] ; then
echo "$L1"
else
[[ -n "$L2" ]] && echo "$L2"
fi
done
}
if [[ $# != 1 ]]; then
Help
exit 1
fi
ldd "$1" >/dev/null 2>/dev/null
if [[ $? != 0 ]]; then
echo "Incorrect input file; shall be executable binary (ELF, .so etc)"
exit 2
fi
F_DIRECT=`mktemp`
F_INDIRECT=`mktemp`
F_TMP=`mktemp`
F_TMP2=`mktemp`
F=""
ListDependencies "$1" | sort | uniq > "$F_DIRECT"
cat /dev/null > "$F_INDIRECT"
F="$F_DIRECT"
#echo -n "Working"
while true ; do
cp "$F_INDIRECT" "$F_TMP"
cat "$F" | while read L ; do
ListDependencies "$L"
done >> "$F_TMP"
cat "$F_TMP" | sort | uniq > "$F_TMP2"
SIZE_INDIRECT=`ls -l "$F_INDIRECT" | awk '{print $5;}'`
SIZE_TMP=`ls -l "$F_TMP2" | awk '{print $5;}'`
[[ "$SIZE_INDIRECT" == "$SIZE_TMP" ]] && break
mv "$F_TMP2" "$F_INDIRECT"
F="$F_INDIRECT"
# echo -n "."
done
rm "$F_TMP"
rm "$F_TMP2"
#echo
cat "$F_DIRECT" | while read L ; do
L2=`cat "$F_INDIRECT" | grep "^$L$"`
[[ -z "$L2" ]] && echo "$L"
done
rm "$F_DIRECT"
rm "$F_INDIRECT"
Hope this helps