| 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.63 2003/10/13 15:00:19 vapier Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v 1.69 2003/11/26 22:13:35 mr_bones_ 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}" |
| … | |
… | |
| 706 | type=Emulator |
706 | type=Emulator |
| 707 | ;; |
707 | ;; |
| 708 | "games-"*) |
708 | "games-"*) |
| 709 | type=Game |
709 | type=Game |
| 710 | ;; |
710 | ;; |
|
|
711 | "net-"*) |
|
|
712 | type=Network; |
|
|
713 | ;; |
| 711 | *) |
714 | *) |
| 712 | type= |
715 | type= |
| 713 | ;; |
716 | ;; |
| 714 | esac |
717 | esac |
| 715 | fi |
718 | fi |
| … | |
… | |
| 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} 2>/dev/null \ |
969 | tail -n +${skip} ${src} 2>/dev/null | head -c 512 > ${tmpfile} |
| 967 | | gzip -cd 2>/dev/null \ |
970 | local filetype="`file -b ${tmpfile}`" |
| 968 | | tar -x --no-same-owner -f - 2>/dev/null |
971 | case ${filetype} in |
| 969 | local pipestatus="${PIPESTATUS[*]}" |
972 | *tar\ archive) |
| 970 | pipestatus="${pipestatus// }" |
|
|
| 971 | if [ "${pipestatus//0}" != "" ] |
|
|
| 972 | then |
|
|
| 973 | # maybe it isnt gzipped ... they usually are, but not always ... |
|
|
| 974 | 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 | ;; |
|
|
978 | gzip*) |
|
|
979 | tail -n +${skip} ${src} | tar -xzf - |
|
|
980 | ;; |
|
|
981 | *) |
|
|
982 | false |
|
|
983 | ;; |
|
|
984 | esac |
| 975 | || die "failure unpacking makeself ${shrtsrc} ('${ver}' +${skip})" |
985 | assert "failure unpacking (${filetype}) makeself ${shrtsrc} ('${ver}' +${skip})" |
| 976 | fi |
|
|
| 977 | } |
986 | } |
| 978 | |
987 | |
| 979 | # Display a license for user to accept. |
988 | # Display a license for user to accept. |
| 980 | # |
989 | # |
| 981 | # Usage: check_license [license] |
990 | # Usage: check_license [license] |
| … | |
… | |
| 992 | elif [ -e "${src}" ] ; then |
1001 | elif [ -e "${src}" ] ; then |
| 993 | lic="${src}" |
1002 | lic="${src}" |
| 994 | fi |
1003 | fi |
| 995 | fi |
1004 | fi |
| 996 | [ ! -f "${lic}" ] && die "Could not find requested license ${src}" |
1005 | [ ! -f "${lic}" ] && die "Could not find requested license ${src}" |
|
|
1006 | local l="`basename ${lic}`" |
| 997 | |
1007 | |
| 998 | # here is where we check for the licenses the user already |
1008 | # here is where we check for the licenses the user already |
| 999 | # accepted ... if we don't find a match, we make the user accept |
1009 | # accepted ... if we don't find a match, we make the user accept |
| 1000 | local alic |
1010 | local alic |
| 1001 | for alic in "${ACCEPT_LICENSE}" ; do |
1011 | for alic in ${ACCEPT_LICENSE} ; do |
| 1002 | [ "${alic}" == "*" ] && return 0 |
1012 | [ "${alic}" == "*" ] && return 0 |
| 1003 | [ "${alic}" == "${lic}" ] && return 0 |
1013 | [ "${alic}" == "${l}" ] && return 0 |
| 1004 | done |
1014 | done |
| 1005 | |
1015 | |
| 1006 | local licmsg="`mymktemp ${T}`" |
1016 | local licmsg="`mymktemp ${T}`" |
| 1007 | cat << EOF > ${licmsg} |
1017 | cat << EOF > ${licmsg} |
| 1008 | ********************************************************** |
1018 | ********************************************************** |
| … | |
… | |
| 1013 | ********************************************************** |
1023 | ********************************************************** |
| 1014 | |
1024 | |
| 1015 | EOF |
1025 | EOF |
| 1016 | cat ${lic} >> ${licmsg} |
1026 | cat ${lic} >> ${licmsg} |
| 1017 | ${PAGER:-less} ${licmsg} || die "Could not execute pager (${PAGER}) to accept ${lic}" |
1027 | ${PAGER:-less} ${licmsg} || die "Could not execute pager (${PAGER}) to accept ${lic}" |
| 1018 | einfon "Do you accept the terms of this license? [yes/no] " |
1028 | einfon "Do you accept the terms of this license (${l})? [yes/no] " |
| 1019 | read alic |
1029 | read alic |
| 1020 | case ${alic} in |
1030 | case ${alic} in |
| 1021 | yes|Yes|y|Y) |
1031 | yes|Yes|y|Y) |
| 1022 | return 0 |
1032 | return 0 |
| 1023 | ;; |
1033 | ;; |