| 1 | # Copyright 1999-2003 Gentoo Technologies, Inc. |
1 | # Copyright 1999-2003 Gentoo Technologies, Inc. |
| 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.60 2003/09/23 01:26:58 vapier Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.68 2003/11/26 20:15:10 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. |
| … | |
… | |
| 529 | fi |
529 | fi |
| 530 | einfo " - Userid: ${euid}" |
530 | einfo " - Userid: ${euid}" |
| 531 | |
531 | |
| 532 | # handle shell |
532 | # handle shell |
| 533 | local eshell="$1"; shift |
533 | local eshell="$1"; shift |
| 534 | if [ ! -z "${eshell}" ] |
534 | if [ ! -z "${eshell}" ] && [ "${eshell}" != "-1" ] |
| 535 | then |
535 | then |
| 536 | if [ ! -e "${eshell}" ] |
536 | if [ ! -e "${eshell}" ] |
| 537 | then |
537 | then |
| 538 | eerror "A shell was specified but it does not exist !" |
538 | eerror "A shell was specified but it does not exist !" |
| 539 | die "${eshell} does not exist" |
539 | die "${eshell} does not exist" |
| … | |
… | |
| 544 | einfo " - Shell: ${eshell}" |
544 | einfo " - Shell: ${eshell}" |
| 545 | opts="${opts} -s ${eshell}" |
545 | opts="${opts} -s ${eshell}" |
| 546 | |
546 | |
| 547 | # handle homedir |
547 | # handle homedir |
| 548 | local ehome="$1"; shift |
548 | local ehome="$1"; shift |
| 549 | if [ -z "${ehome}" ] |
549 | if [ -z "${ehome}" ] && [ "${eshell}" != "-1" ] |
| 550 | then |
550 | then |
| 551 | ehome="/dev/null" |
551 | ehome="/dev/null" |
| 552 | fi |
552 | fi |
| 553 | einfo " - Home: ${ehome}" |
553 | einfo " - Home: ${ehome}" |
| 554 | opts="${opts} -d ${ehome}" |
554 | opts="${opts} -d ${ehome}" |
| … | |
… | |
| 665 | # Simple script to replace 'dos2unix' binaries |
665 | # Simple script to replace 'dos2unix' binaries |
| 666 | # vapier@gentoo.org |
666 | # vapier@gentoo.org |
| 667 | # |
667 | # |
| 668 | # edos2unix(file, <more files>...) |
668 | # edos2unix(file, <more files>...) |
| 669 | edos2unix() { |
669 | edos2unix() { |
| 670 | for f in $@ |
670 | for f in "$@" |
| 671 | do |
671 | do |
| 672 | cp ${f} ${T}/edos2unix |
672 | cp "${f}" ${T}/edos2unix |
| 673 | sed 's/\r$//' ${T}/edos2unix > ${f} |
673 | sed 's/\r$//' ${T}/edos2unix > "${f}" |
| 674 | done |
674 | done |
| 675 | } |
675 | } |
| 676 | |
676 | |
| 677 | # Make a desktop file ! |
677 | # Make a desktop file ! |
| 678 | # Great for making those icons in kde/gnome startmenu ! |
678 | # Great for making those icons in kde/gnome startmenu ! |
| … | |
… | |
| 705 | "app-emulation") |
705 | "app-emulation") |
| 706 | type=Emulator |
706 | type=Emulator |
| 707 | ;; |
707 | ;; |
| 708 | "games-"*) |
708 | "games-"*) |
| 709 | type=Game |
709 | type=Game |
|
|
710 | ;; |
|
|
711 | "net-"*) |
|
|
712 | type=Network; |
| 710 | ;; |
713 | ;; |
| 711 | *) |
714 | *) |
| 712 | type= |
715 | type= |
| 713 | ;; |
716 | ;; |
| 714 | esac |
717 | esac |
| … | |
… | |
| 959 | ;; |
962 | ;; |
| 960 | esac |
963 | esac |
| 961 | debug-print "Detected Makeself version ${ver} ... using ${skip} as offset" |
964 | debug-print "Detected Makeself version ${ver} ... using ${skip} as offset" |
| 962 | fi |
965 | fi |
| 963 | |
966 | |
| 964 | # we do this because otherwise a failure in gzip will cause 0 bytes to be sent |
967 | # lets grab the first few bytes of the file to figure out what kind of archive it is |
| 965 | # to tar which will make tar not extract anything and exit with 0 |
968 | local tmpfile="`mymktemp ${T}`" |
| 966 | tail -n +${skip} ${src} | gzip -cd | tar -x --no-same-owner -f - 2>/dev/null |
969 | tail -n +${skip} ${src} 2>/dev/null | head -c 512 > ${tmpfile} |
| 967 | local pipestatus="${PIPESTATUS[*]}" |
970 | local filetype="`file -b ${tmpfile}`" |
| 968 | pipestatus="${pipestatus// }" |
971 | case ${filetype} in |
| 969 | if [ "${pipestatus//0}" != "" ] |
972 | *tar\ archive) |
| 970 | then |
|
|
| 971 | # maybe it isnt gzipped ... they usually are, but not always ... |
|
|
| 972 | tail -n +${skip} ${src} | tar -x --no-same-owner -f - \ |
973 | tail -n +${skip} ${src} | tar -xf - |
|
|
974 | ;; |
|
|
975 | bzip2*) |
|
|
976 | tail -n +${skip} ${src} | bzip2 -dc | tar -xf - |
|
|
977 | gzip*) |
|
|
978 | tail -n +${skip} ${src} | tar -xzf - |
|
|
979 | ;; |
|
|
980 | *) |
|
|
981 | false |
|
|
982 | ;; |
|
|
983 | esac |
| 973 | || die "failure unpacking makeself ${shrtsrc} ('${ver}' +${skip})" |
984 | assert "failure unpacking (${filetype}) makeself ${shrtsrc} ('${ver}' +${skip})" |
| 974 | fi |
|
|
| 975 | } |
985 | } |
| 976 | |
986 | |
| 977 | # Display a license for user to accept. |
987 | # Display a license for user to accept. |
| 978 | # |
988 | # |
| 979 | # Usage: check_license [license] |
989 | # Usage: check_license [license] |
| … | |
… | |
| 990 | elif [ -e "${src}" ] ; then |
1000 | elif [ -e "${src}" ] ; then |
| 991 | lic="${src}" |
1001 | lic="${src}" |
| 992 | fi |
1002 | fi |
| 993 | fi |
1003 | fi |
| 994 | [ ! -f "${lic}" ] && die "Could not find requested license ${src}" |
1004 | [ ! -f "${lic}" ] && die "Could not find requested license ${src}" |
|
|
1005 | local l="`basename ${lic}`" |
| 995 | |
1006 | |
| 996 | # here is where we check for the licenses the user already |
1007 | # here is where we check for the licenses the user already |
| 997 | # accepted ... if we don't find a match, we make the user accept |
1008 | # accepted ... if we don't find a match, we make the user accept |
| 998 | local alic |
1009 | local alic |
| 999 | for alic in ${ACCEPT_LICENSE} ; do |
1010 | for alic in ${ACCEPT_LICENSE} ; do |
| 1000 | [ "${alic}" == "*" ] && return 0 |
1011 | [ "${alic}" == "*" ] && return 0 |
| 1001 | [ "${alic}" == "${lic}" ] && return 0 |
1012 | [ "${alic}" == "${l}" ] && return 0 |
| 1002 | done |
1013 | done |
| 1003 | |
1014 | |
| 1004 | local licmsg="`mymktemp ${T}`" |
1015 | local licmsg="`mymktemp ${T}`" |
| 1005 | cat << EOF > ${licmsg} |
1016 | cat << EOF > ${licmsg} |
| 1006 | ********************************************************** |
1017 | ********************************************************** |
| … | |
… | |
| 1011 | ********************************************************** |
1022 | ********************************************************** |
| 1012 | |
1023 | |
| 1013 | EOF |
1024 | EOF |
| 1014 | cat ${lic} >> ${licmsg} |
1025 | cat ${lic} >> ${licmsg} |
| 1015 | ${PAGER:-less} ${licmsg} || die "Could not execute pager (${PAGER}) to accept ${lic}" |
1026 | ${PAGER:-less} ${licmsg} || die "Could not execute pager (${PAGER}) to accept ${lic}" |
| 1016 | einfon "Do you accept the terms of this license? [yes/no] " |
1027 | einfon "Do you accept the terms of this license (${l})? [yes/no] " |
| 1017 | read alic |
1028 | read alic |
| 1018 | case ${alic} in |
1029 | case ${alic} in |
| 1019 | yes|Yes|y|Y) |
1030 | yes|Yes|y|Y) |
| 1020 | return 0 |
1031 | return 0 |
| 1021 | ;; |
1032 | ;; |