/[gentoo-x86]/eclass/eutils.eclass
Gentoo

Diff of /eclass/eutils.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.143 Revision 1.170
1# Copyright 1999-2004 Gentoo Foundation 1# Copyright 1999-2005 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.143 2005/01/26 16:19:12 ka0ttic Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.170 2005/05/06 04:14:17 vapier Exp $
4# 4#
5# Author: Martin Schlemmer <azarah@gentoo.org> 5# Author: Martin Schlemmer <azarah@gentoo.org>
6# 6#
7# This eclass is for general purpose functions that most ebuilds 7# This eclass is for general purpose functions that most ebuilds
8# have to implement themselves. 8# have to implement themselves.
65gen_usr_ldscript() { 65gen_usr_ldscript() {
66 local libdir="$(get_libdir)" 66 local libdir="$(get_libdir)"
67 # Just make sure it exists 67 # Just make sure it exists
68 dodir /usr/${libdir} 68 dodir /usr/${libdir}
69 69
70 for lib in "${@}" ; do
70 cat > "${D}/usr/${libdir}/${1}" << END_LDSCRIPT 71 cat > "${D}/usr/${libdir}/${lib}" <<-END_LDSCRIPT
71/* GNU ld script 72 /* GNU ld script
72 Because Gentoo have critical dynamic libraries 73 Since Gentoo has critical dynamic libraries
73 in /lib, and the static versions in /usr/lib, we 74 in /lib, and the static versions in /usr/lib,
74 need to have a "fake" dynamic lib in /usr/lib, 75 we need to have a "fake" dynamic lib in /usr/lib,
75 otherwise we run into linking problems. 76 otherwise we run into linking problems.
76 See bug #4411 on http://bugs.gentoo.org/ for 77
77 more info. */ 78 See bug http://bugs.gentoo.org/4411 for more info.
79 */
78GROUP ( /${libdir}/${1} ) 80 GROUP ( /${libdir}/${lib} )
79END_LDSCRIPT 81 END_LDSCRIPT
80 fperms a+x "/usr/${libdir}/${1}" 82 fperms a+x "/usr/${libdir}/${lib}"
83 done
81} 84}
82 85
83# Simple function to draw a line consisting of '=' the same length as $* 86# Simple function to draw a line consisting of '=' the same length as $*
87# - only to be used by epatch()
84# 88#
85# <azarah@gentoo.org> (11 Nov 2002) 89# <azarah@gentoo.org> (11 Nov 2002)
86# 90#
87draw_line() { 91draw_line() {
88 local i=0 92 local i=0
114EPATCH_SOURCE="${WORKDIR}/patch" 118EPATCH_SOURCE="${WORKDIR}/patch"
115# Default extension for patches 119# Default extension for patches
116EPATCH_SUFFIX="patch.bz2" 120EPATCH_SUFFIX="patch.bz2"
117# Default options for patch 121# Default options for patch
118# Set -g0 to keep RCS, ClearCase, Perforce and SCCS happy. Bug #24571 122# Set -g0 to keep RCS, ClearCase, Perforce and SCCS happy. Bug #24571
119EPATCH_OPTS="-g0" 123# Set --no-backup-if-mismatch so we don't leave '.orig' files behind.
124EPATCH_OPTS="-g0 --no-backup-if-mismatch"
120# List of patches not to apply. Not this is only file names, 125# List of patches not to apply. Not this is only file names,
121# and not the full path .. 126# and not the full path ..
122EPATCH_EXCLUDE="" 127EPATCH_EXCLUDE=""
123# Change the printed message for a single patch. 128# Change the printed message for a single patch.
124EPATCH_SINGLE_MSG="" 129EPATCH_SINGLE_MSG=""
170 local x="" 175 local x=""
171 176
172 if [ "$#" -gt 1 ] 177 if [ "$#" -gt 1 ]
173 then 178 then
174 local m="" 179 local m=""
175 einfo "${#} patches to apply ..."
176 for m in "$@" ; do 180 for m in "$@" ; do
177 epatch "${m}" 181 epatch "${m}"
178 done 182 done
179 return 0 183 return 0
180 fi 184 fi
248 ([ "${SINGLE_PATCH}" = "yes" -o "${x/_all_}" != "${x}" -o "`eval echo \$\{x/_${ARCH}_\}`" != "${x}" ] || \ 252 ([ "${SINGLE_PATCH}" = "yes" -o "${x/_all_}" != "${x}" -o "`eval echo \$\{x/_${ARCH}_\}`" != "${x}" ] || \
249 [ "${EPATCH_FORCE}" = "yes" ]) 253 [ "${EPATCH_FORCE}" = "yes" ])
250 then 254 then
251 local count=0 255 local count=0
252 local popts="${EPATCH_OPTS}" 256 local popts="${EPATCH_OPTS}"
257 local patchname=${x##*/}
253 258
254 if [ -n "${EPATCH_EXCLUDE}" ] 259 if [ -n "${EPATCH_EXCLUDE}" ]
255 then 260 then
256 if [ "`eval echo \$\{EPATCH_EXCLUDE/${x##*/}\}`" != "${EPATCH_EXCLUDE}" ] 261 if [ "${EPATCH_EXCLUDE/${patchname}}" != "${EPATCH_EXCLUDE}" ]
257 then 262 then
258 continue 263 continue
259 fi 264 fi
260 fi 265 fi
261 266
263 then 268 then
264 if [ -n "${EPATCH_SINGLE_MSG}" ] 269 if [ -n "${EPATCH_SINGLE_MSG}" ]
265 then 270 then
266 einfo "${EPATCH_SINGLE_MSG}" 271 einfo "${EPATCH_SINGLE_MSG}"
267 else 272 else
268 einfo "Applying ${x##*/} ..." 273 einfo "Applying ${patchname} ..."
269 fi 274 fi
270 else 275 else
271 einfo " ${x##*/} ..." 276 einfo " ${patchname} ..."
272 fi 277 fi
273 278
274 echo "***** ${x##*/} *****" > ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 279 echo "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
275 echo >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 280 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
276 281
277 # Allow for prefix to differ ... im lazy, so shoot me :/ 282 # Allow for prefix to differ ... im lazy, so shoot me :/
278 while [ "${count}" -lt 5 ] 283 while [ "${count}" -lt 5 ]
279 do 284 do
280 # Generate some useful debug info ... 285 # Generate some useful debug info ...
281 draw_line "***** ${x##*/} *****" >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 286 draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
282 echo >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 287 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
283 288
284 if [ "${PATCH_SUFFIX}" != "patch" ] 289 if [ "${PATCH_SUFFIX}" != "patch" ]
285 then 290 then
286 echo -n "PIPE_COMMAND: " >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 291 echo -n "PIPE_COMMAND: " >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
287 echo "${PIPE_CMD} ${x} > ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 292 echo "${PIPE_CMD} ${x} > ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
288 else 293 else
289 PATCH_TARGET="${x}" 294 PATCH_TARGET="${x}"
290 fi 295 fi
291 296
292 echo -n "PATCH COMMAND: " >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 297 echo -n "PATCH COMMAND: " >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
293 echo "patch -p${count} ${popts} < ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 298 echo "patch -p${count} ${popts} < ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
294 299
295 echo >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 300 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
296 draw_line "***** ${x##*/} *****" >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 301 draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
297 302
298 if [ "${PATCH_SUFFIX}" != "patch" ] 303 if [ "${PATCH_SUFFIX}" != "patch" ]
299 then 304 then
300 if ! (${PIPE_CMD} ${x} > ${PATCH_TARGET}) >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 2>&1 305 if ! (${PIPE_CMD} ${x} > ${PATCH_TARGET}) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1
301 then 306 then
302 echo 307 echo
303 eerror "Could not extract patch!" 308 eerror "Could not extract patch!"
304 #die "Could not extract patch!" 309 #die "Could not extract patch!"
305 count=5 310 count=5
306 break 311 break
307 fi 312 fi
308 fi 313 fi
309 314
310 if (cat ${PATCH_TARGET} | patch -p${count} ${popts} --dry-run -f) >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 2>&1 315 if (cat ${PATCH_TARGET} | patch -p${count} ${popts} --dry-run -f) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1
311 then 316 then
312 draw_line "***** ${x##*/} *****" > ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/}.real 317 draw_line "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
313 echo >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/}.real 318 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
314 echo "ACTUALLY APPLYING ${x##*/} ..." >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/}.real 319 echo "ACTUALLY APPLYING ${patchname} ..." >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
315 echo >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/}.real 320 echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
316 draw_line "***** ${x##*/} *****" >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/}.real 321 draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
317 322
318 cat ${PATCH_TARGET} | patch -p${count} ${popts} >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/}.real 2>&1 323 cat ${PATCH_TARGET} | patch -p${count} ${popts} >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 2>&1
319 324
320 if [ "$?" -ne 0 ] 325 if [ "$?" -ne 0 ]
321 then 326 then
322 cat ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/}.real >> ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 327 cat ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
323 echo 328 echo
324 eerror "A dry-run of patch command succeeded, but actually" 329 eerror "A dry-run of patch command succeeded, but actually"
325 eerror "applying the patch failed!" 330 eerror "applying the patch failed!"
326 #die "Real world sux compared to the dreamworld!" 331 #die "Real world sux compared to the dreamworld!"
327 count=5 332 count=5
328 fi 333 fi
329 334
330 rm -f ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/}.real 335 rm -f ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real
331 336
332 break 337 break
333 fi 338 fi
334 339
335 count=$((count + 1)) 340 count=$((count + 1))
341 fi 346 fi
342 347
343 if [ "${count}" -eq 5 ] 348 if [ "${count}" -eq 5 ]
344 then 349 then
345 echo 350 echo
346 eerror "Failed Patch: ${x##*/}!" 351 eerror "Failed Patch: ${patchname} !"
352 eerror " ( ${PATCH_TARGET} )"
347 eerror 353 eerror
348 eerror "Include in your bugreport the contents of:" 354 eerror "Include in your bugreport the contents of:"
349 eerror 355 eerror
350 eerror " ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/}" 356 eerror " ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}"
351 echo 357 echo
352 die "Failed Patch: ${x##*/}!" 358 die "Failed Patch: ${patchname}!"
353 fi 359 fi
354 360
355 rm -f ${STDERR_TARGET%/*}/${x##*/}-${STDERR_TARGET##*/} 361 rm -f ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}
356 362
357 eend 0 363 eend 0
358 fi 364 fi
359 done 365 done
360 if [ "${SINGLE_PATCH}" = "no" ] 366 if [ "${SINGLE_PATCH}" = "no" ]
864# name: the name that will show up in the menu 870# name: the name that will show up in the menu
865# icon: give your little like a pretty little icon ... 871# icon: give your little like a pretty little icon ...
866# this can be relative (to /usr/share/pixmaps) or 872# this can be relative (to /usr/share/pixmaps) or
867# a full path to an icon 873# a full path to an icon
868# type: what kind of application is this ? for categories: 874# type: what kind of application is this ? for categories:
869# http://www.freedesktop.org/standards/menu-spec/ 875# http://www.freedesktop.org/wiki/Standards_2fmenu_2dspec
870# path: if your app needs to startup in a specific dir 876# path: if your app needs to startup in a specific dir
871make_desktop_entry() { 877make_desktop_entry() {
872 [ -z "$1" ] && eerror "make_desktop_entry: You must specify the executable" && return 1 878 [[ -z $1 ]] && eerror "make_desktop_entry: You must specify the executable" && return 1
873 879
874 local exec="${1}" 880 local exec=${1}
875 local name="${2:-${PN}}" 881 local name=${2:-${PN}}
876 local icon="${3:-${PN}.png}" 882 local icon=${3:-${PN}.png}
877 local type="${4}" 883 local type=${4}
878 local subdir="${6}" 884 local path=${5}
879 local path="${5:-${GAMES_BINDIR}}" 885
880 if [ -z "${type}" ] 886 if [[ -z ${type} ]] ; then
881 then 887 local catmaj=${CATEGORY%%-*}
882 case ${CATEGORY} in 888 local catmin=${CATEGORY##*-}
883 "app-emulation") 889 case ${catmaj} in
884 type=Emulator 890 app)
885 subdir="Emulation" 891 case ${catmin} in
892 admin) type=System;;
893 cdr) type=DiscBurning;;
894 dicts) type=Dictionary;;
895 editors) type=TextEditor;;
896 emacs) type=TextEditor;;
897 emulation) type=Emulator;;
898 laptop) type=HardwareSettings;;
899 office) type=Office;;
900 vim) type=TextEditor;;
901 xemacs) type=TextEditor;;
902 *) type=;;
903 esac
886 ;; 904 ;;
887 "games-"*) 905
888 type=Game 906 dev)
889 subdir="Games" 907 type="Development"
890 ;; 908 ;;
891 "net-"*) 909
892 type=Network 910 games)
893 subdir="${type}" 911 [[ -z ${path} ]] && path=${GAMES_BINDIR}
912
913 case ${catmin} in
914 action) type=ActionGame;;
915 arcade) type=ArcadeGame;;
916 board) type=BoardGame;;
917 kid) type=KidsGame;;
918 emulation) type=Emulator;;
919 puzzle) type=LogicGame;;
920 rpg) type=RolePlaying;;
921 roguelike) type=RolePlaying;;
922 simulation) type=Simulation;;
923 sports) type=SportsGame;;
924 strategy) type=StrategyGame;;
925 *) type=;;
926 esac
927 type="Game;${type}"
894 ;; 928 ;;
929
930 mail)
931 type="Network;Email"
932 ;;
933
934 media)
935 case ${catmin} in
936 gfx) type=Graphics;;
937 radio) type=Tuner;;
938 sound) type=Audio;;
939 tv) type=TV;;
940 video) type=Video;;
941 *) type=;;
942 esac
943 type="AudioVideo;${type}"
944 ;;
945
946 net)
947 case ${catmin} in
948 dialup) type=Dialup;;
949 ftp) type=FileTransfer;;
950 im) type=InstantMessaging;;
951 irc) type=IRCClient;;
952 mail) type=Email;;
953 news) type=News;;
954 nntp) type=News;;
955 p2p) type=FileTransfer;;
956 *) type=;;
957 esac
958 type="Network;${type}"
959 ;;
960
961 sci)
962 case ${catmin} in
963 astro*) type=Astronomoy;;
964 bio*) type=Biology;;
965 calc*) type=Calculator;;
966 chem*) type=Chemistry;;
967 geo*) type=Geology;;
968 math*) type=Math;;
969 *) type=;;
970 esac
971 type="Science;${type}"
972 ;;
973
974 www)
975 case ${catmin} in
976 client) type=WebBrowser;;
977 *) type=;;
978 esac
979 type="Network"
980 ;;
981
895 *) 982 *)
896 type= 983 type=
897 subdir=
898 ;; 984 ;;
899 esac 985 esac
900 fi 986 fi
987
901 local desktop="${T}/${exec}.desktop" 988 local desktop=${T}/${exec%% *}-${P}.desktop
902 989
903echo "[Desktop Entry] 990echo "[Desktop Entry]
904Encoding=UTF-8 991Encoding=UTF-8
905Version=0.9.2 992Version=0.9.2
906Name=${name} 993Name=${name}
922# make_desktop_entry(<title>, <command>) 1009# make_desktop_entry(<title>, <command>)
923# title: File to execute to start the Window Manager 1010# title: File to execute to start the Window Manager
924# command: Name of the Window Manager 1011# command: Name of the Window Manager
925 1012
926make_session_desktop() { 1013make_session_desktop() {
927
928 [ -z "$1" ] && eerror "make_session_desktop: You must specify the title" && return 1 1014 [[ -z $1 ]] && eerror "make_session_desktop: You must specify the title" && return 1
929 [ -z "$2" ] && eerror "make_session_desktop: You must specify the command" && return 1 1015 [[ -z $2 ]] && eerror "make_session_desktop: You must specify the command" && return 1
930 1016
931 local title="${1}" 1017 local title=$1
932 local command="${2}" 1018 local command=$2
933 local desktop="${T}/${wm}.desktop" 1019 local desktop=${T}/${wm}.desktop
934 1020
935echo "[Desktop Entry] 1021echo "[Desktop Entry]
936Encoding=UTF-8 1022Encoding=UTF-8
937Name=${title} 1023Name=${title}
938Comment=This session logs you into ${title} 1024Comment=This session logs you into ${title}
940TryExec=${command} 1026TryExec=${command}
941Type=Application" > "${desktop}" 1027Type=Application" > "${desktop}"
942 1028
943 insinto /usr/share/xsessions 1029 insinto /usr/share/xsessions
944 doins "${desktop}" 1030 doins "${desktop}"
945
946 return 0
947} 1031}
948 1032
949domenu() { 1033domenu() {
950 local i 1034 local i j
951 local j
952 insinto /usr/share/applications 1035 insinto /usr/share/applications
953 for i in ${@} 1036 for i in "$@" ; do
954 do
955 if [ -f "${i}" ]; 1037 if [[ -f ${i} ]] ; then
956 then
957 doins ${i} 1038 doins "${i}"
958 elif [ -d "${i}" ]; 1039 elif [[ -d ${i} ]] ; then
959 then
960 for j in ${i}/*.desktop 1040 for j in "${i}"/*.desktop ; do
961 do
962 doins ${j} 1041 doins "${j}"
963 done 1042 done
964 fi 1043 fi
965 done 1044 done
966} 1045}
1046newmenu() {
1047 insinto /usr/share/applications
1048 newins "$1" "$2"
1049}
967 1050
968doicon() { 1051doicon() {
969 local i 1052 local i j
970 local j
971 insinto /usr/share/pixmaps 1053 insinto /usr/share/pixmaps
972 for i in ${@} 1054 for i in "$@" ; do
973 do
974 if [ -f "${i}" ]; 1055 if [[ -f ${i} ]] ; then
975 then
976 doins ${i} 1056 doins "${i}"
977 elif [ -d "${i}" ]; 1057 elif [[ -d ${i} ]] ; then
978 then
979 for j in ${i}/*.png 1058 for j in "${i}"/*.png ; do
980 do
981 doins ${j} 1059 doins "${j}"
982 done 1060 done
983 fi 1061 fi
984 done 1062 done
1063}
1064newicon() {
1065 insinto /usr/share/pixmaps
1066 newins "$1" "$2"
985} 1067}
986 1068
987############################################################## 1069##############################################################
988# END: Handle .desktop files and menu entries # 1070# END: Handle .desktop files and menu entries #
989############################################################## 1071##############################################################
1390 local mline="" 1472 local mline=""
1391 local showedmsg=0 1473 local showedmsg=0
1392 1474
1393 for mline in $(mount | egrep -e '(iso|cdrom)' | awk '{print $3}') ; do 1475 for mline in $(mount | egrep -e '(iso|cdrom)' | awk '{print $3}') ; do
1394 [[ -d ${mline}/${dir} ]] || continue 1476 [[ -d ${mline}/${dir} ]] || continue
1395 [[ ! -z $(find ${mline}/${dir} -iname ${file} -maxdepth 1) ]] \ 1477 [[ ! -z $(find ${mline}/${dir} -maxdepth 1 -iname ${file}) ]] \
1396 && export CDROM_ROOT=${mline} 1478 && export CDROM_ROOT=${mline}
1397 done 1479 done
1398 1480
1399 if [[ -z ${CDROM_ROOT} ]] ; then 1481 if [[ -z ${CDROM_ROOT} ]] ; then
1400 echo 1482 echo
1434# directories and uses the intersection of the lists. 1516# directories and uses the intersection of the lists.
1435# The -u builds a list of po files found in all the 1517# The -u builds a list of po files found in all the
1436# directories and uses the union of the lists. 1518# directories and uses the union of the lists.
1437strip-linguas() { 1519strip-linguas() {
1438 local ls newls 1520 local ls newls
1439 if [ "$1" == "-i" ] || [ "$1" == "-u" ] ; then 1521 if [[ $1 == "-i" ]] || [[ $1 == "-u" ]] ; then
1440 local op="$1"; shift 1522 local op=$1; shift
1441 ls=" $(find "$1" -name '*.po' -printf '%f ') "; shift 1523 ls=" $(find "$1" -name '*.po' -printf '%f ') "; shift
1442 local d f 1524 local d f
1443 for d in "$@" ; do 1525 for d in "$@" ; do
1444 if [ "${op}" == "-u" ] ; then 1526 if [[ ${op} == "-u" ]] ; then
1445 newls="${ls}" 1527 newls=${ls}
1446 else 1528 else
1447 newls="" 1529 newls=""
1448 fi 1530 fi
1449 for f in $(find "$d" -name '*.po' -printf '%f ') ; do 1531 for f in $(find "$d" -name '*.po' -printf '%f ') ; do
1450 if [ "${op}" == "-i" ] ; then 1532 if [[ ${op} == "-i" ]] ; then
1451 [ "${ls/ ${f} /}" != "${ls}" ] && newls="${newls} ${f}" 1533 [[ ${ls/ ${f} /} != ${ls} ]] && newls="${newls} ${f}"
1452 else 1534 else
1453 [ "${ls/ ${f} /}" == "${ls}" ] && newls="${newls} ${f}" 1535 [[ ${ls/ ${f} /} == ${ls} ]] && newls="${newls} ${f}"
1454 fi 1536 fi
1455 done 1537 done
1456 ls="${newls}" 1538 ls=${newls}
1457 done 1539 done
1458 ls="${ls//.po}" 1540 ls=${ls//.po}
1459 else 1541 else
1460 ls="$@" 1542 ls=$@
1461 fi 1543 fi
1462 1544
1463 ls=" ${ls} " 1545 ls=" ${ls} "
1464 newls="" 1546 newls=""
1465 for f in ${LINGUAS} ; do 1547 for f in ${LINGUAS} ; do
1466 if [ "${ls/ ${f} /}" != "${ls}" ] ; then 1548 if [[ ${ls/ ${f} /} != ${ls} ]] ; then
1467 newls="${newls} ${f}" 1549 newls="${newls} ${f}"
1468 else 1550 else
1469 ewarn "Sorry, but ${PN} does not support the ${f} LINGUA" 1551 ewarn "Sorry, but ${PN} does not support the ${f} LINGUA"
1470 fi 1552 fi
1471 done 1553 done
1472 if [ -z "${newls}" ] ; then 1554 if [[ -z ${newls} ]] ; then
1473 unset LINGUAS 1555 export LINGUAS=""
1474 else 1556 else
1475 export LINGUAS="${newls}" 1557 export LINGUAS=${newls:1}
1476 fi 1558 fi
1477} 1559}
1478 1560
1479# moved from kernel.eclass since they are generally useful outside of 1561# moved from kernel.eclass since they are generally useful outside of
1480# kernel.eclass -iggy (20041002) 1562# kernel.eclass -iggy (20041002)
1602 patch -p0 "${f}" "${PORTDIR}/eclass/ELT-patches/nocxx/nocxx.patch" > /dev/null 1684 patch -p0 "${f}" "${PORTDIR}/eclass/ELT-patches/nocxx/nocxx.patch" > /dev/null
1603 done 1685 done
1604 eend 0 1686 eend 0
1605} 1687}
1606 1688
1607# dopamd [ file ] [ new file ] 1689# dopamd <file> [more files]
1608# 1690#
1609# Install pam auth config file in /etc/pam.d 1691# Install pam auth config file in /etc/pam.d
1610#
1611# The first argument, 'file' is required. Install as 'new file', if
1612# specified.
1613
1614dopamd() { 1692dopamd() {
1615 local pamd="$1" newpamd="${2:-$1}"
1616 [[ -z "$1" ]] && die "dopamd requires at least one argument." 1693 [[ -z $1 ]] && die "dopamd requires at least one argument"
1617 1694
1618 use pam || return 0 1695 use pam || return 0
1619 1696
1620 insinto /etc/pam.d 1697 insinto /etc/pam.d
1621 # these are the default doins options, but be explicit just in case 1698 doins "$@" || die "failed to install $@"
1622 insopts -m 0644 -o root -g root
1623 newins ${pamd} ${newpamd} || die "failed to install ${newpamd}"
1624} 1699}
1700# newpamd <old name> <new name>
1701#
1702# Install pam file <old name> as <new name> in /etc/pam.d
1703newpamd() {
1704 [[ $# -ne 2 ]] && die "newpamd requires two arguements"
1705
1706 use pam || return 0
1707
1708 insinto /etc/pam.d
1709 newins "$1" "$2" || die "failed to install $1 as $2"
1710}
1711
1712# make a wrapper script ...
1713# NOTE: this was originally games_make_wrapper, but I noticed other places where
1714# this could be used, so I have moved it here and made it not games-specific
1715# -- wolf31o2
1716# $1 == wrapper name
1717# $2 == binary to run
1718# $3 == directory to chdir before running binary
1719# $4 == extra LD_LIBRARY_PATH's (make it : delimited)
1720# $5 == path for wrapper
1721make_wrapper() {
1722 local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5
1723 local tmpwrapper=$(emktemp)
1724 cat << EOF > "${tmpwrapper}"
1725#!/bin/sh
1726cd "${chdir}"
1727export LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}:${libdir}"
1728exec ${bin} "\$@"
1729EOF
1730 chmod go+rx "${tmpwrapper}"
1731 if [ -n "${5}" ]
1732 then
1733 exeinto ${5}
1734 newexe "${tmpwrapper}" "${wrapper}"
1735 else
1736 newbin "${tmpwrapper}" "${wrapper}"
1737 fi
1738}

Legend:
Removed from v.1.143  
changed lines
  Added in v.1.170

  ViewVC Help
Powered by ViewVC 1.1.20