* Re: [gentoo-user] emerge wine
2008-03-12 10:23 [gentoo-user] emerge wine Robert Stockdale IV
@ 2008-03-12 10:23 ` Alan McKinnon
2008-03-13 1:07 ` Robert Stockdale IV
0 siblings, 1 reply; 15+ messages in thread
From: Alan McKinnon @ 2008-03-12 10:23 UTC (permalink / raw
To: gentoo-user
On Wednesday 12 March 2008, Robert Stockdale IV wrote:
> Hi all:
> I trying to emerge world and just got this error message with only 3
> programs left to emerge. It is:
>
> * Messages for package app-emulation/wine-0.9.57:
http://forums.gentoo.org/viewtopic-p-2111407.html
--
Alan McKinnon
alan dot mckinnon at gmail dot com
--
gentoo-user@lists.gentoo.org mailing list
^ permalink raw reply [flat|nested] 15+ messages in thread
* [gentoo-user] emerge wine
@ 2008-03-12 10:23 Robert Stockdale IV
2008-03-12 10:23 ` Alan McKinnon
0 siblings, 1 reply; 15+ messages in thread
From: Robert Stockdale IV @ 2008-03-12 10:23 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1.1: Type: text/plain, Size: 932 bytes --]
Hi all:
I trying to emerge world and just got this error message with only 3
programs left to emerge. It is:
* Messages for package app-emulation/wine-0.9.57:
*
* ERROR: app-emulation/wine-0.9.57 failed.
* Call stack:
* ebuild.sh, line 49: Called src_compile
* environment, line 2460: Called econf 'src_compile'
'src_compile' '--sysconfdir=/etc/wine' '--with-curses'
* ebuild.sh, line 513: Called die
* The specific snippet of code:
* die "econf failed"
* The die message:
* econf failed
*
* If you need support, post the topmost build error, and the call stack if
relevant.
* A complete build log is located at '/var/tmp/portage/app-emulation/wine-
0.9.57/temp/build.log'.
* The ebuild environment file is located at
'/var/tmp/portage/app-emulation/wine-0.9.57/temp/environment'.
*
The build log and ebuild environment are attached. Thank you.
Bob
[-- Attachment #1.2: Type: text/html, Size: 1449 bytes --]
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: build.log --]
[-- Type: text/x-log; name=build.log, Size: 2210 bytes --]
>>> Unpacking source...
>>> Unpacking wine-0.9.57.tar.bz2 to /var/tmp/portage/app-emulation/wine-0.9.57/work
^[[32;01m*^[[0m Applying wine-gentoo-no-ssp.patch ...
^[[A^[[148C ^[[34;01m[ ^[[32;01mok^[[34;01m ]^[[0m
>>> Source unpacked.
>>> Compiling source in /var/tmp/portage/app-emulation/wine-0.9.57/work/wine-0.9.57 ...
* econf: updating wine-0.9.57/tools/config.guess with /usr/share/gnuconfig/config.guess
* econf: updating wine-0.9.57/tools/config.sub with /usr/share/gnuconfig/config.sub
./configure --prefix=/usr --host=x86_64-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --sysconfdir=/etc/wine --with-curses --with-opengl --with-x --libdir=/usr/lib32 --build=x86_64-pc-linux-gnu
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking whether make sets $(MAKE)... yes
checking for x86_64-pc-linux-gnu-gcc... x86_64-pc-linux-gnu-gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details.
!!! Please attach the following file when seeking support:
!!! /var/tmp/portage/app-emulation/wine-0.9.57/work/wine-0.9.57/config.log
^[[31;01m*^[[0m
^[[31;01m*^[[0m ERROR: app-emulation/wine-0.9.57 failed.
^[[31;01m*^[[0m Call stack:
^[[31;01m*^[[0m ebuild.sh, line 49: Called src_compile
^[[31;01m*^[[0m environment, line 2460: Called econf 'src_compile' 'src_compile' '--sysconfdir=/etc/wine' '--with-curses'
^[[31;01m*^[[0m ebuild.sh, line 513: Called die
^[[31;01m*^[[0m The specific snippet of code:
^[[31;01m*^[[0m die "econf failed"
^[[31;01m*^[[0m The die message:
^[[31;01m*^[[0m econf failed
^[[31;01m*^[[0m
^[[31;01m*^[[0m If you need support, post the topmost build error, and the call stack if relevant.
^[[31;01m*^[[0m A complete build log is located at '/var/tmp/portage/app-emulation/wine-0.9.57/temp/build.log'.
^[[31;01m*^[[0m The ebuild environment file is located at '/var/tmp/portage/app-emulation/wine-0.9.57/temp/environment'.
^[[31;01m*^[[0m
[-- Attachment #3: environment --]
[-- Type: application/octet-stream, Size: 100007 bytes --]
ABI=amd64
ALSA_CARDS='ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci'
ALSA_PCM_PLUGINS='adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route share shm softvol'
ANT_HOME=/usr/share/ant-core
APACHE2_MODULES='actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias'
ARCH=amd64
ASFLAGS_x86=--32
CBUILD=x86_64-pc-linux-gnu
CDEFINE_amd64=__x86_64__
CDEFINE_default=__unix__
CDEFINE_x86=__i386__
CFLAGS='-O2 -march=x86-64 -pipe'
CFLAGS_default=
CFLAGS_x86='-m32 -L/emul/linux/x86/lib -L/emul/linux/x86/usr/lib'
CHOST=x86_64-pc-linux-gnu
CHOST_amd64=x86_64-pc-linux-gnu
CHOST_default=x86_64-pc-linux-gnu
CHOST_x86=i686-pc-linux-gnu
CLASSPATH=.
CTARGET_default=x86_64-pc-linux-gnu
CVS_RSH=ssh
CXXFLAGS='-O2 -march=x86-64 -pipe'
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-EIGWGb2Fh7,guid=33779f9781e2e3c7415cd65f47d5750c
DBUS_SESSION_BUS_PID=25726
DCCC_PATH=/usr/lib/distcc/bin
DEFAULT_ABI=amd64
DEPEND=$'>=media-libs/freetype-2.0.0\n\tmedia-fonts/corefonts\n\tncurses? ( >=sys-libs/ncurses-5.2 )\n\tjack? ( media-sound/jack-audio-connection-kit )\n\tdbus? ( sys-apps/dbus )\n\thal? ( sys-apps/hal )\n\tX? (\n\t\tx11-libs/libXcursor\n\t\tx11-libs/libXrandr\n\t\tx11-libs/libXi\n\t\tx11-libs/libXmu\n\t\tx11-libs/libXxf86vm\n\t\tx11-apps/xmessage\n\t)\n\talsa? ( media-libs/alsa-lib )\n\tesd? ( media-sound/esound )\n\tnas? ( media-libs/nas )\n\tcups? ( net-print/cups )\n\topengl? ( virtual/opengl )\n\tjpeg? ( media-libs/jpeg )\n\tldap? ( net-nds/openldap )\n\tlcms? ( media-libs/lcms )\n\tsamba? ( >=net-fs/samba-3.0.25 )\n\txml? ( dev-libs/libxml2 dev-libs/libxslt )\n\tscanner? ( media-gfx/sane-backends )\n\tamd64? (\n\t\t>=app-emulation/emul-linux-x86-xlibs-2.1\n\t\t>=app-emulation/emul-linux-x86-soundlibs-2.1\n\t\t>=sys-kernel/linux-headers-2.6\n\t)\n\t>=media-gfx/fontforge-20060703\n\tX? (\n\t\tx11-proto/inputproto\n\t\tx11-proto/xextproto\n\t\tx11-proto/xf86vidmodeproto\n\t)\n\tsys-devel/bison\n\tsys-devel/flex '
DESCRIPTION='free implementation of Windows(tm) on Unix'
DESKTOP_SESSION=gnome
DESKTOP_STARTUP_ID=
DESTTREE=/usr
DIROPTIONS=-m0755
EAPI=1
ELIBC=glibc
EPATCH_EXCLUDE=
EPATCH_FORCE=no
EPATCH_MULTI_MSG='Applying various patches (bugfixes/updates) ...'
EPATCH_OPTS='-g0 -E --no-backup-if-mismatch'
EPATCH_SINGLE_MSG=
EPATCH_SOURCE=/var/tmp/portage/app-emulation/wine-0.9.57/work/patch
EPATCH_SUFFIX=patch.bz2
EXEOPTIONS=-m0755
FEATURES='distlocks metadata-transfer parallel-fetch sandbox sfperms strict unmerge-orphans userfetch'
FLTK_DOCDIR=/usr/share/doc/fltk-1.1.7/html
GCC_SPECS=
GDK_USE_XFT=1
GDMSESSION=gnome
GDM_LANG=en_US.UTF-8
GDM_XSERVER_LOCATION=local
GENERATION=2
GNOME_DESKTOP_SESSION_ID=Default
GNOME_KEYRING_SOCKET=/tmp/keyring-Q8iTkX/socket
GTK_MODULES=gnomebreakpad
GTK_RC_FILES=/etc/gtk/gtkrc:/home/bob/.gtkrc-1.2-gnome2
GUILE_LOAD_PATH=/usr/share/guile/1.8
HOMEPAGE=http://www.winehq.com/
INHERITED='multilib toolchain-funcs eutils portability flag-o-matic'
INPUT_DEVICES='keyboard mouse'
INSDESTTREE=
INSOPTIONS=-m0644
IUSE=' alsa cups dbus esd gecko hal jack jpeg lcms ldap nas ncurses opengl oss samba scanner xml X'
JAVAC=/etc/java-config-2/current-system-vm/bin/javac
JAVA_HOME=/etc/java-config-2/current-system-vm
JDK_HOME=/etc/java-config-2/current-system-vm
KDEDIRS=/usr:/usr/local:/usr/kde/4.0:/usr/kde/3.5
KERNEL=linux
KERNEL_ABI=amd64
KEYWORDS='-* ~amd64 ~x86 ~x86-fbsd'
KV=2.6.24.2
LADSPA_PATH=/usr/lib64/ladspa
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LCD_DEVICES='bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text'
LC_ALL=en_US.UTF-8
LDFLAGS='-Wl,-O1 -Wl,--enable-new-dtags -Wl,--sort-common -s'
LDFLAGS_default=
LDFLAGS_x86='-m elf_i386 -L/emul/linux/x86/lib -L/emul/linux/x86/usr/lib'
LIBDIR_amd64=lib64
LIBDIR_default=lib
LIBDIR_x86=lib32
LIBGL_DRIVERS_PATH=/usr/lib64/dri:/usr/lib32/dri
LIBOPTIONS=-m0644
LICENSE=LGPL-2.1
LINGUAS=en
LIRC_DEVICES='audio audio_alsa'
MAKEOPTS=-j3
MULTILIB_ABIS='amd64 x86'
MULTILIB_STRICT_DENY='64-bit.*shared object'
MULTILIB_STRICT_DIRS='/lib /usr/lib /usr/kde/*/lib /usr/qt/*/lib /usr/X11R6/lib'
MULTILIB_STRICT_EXEMPT='(perl5|gcc|gcc-lib|binutils|eclipse-3|debug|portage)'
OPENGL_PROFILE=nvidia
PDEPEND=' '
PKG_CONFIG_PATH=/usr/qt/3/lib64/pkgconfig
PORTAGE_NICENESS=8
PRELINK_PATH_MASK=/usr/lib/gstreamer-0.8:/usr/lib64/klibc
PROVIDE=
PYTHONPATH=/usr/lib64/portage/pym
QMAKESPEC=linux-g++
QTDIR=/usr/qt/3
RDEPEND=$'>=media-libs/freetype-2.0.0\n\tmedia-fonts/corefonts\n\tncurses? ( >=sys-libs/ncurses-5.2 )\n\tjack? ( media-sound/jack-audio-connection-kit )\n\tdbus? ( sys-apps/dbus )\n\thal? ( sys-apps/hal )\n\tX? (\n\t\tx11-libs/libXcursor\n\t\tx11-libs/libXrandr\n\t\tx11-libs/libXi\n\t\tx11-libs/libXmu\n\t\tx11-libs/libXxf86vm\n\t\tx11-apps/xmessage\n\t)\n\talsa? ( media-libs/alsa-lib )\n\tesd? ( media-sound/esound )\n\tnas? ( media-libs/nas )\n\tcups? ( net-print/cups )\n\topengl? ( virtual/opengl )\n\tjpeg? ( media-libs/jpeg )\n\tldap? ( net-nds/openldap )\n\tlcms? ( media-libs/lcms )\n\tsamba? ( >=net-fs/samba-3.0.25 )\n\txml? ( dev-libs/libxml2 dev-libs/libxslt )\n\tscanner? ( media-gfx/sane-backends )\n\tamd64? (\n\t\t>=app-emulation/emul-linux-x86-xlibs-2.1\n\t\t>=app-emulation/emul-linux-x86-soundlibs-2.1\n\t\t>=sys-kernel/linux-headers-2.6\n\t) '
RESTRICT=test
RUBYOPT=-rauto_gem
S=/var/tmp/portage/app-emulation/wine-0.9.57/work/wine-0.9.57
SANDBOX_DENY=/etc/ld.so.preload
SANDBOX_PREDICT=:/dev/console:/dev/random:/proc/self/maps:/usr/lib64/portage/pym:/usr/lib/python2.0/:/usr/lib/python2.1/:/usr/lib/python2.2/:/usr/lib/python2.3/:/usr/lib/python2.4/:/usr/lib/python2.5/:/usr/lib/python3.0/:/var/cache/edb/dep:/var/db/aliases.db:/var/db/ethers.db:/var/db/group.db:/var/db/hosts.db:/var/db/netgroup.db:/var/db/netmasks.db:/var/db/networks.db:/var/db/passwd.db:/var/db/protocols.db:/var/db/rpc.db:/var/db/services.db:/var/tmp/portage/app-emulation/wine-0.9.57/homedir/.:
SANDBOX_READ=:/:/dev/shm:/dev/stdin:/var/tmp:
SANDBOX_WRITE=:/dev/console:/dev/fd:/dev/null:/dev/pts/:/dev/pty:/dev/shm:/dev/shm/ngpt:/dev/stderr:/dev/stdout:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/proc/self/fd:/tmp:/tmp/:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/lib/cf:/usr/lib/conftest:/usr/tmp/cf:/usr/tmp/conftest:/var/log/scrollkeeper.log:/var/tmp:/var/tmp/:/var/tmp/portage/app-emulation/wine-0.9.57/homedir/.bash_history:/var/tmp/portage/app-emulation/wine-0.9.57/homedir/.gconfd/lock:
SANE_CONFIG_DIR=/etc/sane.d
SCHEME_LIBRARY_PATH=/usr/share/slib/
SESSION_MANAGER=local/java:/tmp/.ICE-unix/25702
SLOT=0
SRC_URI=$'mirror://sourceforge/wine/wine-0.9.57.tar.bz2\n\tgecko? ( mirror://sourceforge/wine/wine_gecko-0.1.0.cab )'
STAGE1_USE='nptl nptlonly unicode'
SYMLINK_LIB=yes
SYSFONT=latarcyrheb-sun16
USB_DEVFS_PATH=/dev/bus/usb
USE='X alsa amd64 cups elibc_glibc esd gecko jack jpeg kernel_linux ldap ncurses opengl oss samba userland_GNU xml'
USERLAND=GNU
USERNAME=bob
VIDEO_CARDS='fbdev nv v4l vesa vga nvidia'
VMHANDLE=blackdown-jdk-1.4.2
WINDOWID=48234584
WINDOWPATH=7
XCURSORS_THEME=Blue
XDG_DATA_DIRS=/usr/share:/usr/kde/4.0/share:/usr/local/share:/usr/kde/3.5/share
XERCESC_NLS_HOME=/usr/share/xerces-c/msg
XPSERVERLIST=
_=_RC_GET_KV_CACHE
_E_DOCDESTTREE_=
_E_EXEDESTTREE_=
___ECLASS_RECUR_MULTILIB=yes
___ECLASS_RECUR_TOOLCHAIN_FUNCS=yes
_pipestatus='0 0'
conf=wine-0.9.57-r0
_cdrom_locate_file_on_cd ()
{
local mline="";
local showedmsg=0 showjolietmsg=0;
while [[ -z ${CDROM_ROOT} ]]; do
local i=0;
local -a cdset=(${*//:/ });
if [[ -n ${CDROM_SET} ]]; then
cdset=(${cdset[${CDROM_SET}]});
fi;
while [[ -n ${cdset[${i}]} ]]; do
local dir=$(dirname ${cdset[${i}]});
local file=$(basename ${cdset[${i}]});
local point= node= fs= foo=;
while read point node fs foo; do
[[ " cd9660 iso9660 udf " != *" ${fs} "* ]] && ! [[ ${fs} == "subfs" && ",${opts}," == *",fs=cdfss,"* ]] && continue;
point=${point//\040/ };
[[ ! -d ${point}/${dir} ]] && continue;
[[ -z $(find "${point}/${dir}" -maxdepth 1 -iname "${file}") ]] && continue;
export CDROM_ROOT=${point};
export CDROM_SET=${i};
export CDROM_MATCH=${cdset[${i}]};
return;
done <<< "$(get_mounts)";
((++i));
done;
echo;
if [[ ${showedmsg} -eq 0 ]]; then
if [[ ${CDROM_TOTAL_CDS} -eq 1 ]]; then
if [[ -z ${CDROM_NAME} ]]; then
einfo "Please insert+mount the cdrom for ${PN} now !";
else
einfo "Please insert+mount the ${CDROM_NAME} cdrom now !";
fi;
else
if [[ -z ${CDROM_NAME_1} ]]; then
einfo "Please insert+mount cd #${CDROM_CURRENT_CD} for ${PN} now !";
else
local var="CDROM_NAME_${CDROM_CURRENT_CD}";
einfo "Please insert+mount the ${!var} cdrom now !";
fi;
fi;
showedmsg=1;
fi;
einfo "Press return to scan for the cd again";
einfo "or hit CTRL+C to abort the emerge.";
echo;
if [[ ${showjolietmsg} -eq 0 ]]; then
showjolietmsg=1;
else
ewarn "If you are having trouble with the detection";
ewarn "of your CD, it is possible that you do not have";
ewarn "Joliet support enabled in your kernel. Please";
ewarn "check that CONFIG_JOLIET is enabled in your kernel.";
ebeep 5;
fi;
read || die "something is screwed with your system";
done
}
_epatch_assert ()
{
local _pipestatus=${PIPESTATUS[*]};
[[ ${_pipestatus// /} -eq 0 ]]
}
_epatch_draw_line ()
{
[[ -z $1 ]] && set "$(printf "%65s" '')";
echo "${1//?/=}"
}
_filter-hardened ()
{
local f;
for f in "$@";
do
case "${f}" in
-fPIC | -fpic | -fPIE | -fpie | -Wl,pie | -pie)
gcc-specs-pie || continue;
is-flagq -nopie || append-flags -nopie
;;
-fstack-protector)
gcc-specs-ssp || continue;
is-flagq -fno-stack-protector || append-flags -fno-stack-protector
;;
-fstack-protector-all)
gcc-specs-ssp-to-all || continue;
is-flagq -fno-stack-protector-all || append-flags -fno-stack-protector-all
;;
esac;
done
}
_filter-var ()
{
local f x VAR VAL;
declare -a new;
VAR=$1;
shift;
eval VAL=\${${VAR}};
for f in ${VAL};
do
for x in "$@";
do
[[ ${f} == ${x} ]] && continue 2;
done;
eval new\[\${\#new\[@]}]=\${f};
done;
eval export ${VAR}=\${new\[*]}
}
_gcc-install-dir ()
{
echo "$($(tc-getCC) -print-search-dirs 2> /dev/null | awk '$1=="install:" {print $2}')"
}
_gcc-specs-directive_raw ()
{
local cc=$(tc-getCC);
local specfiles=$(LC_ALL=C ${cc} -v 2>&1 | awk '$1=="Reading" {print $NF}');
${cc} -dumpspecs 2> /dev/null | cat - ${specfiles} | awk -v directive=$1 'BEGIN { pspec=""; spec=""; outside=1 }
$1=="*"directive":" { pspec=spec; spec=""; outside=0; next }
outside || NF==0 || ( substr($1,1,1)=="*" && substr($1,length($1),1)==":" ) { outside=1; next }
spec=="" && substr($0,1,1)=="+" { spec=pspec " " substr($0,2); next }
{ spec=spec $0 }
END { print spec }';
return 0
}
_gcc-specs-exists ()
{
[[ -f $(_gcc-install-dir)/$1 ]]
}
_is_flagq ()
{
local x;
for x in ${!1};
do
[[ ${x} == $2 ]] && return 0;
done;
return 1
}
append-cppflags ()
{
[[ -z $* ]] && return 0;
export CPPFLAGS="${CPPFLAGS} $*";
return 0
}
append-flags ()
{
[[ -z $* ]] && return 0;
export CFLAGS="${CFLAGS} $*";
export CXXFLAGS="${CXXFLAGS} $*";
return 0
}
append-ldflags ()
{
[[ -z $* ]] && return 0;
export LDFLAGS="${LDFLAGS} $*";
return 0
}
append-lfs-flags ()
{
[[ -n $@ ]] && die "append-lfs-flags takes no arguments";
append-cppflags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
}
bashrc_has ()
{
[[ " ${*:2} " == *" $1 "* ]]
}
bindnow-flags ()
{
ewarn "QA: stop using the bindnow-flags function ... simply drop it from your ebuild" 1>&2;
case $($(tc-getLD) -v 2>&1 </dev/null) in
*GNU* | *'with BFD'*)
echo "-Wl,-z,now"
;;
*Apple*)
echo "-bind_at_load"
;;
*)
case $($(tc-getLD) -V 2>&1 </dev/null) in
*Solaris*)
echo "-Wl,-z,now"
;;
esac
;;
esac
}
built_with_use ()
{
local hidden="no";
if [[ $1 == "--hidden" ]]; then
hidden="yes";
shift;
fi;
local missing_action="die";
if [[ $1 == "--missing" ]]; then
missing_action=$2;
shift;
shift;
case ${missing_action} in
true | false | die)
;;
*)
die "unknown action '${missing_action}'"
;;
esac;
fi;
local opt=$1;
[[ ${opt:0:1} = "-" ]] && shift || opt="-a";
local PKG=$(best_version $1);
[[ -z ${PKG} ]] && die "Unable to resolve $1 to an installed package";
shift;
local USEFILE=${ROOT}/var/db/pkg/${PKG}/USE;
local IUSEFILE=${ROOT}/var/db/pkg/${PKG}/IUSE;
if [[ ! -e ${USEFILE} ]] || [[ ! -e ${IUSEFILE} && ${hidden} == "no" ]]; then
case ${missing_action} in
true)
return 0
;;
false)
return 1
;;
die)
die "Unable to determine what USE flags $PKG was built with"
;;
esac;
fi;
if [[ ${hidden} == "no" ]]; then
local IUSE_BUILT=$(<${IUSEFILE});
local expand;
for expand in $(echo ${USE_EXPAND} | tr '[:upper:]' '[:lower:]');
do
if [[ $1 == ${expand}_* ]]; then
expand="";
break;
fi;
done;
if [[ -n ${expand} ]]; then
if ! has $1 ${IUSE_BUILT}; then
case ${missing_action} in
true)
return 0
;;
false)
return 1
;;
die)
die "$PKG does not actually support the $1 USE flag!"
;;
esac;
fi;
fi;
fi;
local USE_BUILT=$(<${USEFILE});
while [[ $# -gt 0 ]]; do
if [[ ${opt} = "-o" ]]; then
has $1 ${USE_BUILT} && return 0;
else
has $1 ${USE_BUILT} || return 1;
fi;
shift;
done;
[[ ${opt} = "-a" ]]
}
cdrom_get_cds ()
{
local cdcnt=0;
local f=;
for f in "$@";
do
((++cdcnt));
export CDROM_CHECK_${cdcnt}="$f";
done;
export CDROM_TOTAL_CDS=${cdcnt};
export CDROM_CURRENT_CD=1;
if [[ -n ${CD_ROOT}${CD_ROOT_1} ]]; then
local var=;
cdcnt=0;
while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do
((++cdcnt));
var="CD_ROOT_${cdcnt}";
[[ -z ${!var} ]] && var="CD_ROOT";
if [[ -z ${!var} ]]; then
eerror "You must either use just the CD_ROOT";
eerror "or specify ALL the CD_ROOT_X variables.";
eerror "In this case, you will need ${CDROM_TOTAL_CDS} CD_ROOT_X variables.";
die "could not locate CD_ROOT_${cdcnt}";
fi;
done;
export CDROM_ROOT=${CD_ROOT_1:-${CD_ROOT}};
einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}";
export CDROM_SET=-1;
for f in ${CDROM_CHECK_1//:/ };
do
((++CDROM_SET));
[[ -e ${CD_ROOT}/${f} ]] && break;
done;
export CDROM_MATCH=${f};
return;
fi;
if [[ ${CDROM_TOTAL_CDS} -eq 1 ]]; then
einfo "This ebuild will need the ${CDROM_NAME:-cdrom for ${PN}}";
echo;
einfo "If you do not have the CD, but have the data files";
einfo "mounted somewhere on your filesystem, just export";
einfo "the variable CD_ROOT so that it points to the";
einfo "directory containing the files.";
echo;
einfo "For example:";
einfo "export CD_ROOT=/mnt/cdrom";
echo;
else
if [[ -n ${CDROM_NAME_SET} ]]; then
cdcnt=0;
while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do
((++cdcnt));
export CDROM_NAME_${cdcnt}="${CDROM_NAME_SET[$((${cdcnt}-1))]}";
done;
fi;
einfo "This package will need access to ${CDROM_TOTAL_CDS} cds.";
cdcnt=0;
while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do
((++cdcnt));
var="CDROM_NAME_${cdcnt}";
[[ ! -z ${!var} ]] && einfo " CD ${cdcnt}: ${!var}";
done;
echo;
einfo "If you do not have the CDs, but have the data files";
einfo "mounted somewhere on your filesystem, just export";
einfo "the following variables so they point to the right place:";
einfon "";
cdcnt=0;
while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do
((++cdcnt));
echo -n " CD_ROOT_${cdcnt}";
done;
echo;
einfo "Or, if you have all the files in the same place, or";
einfo "you only have one cdrom, you can export CD_ROOT";
einfo "and that place will be used as the same data source";
einfo "for all the CDs.";
echo;
einfo "For example:";
einfo "export CD_ROOT_1=/mnt/cdrom";
echo;
fi;
export CDROM_SET="";
export CDROM_CURRENT_CD=0;
cdrom_load_next_cd
}
cdrom_load_next_cd ()
{
local var;
((++CDROM_CURRENT_CD));
unset CDROM_ROOT;
var=CD_ROOT_${CDROM_CURRENT_CD};
[[ -z ${!var} ]] && var="CD_ROOT";
if [[ -z ${!var} ]]; then
var="CDROM_CHECK_${CDROM_CURRENT_CD}";
_cdrom_locate_file_on_cd ${!var};
else
export CDROM_ROOT=${!var};
fi;
einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}"
}
check_license ()
{
local lic=$1;
if [ -z "${lic}" ]; then
lic="${PORTDIR}/licenses/${LICENSE}";
else
if [ -e "${PORTDIR}/licenses/${lic}" ]; then
lic="${PORTDIR}/licenses/${lic}";
else
if [ -e "${PWD}/${lic}" ]; then
lic="${PWD}/${lic}";
else
if [ -e "${lic}" ]; then
lic="${lic}";
fi;
fi;
fi;
fi;
[ ! -f "${lic}" ] && die "Could not find requested license ${lic}";
local l="`basename ${lic}`";
local shopts=$-;
local alic;
set -o noglob;
for alic in ${ACCEPT_LICENSE};
do
if [[ ${alic} == ${l} ]]; then
set +o noglob;
set -${shopts};
return 0;
fi;
done;
set +o noglob;
set -$shopts;
local licmsg=$(emktemp);
cat > ${licmsg} <<-EOF
**********************************************************
The following license outlines the terms of use of this
package. You MUST accept this license for installation to
continue. When you are done viewing, hit 'q'. If you
CTRL+C out of this, the install will not run!
**********************************************************
EOF
cat ${lic} >> ${licmsg};
${PAGER:-less} ${licmsg} || die "Could not execute pager (${PAGER}) to accept ${lic}";
einfon "Do you accept the terms of this license (${l})? [yes/no] ";
read alic;
case ${alic} in
yes | Yes | y | Y)
return 0
;;
*)
echo;
echo;
echo;
eerror "You MUST accept the license to continue! Exiting!";
die "Failed to accept license"
;;
esac
}
config_cache ()
{
local h ans="no";
use $1 && ans="yes";
shift;
for h in "$@";
do
[[ ${h} == *.h ]] && h=header_${h} || h=lib_${h};
export ac_cv_${h//[:\/.]/_}=${ans};
done
}
create_ml_includes ()
{
local dest=$1;
shift;
local basedirs=$(create_ml_includes-listdirs "$@");
create_ml_includes-makedestdirs ${dest} ${basedirs};
local file;
for file in $(create_ml_includes-allfiles ${basedirs});
do
( echo "/* Autogenerated by create_ml_includes() in multilib.eclass */";
local dir;
for dir in ${basedirs};
do
if [[ -f ${D}/${dir}/${file} ]]; then
echo "";
local sym=$(create_ml_includes-sym_for_dir ${dir} "$@");
if [[ ${sym/=} != "${sym}" ]]; then
echo "#if ${sym}";
else
if [[ ${sym::1} == "!" ]]; then
echo "#ifndef ${sym:1}";
else
echo "#ifdef ${sym}";
fi;
fi;
echo "# include <$(create_ml_includes-absolute ${dir}/${file})>";
echo "#endif /* ${sym} */";
fi;
done ) > "${D}/${dest}/${file}";
done
}
create_ml_includes-absolute ()
{
local dst="$(create_ml_includes-tidy_path $1)";
dst=(${dst//\// });
local i;
for ((i=0; i<${#dst[*]}; i++))
do
[ "${dst[i]}" == "include" ] && break;
done;
local strip_upto=$i;
for ((i=strip_upto+1; i<${#dst[*]}-1; i++))
do
echo -n ${dst[i]}/;
done;
echo -n ${dst[i]}
}
create_ml_includes-allfiles ()
{
local basedir file;
for basedir in "$@";
do
for file in $(find "${D}"/${basedir} -type f);
do
echo ${file/${D}\/${basedir}\//};
done;
done | sort | uniq
}
create_ml_includes-listdirs ()
{
local dirs;
local data;
for data in "$@";
do
dirs="${dirs} ${data/*:/}";
done;
echo ${dirs:1}
}
create_ml_includes-makedestdirs ()
{
local dest=$1;
shift;
local basedirs=$@;
dodir ${dest};
local basedir;
for basedir in ${basedirs};
do
local dir;
for dir in $(find ${D}/${basedir} -type d);
do
dodir ${dest}/${dir/${D}\/${basedir}/};
done;
done
}
create_ml_includes-sym_for_dir ()
{
local dir=$1;
shift;
local data;
for data in "$@";
do
if [[ ${data} == *:${dir} ]]; then
echo ${data/:*/};
return 0;
fi;
done;
echo "Shouldn't be here -- create_ml_includes-sym_for_dir $1 $@";
exit 1
}
create_ml_includes-tidy_path ()
{
local removed=$1;
if [ -n "${removed}" ]; then
while [ "${removed}" != "${removed/\/\//\/}" ]; do
removed=${removed/\/\//\/};
done;
while [ "${removed}" != "${removed//\/.\//\/}" ]; do
removed=${removed//\/.\//\/};
done;
[ "${removed##*/}" = "." ] && removed=${removed%/*};
while [ "${removed}" != "${removed//\/..\/}" ]; do
local p1="${removed%%\/..\/*}";
local p2="${removed#*\/..\/}";
removed="${p1%\/*}/${p2}";
done;
[ "${removed##*/}" = ".." ] && removed=${removed%/*/*};
[ "${removed##*/}" = "" ] && removed=${removed%/*};
echo ${removed};
fi
}
dlopen_lib ()
{
if [[ ${ELIBC} != *BSD ]]; then
echo "-ldl";
fi
}
doicon ()
{
( local i j ret;
insinto /usr/share/pixmaps;
for i in "$@";
do
if [[ -f ${i} ]]; then
doins "${i}";
((ret+=$?));
else
if [[ -d ${i} ]]; then
for j in "${i}"/*.png;
do
doins "${j}";
((ret+=$?));
done;
else
((++ret));
fi;
fi;
done;
exit ${ret} )
}
domenu ()
{
( local i j ret=0;
insinto /usr/share/applications;
for i in "$@";
do
if [[ -f ${i} ]]; then
doins "${i}";
((ret+=$?));
else
if [[ -d ${i} ]]; then
for j in "${i}"/*.desktop;
do
doins "${j}";
((ret+=$?));
done;
else
((++ret));
fi;
fi;
done;
exit ${ret} )
}
ebeep ()
{
local n;
if [[ -z ${EBEEP_IGNORE} ]]; then
for ((n=1 ; n <= ${1:-5} ; n++))
do
echo -ne "\a";
sleep 0.1 >&/dev/null;
sleep 0,1 >&/dev/null;
echo -ne "\a";
sleep 1;
done;
fi
}
ecvs_clean ()
{
[[ -z $* ]] && set -- .;
find "$@" -type d -name 'CVS' -prune -print0 | xargs -0 rm -rf;
find "$@" -type f -name '.cvs*' -print0 | xargs -0 rm -rf
}
edos2unix ()
{
echo "$@" | xargs sed -i 's/\r$//'
}
egetent ()
{
case ${CHOST} in
*-darwin*)
case "$2" in
*[!0-9]*)
nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2$/) {print \$0;exit;} }"
;;
*)
nidump $1 . | awk -F":" "{ if (\$3 == $2) {print \$0;exit;} }"
;;
esac
;;
*-freebsd* | *-dragonfly*)
local opts action="user";
[[ $1 == "passwd" ]] || action="group";
if [[ $2 == [[:digit:]]* ]]; then
[[ ${action} == "user" ]] && opts="-u" || opts="-g";
fi;
pw show ${action} ${opts} "$2" -q
;;
*-netbsd* | *-openbsd*)
grep "$2:\*:" /etc/$1
;;
*)
type -p nscd >&/dev/null && nscd -i "$1";
getent "$1" "$2"
;;
esac
}
egethome ()
{
ent=$(egetent passwd $1);
case ${CHOST} in
*-darwin* | *-freebsd* | *-dragonfly*)
echo ${ent} | cut -d: -f9
;;
*)
echo ${ent} | cut -d: -f6
;;
esac
}
egetshell ()
{
ent=$(egetent passwd "$1");
case ${CHOST} in
*-darwin* | *-freebsd* | *-dragonfly*)
echo ${ent} | cut -d: -f10
;;
*)
echo ${ent} cut -d: -f7
;;
esac
}
emktemp ()
{
local exe="touch";
[[ $1 == -d ]] && exe="mkdir" && shift;
local topdir=$1;
if [[ -z ${topdir} ]]; then
[[ -z ${T} ]] && topdir="/tmp" || topdir=${T};
fi;
if ! type -P mktemp > /dev/null; then
local tmp=/;
while [[ -e ${tmp} ]]; do
tmp=${topdir}/tmp.${RANDOM}.${RANDOM}.${RANDOM};
done;
${exe} "${tmp}" || ${exe} -p "${tmp}";
echo "${tmp}";
else
if [[ ${exe} == "touch" ]]; then
TMPDIR="${topdir}" mktemp -t tmp.XXXXXXXXXX;
else
TMPDIR="${topdir}" mktemp -dt tmp.XXXXXXXXXX;
fi;
fi
}
enewgroup ()
{
case ${EBUILD_PHASE} in
unpack | compile | test | install)
eerror "'enewgroup()' called from '${EBUILD_PHASE}()' which is not a pkg_* function.";
eerror "Package fails at QA and at life. Please file a bug.";
die "Bad package! enewgroup is only for use in pkg_* functions!"
;;
esac;
local egroup="$1";
shift;
if [ -z "${egroup}" ]; then
eerror "No group specified !";
die "Cannot call enewgroup without a group";
fi;
if [[ -n $(egetent group "${egroup}") ]]; then
return 0;
fi;
einfo "Adding group '${egroup}' to your system ...";
local opts=;
local egid="$1";
shift;
if [ ! -z "${egid}" ]; then
if [ "${egid}" -gt 0 ]; then
if [ -z "`egetent group ${egid}`" ]; then
if [[ "${CHOST}" == *-darwin* ]]; then
opts="${opts} ${egid}";
else
opts="${opts} -g ${egid}";
fi;
else
egid="next available; requested gid taken";
fi;
else
eerror "Groupid given but is not greater than 0 !";
die "${egid} is not a valid GID";
fi;
else
egid="next available";
fi;
einfo " - Groupid: ${egid}";
local eextra="$@";
opts="${opts} ${eextra}";
local oldsandbox="${SANDBOX_ON}";
export SANDBOX_ON="0";
case ${CHOST} in
*-darwin*)
if [ ! -z "${eextra}" ]; then
einfo "Extra options are not supported on Darwin/OS X yet";
einfo "Please report the ebuild along with the info below";
einfo "eextra: ${eextra}";
die "Required function missing";
fi;
case ${egid} in
*[!0-9]*)
for ((egid = 101; egid <= 999; egid++))
do
[[ -z $(egetent group ${egid}) ]] && break;
done
;;
esac;
dscl . create /groups/${egroup} gid ${egid};
dscl . create /groups/${egroup} passwd '*'
;;
*-freebsd* | *-dragonfly*)
case ${egid} in
*[!0-9]*)
for ((egid = 101; egid <= 999; egid++))
do
[[ -z $(egetent group ${egid}) ]] && break;
done
;;
esac;
pw groupadd ${egroup} -g ${egid} || die "enewgroup failed"
;;
*-netbsd*)
case ${egid} in
*[!0-9]*)
for ((egid = 101; egid <= 999; egid++))
do
[[ -z $(egetent group ${egid}) ]] && break;
done
;;
esac;
groupadd -g ${egid} ${egroup} || die "enewgroup failed"
;;
*)
groupadd ${opts} ${egroup} || die "enewgroup failed"
;;
esac;
export SANDBOX_ON="${oldsandbox}"
}
enewuser ()
{
case ${EBUILD_PHASE} in
unpack | compile | test | install)
eerror "'enewuser()' called from '${EBUILD_PHASE}()' which is not a pkg_* function.";
eerror "Package fails at QA and at life. Please file a bug.";
die "Bad package! enewuser is only for use in pkg_* functions!"
;;
esac;
local euser=$1;
shift;
if [[ -z ${euser} ]]; then
eerror "No username specified !";
die "Cannot call enewuser without a username";
fi;
if [[ -n $(egetent passwd "${euser}") ]]; then
return 0;
fi;
einfo "Adding user '${euser}' to your system ...";
local opts=;
local euid=$1;
shift;
if [[ -n ${euid} && ${euid} != -1 ]]; then
if [[ ${euid} -gt 0 ]]; then
if [[ -n $(egetent passwd ${euid}) ]]; then
euid="next";
fi;
else
eerror "Userid given but is not greater than 0 !";
die "${euid} is not a valid UID";
fi;
else
euid="next";
fi;
if [[ ${euid} == "next" ]]; then
for ((euid = 101; euid <= 999; euid++))
do
[[ -z $(egetent passwd ${euid}) ]] && break;
done;
fi;
opts="${opts} -u ${euid}";
einfo " - Userid: ${euid}";
local eshell=$1;
shift;
if [[ ! -z ${eshell} ]] && [[ ${eshell} != "-1" ]]; then
if [[ ! -e ${ROOT}${eshell} ]]; then
eerror "A shell was specified but it does not exist !";
die "${eshell} does not exist in ${ROOT}";
fi;
if [[ ${eshell} == */false || ${eshell} == */nologin ]]; then
eerror "Do not specify ${eshell} yourself, use -1";
die "Pass '-1' as the shell parameter";
fi;
else
for shell in /sbin/nologin /usr/sbin/nologin /bin/false /usr/bin/false /dev/null;
do
[[ -x ${ROOT}${shell} ]] && break;
done;
if [[ ${shell} == "/dev/null" ]]; then
eerror "Unable to identify the shell to use, proceeding with userland default.";
case ${USERLAND} in
GNU)
shell="/bin/false"
;;
BSD)
shell="/sbin/nologin"
;;
Darwin)
shell="/usr/sbin/nologin"
;;
*)
die "Unable to identify the default shell for userland ${USERLAND}"
;;
esac;
fi;
eshell=${shell};
fi;
einfo " - Shell: ${eshell}";
opts="${opts} -s ${eshell}";
local ehome=$1;
shift;
if [[ -z ${ehome} ]] || [[ ${ehome} == "-1" ]]; then
ehome="/dev/null";
fi;
einfo " - Home: ${ehome}";
opts="${opts} -d ${ehome}";
local egroups=$1;
shift;
if [[ ! -z ${egroups} ]]; then
local oldifs=${IFS};
local defgroup="" exgroups="";
export IFS=",";
for g in ${egroups};
do
export IFS=${oldifs};
if [[ -z $(egetent group "${g}") ]]; then
eerror "You must add group ${g} to the system first";
die "${g} is not a valid GID";
fi;
if [[ -z ${defgroup} ]]; then
defgroup=${g};
else
exgroups="${exgroups},${g}";
fi;
export IFS=",";
done;
export IFS=${oldifs};
opts="${opts} -g ${defgroup}";
if [[ ! -z ${exgroups} ]]; then
opts="${opts} -G ${exgroups:1}";
fi;
else
egroups="(none)";
fi;
einfo " - Groups: ${egroups}";
local oldsandbox=${SANDBOX_ON};
export SANDBOX_ON="0";
case ${CHOST} in
*-darwin*)
if [[ -z $@ ]]; then
dscl . create /users/${euser} uid ${euid};
dscl . create /users/${euser} shell ${eshell};
dscl . create /users/${euser} home ${ehome};
dscl . create /users/${euser} realname "added by portage for ${PN}";
local oldifs=${IFS};
export IFS=",";
for g in ${egroups};
do
dscl . merge /groups/${g} users ${euser};
done;
export IFS=${oldifs};
else
einfo "Extra options are not supported on Darwin yet";
einfo "Please report the ebuild along with the info below";
einfo "eextra: $@";
die "Required function missing";
fi
;;
*-freebsd* | *-dragonfly*)
if [[ -z $@ ]]; then
pw useradd ${euser} ${opts} -c "added by portage for ${PN}" die "enewuser failed";
else
einfo " - Extra: $@";
pw useradd ${euser} ${opts} "$@" || die "enewuser failed";
fi
;;
*-netbsd*)
if [[ -z $@ ]]; then
useradd ${opts} ${euser} || die "enewuser failed";
else
einfo " - Extra: $@";
useradd ${opts} ${euser} "$@" || die "enewuser failed";
fi
;;
*-openbsd*)
if [[ -z $@ ]]; then
useradd -u ${euid} -s ${eshell} -d ${ehome} -c "Added by portage for ${PN}" -g ${egroups} ${euser} || die "enewuser failed";
else
einfo " - Extra: $@";
useradd -u ${euid} -s ${eshell} -d ${ehome} -c "Added by portage for ${PN}" -g ${egroups} ${euser} "$@" || die "enewuser failed";
fi
;;
*)
if [[ -z $@ ]]; then
useradd ${opts} ${euser} -c "added by portage for ${PN}" || die "enewuser failed";
else
einfo " - Extra: $@";
useradd ${opts} ${euser} "$@" || die "enewuser failed";
fi
;;
esac;
if [[ ! -e ${ROOT}/${ehome} ]]; then
einfo " - Creating ${ehome} in ${ROOT}";
mkdir -p "${ROOT}/${ehome}";
chown ${euser} "${ROOT}/${ehome}";
chmod 755 "${ROOT}/${ehome}";
fi;
export SANDBOX_ON=${oldsandbox}
}
epatch ()
{
function _epatch_draw_line ()
{
[[ -z $1 ]] && set "$(printf "%65s" '')";
echo "${1//?/=}"
};
function _epatch_assert ()
{
local _pipestatus=${PIPESTATUS[*]};
[[ ${_pipestatus// /} -eq 0 ]]
};
local PIPE_CMD="";
local STDERR_TARGET="${T}/$$.out";
local PATCH_TARGET="${T}/$$.patch";
local PATCH_SUFFIX="";
local SINGLE_PATCH="no";
local x="";
unset P4CONFIG P4PORT P4USER;
if [ "$#" -gt 1 ]; then
local m="";
for m in "$@";
do
epatch "${m}";
done;
return 0;
fi;
if [ -n "$1" -a -f "$1" ]; then
SINGLE_PATCH="yes";
local EPATCH_SOURCE="$1";
local EPATCH_SUFFIX="${1##*\.}";
else
if [ -n "$1" -a -d "$1" ]; then
if [ "${EPATCH_FORCE}" = "yes" ] && [ -z "${EPATCH_SUFFIX}" ]; then
local EPATCH_SOURCE="$1/*";
else
local EPATCH_SOURCE="$1/*.${EPATCH_SUFFIX}";
fi;
else
if [[ ! -d ${EPATCH_SOURCE} ]] || [[ -n $1 ]]; then
if [ -n "$1" -a "${EPATCH_SOURCE}" = "${WORKDIR}/patch" ]; then
EPATCH_SOURCE="$1";
fi;
echo;
eerror "Cannot find \$EPATCH_SOURCE! Value for \$EPATCH_SOURCE is:";
eerror;
eerror " ${EPATCH_SOURCE}";
eerror " ( ${EPATCH_SOURCE##*/} )";
echo;
die "Cannot find \$EPATCH_SOURCE!";
fi;
local EPATCH_SOURCE="${EPATCH_SOURCE}/*.${EPATCH_SUFFIX}";
fi;
fi;
case ${EPATCH_SUFFIX##*\.} in
bz2)
PIPE_CMD="bzip2 -dc";
PATCH_SUFFIX="bz2"
;;
gz | Z | z)
PIPE_CMD="gzip -dc";
PATCH_SUFFIX="gz"
;;
ZIP | zip)
PIPE_CMD="unzip -p";
PATCH_SUFFIX="zip"
;;
*)
PIPE_CMD="cat";
PATCH_SUFFIX="patch"
;;
esac;
if [ "${SINGLE_PATCH}" = "no" ]; then
einfo "${EPATCH_MULTI_MSG}";
fi;
for x in ${EPATCH_SOURCE};
do
if [ -f ${x} ] && ( [ "${SINGLE_PATCH}" = "yes" -o "${x/_all_}" != "${x}" -o "${x/_${ARCH}_}" != "${x}" ] || [ "${EPATCH_FORCE}" = "yes" ] ); then
local count=0;
local popts="${EPATCH_OPTS}";
local patchname=${x##*/};
if [ -n "${EPATCH_EXCLUDE}" ]; then
if [ "${EPATCH_EXCLUDE/${patchname}}" != "${EPATCH_EXCLUDE}" ]; then
continue;
fi;
fi;
if [ "${SINGLE_PATCH}" = "yes" ]; then
if [ -n "${EPATCH_SINGLE_MSG}" ]; then
einfo "${EPATCH_SINGLE_MSG}";
else
einfo "Applying ${patchname} ...";
fi;
else
einfo " ${patchname} ...";
fi;
echo "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
while [ "${count}" -lt 5 ]; do
_epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
if [ "${PATCH_SUFFIX}" != "patch" ]; then
echo -n "PIPE_COMMAND: " >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
echo "${PIPE_CMD} ${x} > ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
else
PATCH_TARGET="${x}";
fi;
echo -n "PATCH COMMAND: " >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
echo "patch -p${count} ${popts} < ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
_epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
if [ "${PATCH_SUFFIX}" != "patch" ]; then
if ! ( ${PIPE_CMD} ${x} > ${PATCH_TARGET} ) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1; then
echo;
eerror "Could not extract patch!";
count=5;
break;
fi;
fi;
if ( cat ${PATCH_TARGET} | patch -p${count} ${popts} --dry-run -f;
_epatch_assert ) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1; then
_epatch_draw_line "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
echo "ACTUALLY APPLYING ${patchname} ..." >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
_epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
cat ${PATCH_TARGET} | patch -p${count} ${popts} >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 2>&1;
_epatch_assert;
if [ "$?" -ne 0 ]; then
cat ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
echo;
eerror "A dry-run of patch command succeeded, but actually";
eerror "applying the patch failed!";
count=5;
fi;
rm -f ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
break;
fi;
count=$((count + 1));
done;
if [ "${PATCH_SUFFIX}" != "patch" ]; then
rm -f ${PATCH_TARGET};
fi;
if [ "${count}" -eq 5 ]; then
echo;
eerror "Failed Patch: ${patchname} !";
eerror " ( ${PATCH_TARGET} )";
eerror;
eerror "Include in your bugreport the contents of:";
eerror;
eerror " ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}";
echo;
die "Failed Patch: ${patchname}!";
fi;
rm -f ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
eend 0;
fi;
done;
if [ "${SINGLE_PATCH}" = "no" ]; then
einfo "Done with patching";
fi
}
epause ()
{
[[ -z ${EPAUSE_IGNORE} ]] && sleep ${1:-5}
}
epunt_cxx ()
{
local dir=$1;
[[ -z ${dir} ]] && dir=${S};
ebegin "Removing useless C++ checks";
local f;
find "${dir}" -name configure | while read f; do
patch --no-backup-if-mismatch -p0 "${f}" "${PORTDIR}/eclass/ELT-patches/nocxx/nocxx.patch" > /dev/null;
done;
eend 0
}
esvn_clean ()
{
[[ -z $* ]] && set -- .;
find "$@" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf
}
filter-flags ()
{
_filter-hardened "$@";
_filter-var CFLAGS "$@";
_filter-var CPPFLAGS "$@";
_filter-var CXXFLAGS "$@";
return 0
}
filter-ldflags ()
{
_filter-var LDFLAGS "$@";
return 0
}
filter-lfs-flags ()
{
[[ -n $@ ]] && die "filter-lfs-flags takes no arguments";
filter-flags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
}
filter-mfpmath ()
{
local orig_mfpmath new_math prune_math;
orig_mfpmath=$(get-flag -mfpmath);
new_math=$(get-flag mfpmath);
new_math=" ${new_math//,/ } ";
prune_math="";
for prune_math in "$@";
do
new_math=${new_math/ ${prune_math} / };
done;
new_math=$(echo ${new_math});
new_math=${new_math// /,};
if [[ -z ${new_math} ]]; then
filter-flags ${orig_mfpmath};
else
replace-flags ${orig_mfpmath} -mfpmath=${new_math};
fi;
return 0
}
filter_invalid_flags ()
{
local flag broken_flags;
eval broken_flags=($(get_broken_flags $(getPROG CC gcc) c ${CFLAGS}));
for flag in "${broken_flags[@]}";
do
ewarn "Filtering out invalid CFLAG \"${flag}\"";
CFLAGS="$(remove_flag "${flag}" ${CFLAGS})";
done;
eval broken_flags=($(get_broken_flags $(getPROG CXX g++) c++ ${CXXFLAGS}));
for flag in "${broken_flags[@]}";
do
ewarn "Filtering out invalid CXXFLAG \"${flag}\"";
CXXFLAGS="$(remove_flag "${flag}" ${CXXFLAGS})";
done
}
find_unpackable_file ()
{
local src=$1;
if [[ -z ${src} ]]; then
src=${DISTDIR}/${A};
else
if [[ -e ${DISTDIR}/${src} ]]; then
src=${DISTDIR}/${src};
else
if [[ -e ${PWD}/${src} ]]; then
src=${PWD}/${src};
else
if [[ -e ${src} ]]; then
src=${src};
fi;
fi;
fi;
fi;
[[ ! -e ${src} ]] && return 1;
echo "${src}"
}
gcc-fullversion ()
{
$(tc-getCC "$@") -dumpversion
}
gcc-major-version ()
{
gcc-version "$@" | cut -f1 -d.
}
gcc-micro-version ()
{
gcc-fullversion "$@" | cut -f3 -d. | cut -f1 -d-
}
gcc-minor-version ()
{
gcc-version "$@" | cut -f2 -d.
}
gcc-specs-directive ()
{
local directive subdname subdirective;
directive="$(_gcc-specs-directive_raw $1)";
while [[ ${directive} == *%\(*\)* ]]; do
subdname=${directive/*%\(};
subdname=${subdname/\)*};
subdirective="$(_gcc-specs-directive_raw ${subdname})";
directive="${directive//\%(${subdname})/${subdirective}}";
done;
echo "${directive}";
return 0
}
gcc-specs-now ()
{
local directive;
directive=$(gcc-specs-directive link_command);
return $([[ ${directive/\{!nonow:} != ${directive} ]])
}
gcc-specs-pie ()
{
local directive;
directive=$(gcc-specs-directive cc1);
return $([[ ${directive/\{!nopie:} != ${directive} ]])
}
gcc-specs-relro ()
{
local directive;
directive=$(gcc-specs-directive link_command);
return $([[ ${directive/\{!norelro:} != ${directive} ]])
}
gcc-specs-ssp ()
{
local directive;
directive=$(gcc-specs-directive cc1);
return $([[ ${directive/\{!fno-stack-protector:} != ${directive} ]])
}
gcc-specs-ssp-to-all ()
{
local directive;
directive=$(gcc-specs-directive cc1);
return $([[ ${directive/\{!fno-stack-protector-all:} != ${directive} ]])
}
gcc-version ()
{
gcc-fullversion "$@" | cut -f1,2 -d.
}
gen_usr_ldscript ()
{
local lib libdir=$(get_libdir) output_format="";
dodir /usr/${libdir};
output_format=$($(tc-getCC) ${CFLAGS} ${LDFLAGS} -Wl,--verbose 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p');
[[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )";
for lib in "$@";
do
if [[ ${USERLAND} == "Darwin" ]]; then
ewarn "Not creating fake dynamic library for $lib on Darwin;";
ewarn "making a symlink instead.";
dosym "/${libdir}/${lib}" "/usr/${libdir}/${lib}";
else
cat > "${D}/usr/${libdir}/${lib}" <<-END_LDSCRIPT
/* GNU ld script
Since Gentoo has critical dynamic libraries
in /lib, and the static versions in /usr/lib,
we need to have a "fake" dynamic lib in /usr/lib,
otherwise we run into linking problems.
See bug http://bugs.gentoo.org/4411 for more info.
*/
${output_format}
GROUP ( /${libdir}/${lib} )
END_LDSCRIPT
fi
fperms a+x "/usr/${libdir}/${lib}" || die "could not change perms on ${lib}";
done
}
get-flag ()
{
local f findflag="$1";
for f in ${CFLAGS} ${CXXFLAGS};
do
if [ "${f/${findflag}}" != "${f}" ]; then
printf "%s\n" "${f/-${findflag}=}";
return 0;
fi;
done;
return 1
}
getPROG ()
{
local var=$1 prog=$2;
if [[ -n ${!var} ]]; then
echo "${!var}";
return 0;
fi;
local search=;
[[ -n $3 ]] && search=$(type -p "$3-${prog}");
[[ -z ${search} && -n ${CHOST} ]] && search=$(type -p "${CHOST}-${prog}");
[[ -n ${search} ]] && prog=${search##*/};
export ${var}=${prog};
echo "${!var}"
}
get_abi_ASFLAGS ()
{
get_abi_var ASFLAGS "$@"
}
get_abi_CDEFINE ()
{
get_abi_var CDEFINE "$@"
}
get_abi_CFLAGS ()
{
get_abi_var CFLAGS "$@"
}
get_abi_CHOST ()
{
get_abi_var CHOST "$@"
}
get_abi_CTARGET ()
{
get_abi_var CTARGET "$@"
}
get_abi_FAKE_TARGETS ()
{
get_abi_var FAKE_TARGETS "$@"
}
get_abi_LDFLAGS ()
{
get_abi_var LDFLAGS "$@"
}
get_abi_LIBDIR ()
{
get_abi_var LIBDIR "$@"
}
get_abi_var ()
{
local flag=$1;
local abi;
if [ $# -gt 1 ]; then
abi=${2};
else
if [ -n "${ABI}" ]; then
abi=${ABI};
else
if [ -n "${DEFAULT_ABI}" ]; then
abi=${DEFAULT_ABI};
else
abi="default";
fi;
fi;
fi;
local var="${flag}_${abi}";
echo ${!var}
}
get_all_abis ()
{
local order="";
if [[ -z ${MULTILIB_ABIS} ]]; then
echo "default";
return 0;
fi;
for x in ${MULTILIB_ABIS};
do
if [[ ${x} != ${DEFAULT_ABI} ]]; then
order="${order:+${order} }${x}";
fi;
done;
order="${order:+${order} }${DEFAULT_ABI}";
echo ${order};
return 0
}
get_all_libdirs ()
{
local libdirs="lib";
local abi;
local dir;
for abi in ${MULTILIB_ABIS};
do
[ "$(get_abi_LIBDIR ${abi})" != "lib" ] && libdirs="${libdirs} $(get_abi_LIBDIR ${abi})";
done;
echo "${libdirs}"
}
get_bmake ()
{
if [[ ${USERLAND} == *BSD ]]; then
echo make;
else
if [[ ${USERLAND} == "Darwin" ]]; then
echo bsdmake;
else
echo pmake;
fi;
fi
}
get_broken_flags ()
{
local myprog="${1}" lang="${2}";
shift 2;
echo 'main(){}' | LC_ALL=C ${myprog} ${@} -x ${lang} -o /dev/null - 2>&1 | egrep "unrecognized .*option" | egrep -o -- '('\''|\"|`)-.*' | sed -r 's/('\''|`|")//g; s/^/"/; s/$/"/';
echo 'main(){}' | LC_ALL=C ${myprog} ${@} -x ${lang} -o /dev/null - 2>&1 | egrep "unrecognised debug output" | egrep -o -- '('\''|\"|`).*' | sed -r 's/('\''|`|")//g; s/^/"-g/; s/$/"/'
}
get_install_abis ()
{
local order="";
if [[ -z ${MULTILIB_ABIS} ]]; then
echo "default";
return 0;
fi;
if [[ ${EMULTILIB_PKG} == "true" ]]; then
for x in ${MULTILIB_ABIS};
do
if [[ ${x} != "${DEFAULT_ABI}" ]]; then
hasq ${x} ${ABI_DENY} || ordera="${ordera} ${x}";
fi;
done;
hasq ${DEFAULT_ABI} ${ABI_DENY} || order="${ordera} ${DEFAULT_ABI}";
if [[ -n ${ABI_ALLOW} ]]; then
local ordera="";
for x in ${order};
do
if hasq ${x} ${ABI_ALLOW}; then
ordera="${ordera} ${x}";
fi;
done;
order=${ordera};
fi;
else
order=${DEFAULT_ABI};
fi;
if [[ -z ${order} ]]; then
die "The ABI list is empty. Are you using a proper multilib profile? Perhaps your USE flags or MULTILIB_ABIS are too restrictive for this package.";
fi;
echo ${order};
return 0
}
get_libdir ()
{
local CONF_LIBDIR;
if [ -n "${CONF_LIBDIR_OVERRIDE}" ]; then
echo ${CONF_LIBDIR_OVERRIDE};
else
get_abi_LIBDIR;
fi
}
get_libdir_override ()
{
if has_multilib_profile; then
eerror "get_libdir_override called, but it shouldn't be needed with the new multilib approach. Please file a bug at http://bugs.gentoo.org and assign it to eradicator@gentoo.org";
exit 1;
fi;
CONF_LIBDIR="$1";
CONF_LIBDIR_OVERRIDE="$1";
LIBDIR_default="$1"
}
get_libname ()
{
local libname;
local ver=$1;
case ${CHOST} in
*-darwin*)
libname="dylib"
;;
*)
libname="so"
;;
esac;
if [[ -z $@ ]]; then
echo ".${libname}";
else
for ver in "$@";
do
case ${CHOST} in
*-darwin*)
echo ".${ver}.${libname}"
;;
*)
echo ".${libname}.${ver}"
;;
esac;
done;
fi
}
get_ml_incdir ()
{
local dir=/usr/include;
if [[ $# -gt 0 ]]; then
incdir=$1;
shift;
fi;
if [[ -z "${MULTILIB_ABIS}" ]]; then
echo ${incdir};
return 0;
fi;
local abi=${ABI-${DEFAULT_ABI}};
if [[ $# -gt 0 ]]; then
abi=$1;
shift;
fi;
if [[ -d "${dir}/gentoo-multilib/${abi}" ]]; then
echo ${dir}/gentoo-multilib/${abi};
else
echo ${dir};
fi
}
get_mounts ()
{
local point= node= fs= opts= foo=;
if [[ $(uname -s) == "Linux" ]]; then
while read node point fs opts foo; do
echo "${point} ${node} ${fs} ${opts}";
done < /proc/mounts;
return;
fi;
local IFS=' ';
LC_ALL=C mount -p | while read node point fs foo; do
opts=${fs#* };
fs=${fs%% *};
echo "${point// /\040} ${node// /\040} ${fs%% *} ${opts// /\040}";
done
}
get_multilibdir ()
{
if has_multilib_profile; then
eerror "get_multilibdir called, but it shouldn't be needed with the new multilib approach. Please file a bug at http://bugs.gentoo.org and assign it to eradicator@gentoo.org";
exit 1;
fi;
echo ${CONF_MULTILIBDIR:=lib32}
}
has_hardened ()
{
ewarn "has_hardened: deprecated, please use gcc-specs-{relro,now}()!" 1>&2;
test_version_info Hardened && return 0;
[[ -f ${GCC_SPECS} && ${GCC_SPECS} != ${GCC_SPECS/hardened/} ]]
}
has_m32 ()
{
[ "$(tc-arch)" = "amd64" ] && has_multilib_profile && return 0;
local temp=$(emktemp);
echo "int main() { return(0); }" > "${temp}".c;
MY_CC=$(tc-getCC);
${MY_CC/ .*/} -m32 -o "$(emktemp)" "${temp}".c > /dev/null 2>&1;
local ret=$?;
rm -f "${temp}".c;
[[ ${ret} != 1 ]] && return 0;
return 1
}
has_m64 ()
{
local temp="$(emktemp)";
echo "int main() { return(0); }" > "${temp}".c;
MY_CC=$(tc-getCC);
${MY_CC/ .*/} -m64 -o "$(emktemp)" "${temp}".c > /dev/null 2>&1;
local ret=$?;
rm -f "${temp}".c;
[[ ${ret} != 1 ]] && return 0;
return 1
}
has_multilib_profile ()
{
[ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ]
}
has_pic ()
{
ewarn "has_pic: deprecated, please use gcc-specs-pie()!" 1>&2;
[[ ${CFLAGS/-fPIC} != ${CFLAGS} || ${CFLAGS/-fpic} != ${CFLAGS} ]] || gcc-specs-pie
}
has_pie ()
{
ewarn "has_pie: deprecated, please use gcc-specs-pie()!" 1>&2;
[[ ${CFLAGS/-fPIE} != ${CFLAGS} || ${CFLAGS/-fpie} != ${CFLAGS} ]] || gcc-specs-pie
}
has_ssp ()
{
ewarn "has_ssp: deprecated, please use gcc-specs-ssp()!" 1>&2;
[[ ${CFLAGS/-fstack-protector} != ${CFLAGS} || -n $(echo | $(tc-getCC) ${CFLAGS} -E -dM - | grep __SSP__) ]] || gcc-specs-ssp
}
has_ssp_all ()
{
ewarn "has_ssp_all: deprecated, please use gcc-specs-ssp()!" 1>&2;
[[ ${CFLAGS/-fstack-protector-all} != ${CFLAGS} || -n $(echo | $(tc-getCC) ${CFLAGS} -E -dM - | grep __SSP_ALL__) ]] || gcc-specs-ssp-all
}
is-flag ()
{
is-flagq "$@" && echo true
}
is-flagq ()
{
[[ -n $2 ]] && die "Usage: is-flag <flag>";
_is_flagq CFLAGS $1 || _is_flagq CXXFLAGS $1
}
is-ldflag ()
{
is-ldflagq "$@" && echo true
}
is-ldflagq ()
{
[[ -n $2 ]] && die "Usage: is-ldflag <flag>";
_is_flagq LDFLAGS $1
}
is-login-disabled ()
{
shell=$(egetshell "$1");
case ${shell} in
/bin/false | /usr/bin/false | /sbin/nologin | /usr/sbin/nologin)
return 0
;;
*)
return 1
;;
esac
}
is_final_abi ()
{
has_multilib_profile || return 0;
local ALL_ABIS=$(get_install_abis);
local LAST_ABI=${ALL_ABIS/* /};
[[ ${LAST_ABI} == ${ABI} ]]
}
make_desktop_entry ()
{
[[ -z $1 ]] && eerror "make_desktop_entry: You must specify the executable" && return 1;
local exec=${1};
local name=${2:-${PN}};
local icon=${3:-${PN}};
local type=${4};
local path=${5};
if [[ -z ${type} ]]; then
local catmaj=${CATEGORY%%-*};
local catmin=${CATEGORY##*-};
case ${catmaj} in
app)
case ${catmin} in
accessibility)
type=Accessibility
;;
admin)
type=System
;;
antivirus)
type=System
;;
arch)
type=Archiving
;;
backup)
type=Archiving
;;
cdr)
type=DiscBurning
;;
dicts)
type=Dictionary
;;
doc)
type=Documentation
;;
editors)
type=TextEditor
;;
emacs)
type=TextEditor
;;
emulation)
type=Emulator
;;
laptop)
type=HardwareSettings
;;
office)
type=Office
;;
pda)
type=PDA
;;
vim)
type=TextEditor
;;
xemacs)
type=TextEditor
;;
*)
type=
;;
esac
;;
dev)
type="Development"
;;
games)
case ${catmin} in
action | fps)
type=ActionGame
;;
arcade)
type=ArcadeGame
;;
board)
type=BoardGame
;;
emulation)
type=Emulator
;;
kids)
type=KidsGame
;;
puzzle)
type=LogicGame
;;
roguelike)
type=RolePlaying
;;
rpg)
type=RolePlaying
;;
simulation)
type=Simulation
;;
sports)
type=SportsGame
;;
strategy)
type=StrategyGame
;;
*)
type=
;;
esac;
type="Game;${type}"
;;
gnome)
type="Gnome;GTK"
;;
kde)
type="KDE;Qt"
;;
mail)
type="Network;Email"
;;
media)
case ${catmin} in
gfx)
type=Graphics
;;
radio)
type=Tuner
;;
sound)
type=Audio
;;
tv)
type=TV
;;
video)
type=Video
;;
*)
type=
;;
esac;
type="AudioVideo;${type}"
;;
net)
case ${catmin} in
dialup)
type=Dialup
;;
ftp)
type=FileTransfer
;;
im)
type=InstantMessaging
;;
irc)
type=IRCClient
;;
mail)
type=Email
;;
news)
type=News
;;
nntp)
type=News
;;
p2p)
type=FileTransfer
;;
*)
type=
;;
esac;
type="Network;${type}"
;;
sci)
case ${catmin} in
astro*)
type=Astronomy
;;
bio*)
type=Biology
;;
calc*)
type=Calculator
;;
chem*)
type=Chemistry
;;
elec*)
type=Electronics
;;
geo*)
type=Geology
;;
math*)
type=Math
;;
physics)
type=Physics
;;
visual*)
type=DataVisualization
;;
*)
type=
;;
esac;
type="Science;${type}"
;;
sys)
type="System"
;;
www)
case ${catmin} in
client)
type=WebBrowser
;;
*)
type=
;;
esac;
type="Network"
;;
*)
type=
;;
esac;
fi;
if [ "${SLOT}" == "0" ]; then
local desktop_name="${PN}";
else
local desktop_name="${PN}-${SLOT}";
fi;
local desktop="${T}/$(echo ${exec} | sed 's:[[:space:]/:]:_:g')-${desktop_name}.desktop";
cat > "${desktop}" <<-EOF
[Desktop Entry]
Version=1.0
Name=${name}
Type=Application
Comment=${DESCRIPTION}
Exec=${exec}
TryExec=${exec%% *}
Icon=${icon}
Categories=${type};
EOF
[[ -n ${path} ]] && echo "Path=${path}" >> "${desktop}";
( insinto /usr/share/applications;
doins "${desktop}" )
}
make_session_desktop ()
{
[[ -z $1 ]] && eerror "make_session_desktop: You must specify the title" && return 1;
[[ -z $2 ]] && eerror "make_session_desktop: You must specify the command" && return 1;
local title=$1;
local command=$2;
local desktop=${T}/${wm}.desktop;
cat > "${desktop}" <<-EOF
[Desktop Entry]
Name=${title}
Comment=This session logs you into ${title}
Exec=${command}
TryExec=${command}
Type=Application
EOF
( insinto /usr/share/xsessions;
doins "${desktop}" )
}
make_wrapper ()
{
local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5;
local tmpwrapper=$(emktemp);
cat > "${tmpwrapper}" <<EOF
#!/bin/sh
cd "${chdir:-.}"
if [ -n "${libdir}" ] ; then
if [ "\${LD_LIBRARY_PATH+set}" = "set" ] ; then
export LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}:${libdir}"
else
export LD_LIBRARY_PATH="${libdir}"
fi
fi
exec ${bin} "\$@"
EOF
chmod go+rx "${tmpwrapper}";
if [[ -n ${path} ]]; then
( exeinto "${path}";
newexe "${tmpwrapper}" "${wrapper}" ) || die;
else
newbin "${tmpwrapper}" "${wrapper}" || die;
fi
}
multilib_env ()
{
local CTARGET=${1:-${CTARGET}};
case ${CTARGET} in
x86_64*)
export CFLAGS_x86=${CFLAGS_x86--m32};
export CHOST_x86=${CTARGET/x86_64/i686};
export CTARGET_x86=${CHOST_x86};
export CDEFINE_x86="__i386__";
export LIBDIR_x86="lib";
export CFLAGS_amd64=${CFLAGS_amd64--m64};
export CHOST_amd64=${CTARGET};
export CTARGET_amd64=${CHOST_amd64};
export CDEFINE_amd64="__x86_64__";
export LIBDIR_amd64="lib64";
export MULTILIB_ABIS="amd64 x86";
export DEFAULT_ABI="amd64"
;;
mips64*)
export CFLAGS_o32=${CFLAGS_o32--mabi=32};
export CHOST_o32=${CTARGET/mips64/mips};
export CTARGET_o32=${CHOST_o32};
export CDEFINE_o32="_MIPS_SIM == _ABIO32";
export LIBDIR_o32="lib";
export CFLAGS_n32=${CFLAGS_n32--mabi=n32};
export CHOST_n32=${CTARGET};
export CTARGET_n32=${CHOST_n32};
export CDEFINE_n32="_MIPS_SIM == _ABIN32";
export LIBDIR_n32="lib32";
export CFLAGS_n64=${CFLAGS_n64--mabi=64};
export CHOST_n64=${CTARGET};
export CTARGET_n64=${CHOST_n64};
export CDEFINE_n64="_MIPS_SIM == _ABI64";
export LIBDIR_n64="lib64";
export MULTILIB_ABIS="n64 n32 o32";
export DEFAULT_ABI="n32"
;;
powerpc64*)
export CFLAGS_ppc=${CFLAGS_ppc--m32};
export CHOST_ppc=${CTARGET/powerpc64/powerpc};
export CTARGET_ppc=${CHOST_ppc};
export CDEFINE_ppc="!__powerpc64__";
export LIBDIR_ppc="lib";
export CFLAGS_ppc64=${CFLAGS_ppc64--m64};
export CHOST_ppc64=${CTARGET};
export CTARGET_ppc64=${CHOST_ppc64};
export CDEFINE_ppc64="__powerpc64__";
export LIBDIR_ppc64="lib64";
export MULTILIB_ABIS="ppc64 ppc";
export DEFAULT_ABI="ppc64"
;;
s390x*)
export CFLAGS_s390=${CFLAGS_s390--m31};
export CHOST_s390=${CTARGET/s390x/s390};
export CTARGET_s390=${CHOST_s390};
export CDEFINE_s390="!__s390x__";
export LIBDIR_s390="lib";
export CFLAGS_s390x=${CFLAGS_s390x--m64};
export CHOST_s390x=${CTARGET};
export CTARGET_s390x=${CHOST_s390x};
export CDEFINE_s390x="__s390x__";
export LIBDIR_s390x="lib64";
export MULTILIB_ABIS="s390x s390";
export DEFAULT_ABI="s390x"
;;
sparc64*)
export CFLAGS_sparc32=${CFLAGS_sparc32--m32};
export CHOST_sparc32=${CTARGET/sparc64/sparc};
export CTARGET_sparc32=${CHOST_sparc32};
export CDEFINE_sparc32="!__arch64__";
export LIBDIR_sparc32="lib";
export CFLAGS_sparc64=${CFLAGS_sparc64--m64};
export CHOST_sparc64=${CTARGET};
export CTARGET_sparc64=${CHOST_sparc64};
export CDEFINE_sparc64="__arch64__";
export LIBDIR_sparc64="lib64";
export MULTILIB_ABIS="sparc64 sparc32";
export DEFAULT_ABI="sparc64"
;;
*)
export MULTILIB_ABIS="default";
export DEFAULT_ABI="default"
;;
esac
}
multilib_toolchain_setup ()
{
export ABI=$1;
if has_version app-admin/eselect-compiler; then
export LD="ld $(get_abi_LDFLAGS $1)";
export AS="as $(get_abi_ASFLAGS $1)";
export CHOST=$(get_abi_CHOST $1);
export CBUILD=$(get_abi_CHOST $1);
else
tc-export CC;
fi
}
newicon ()
{
( insinto /usr/share/pixmaps;
newins "$@" )
}
newmenu ()
{
( insinto /usr/share/applications;
newins "$@" )
}
number_abis ()
{
get_install_abis | wc -w
}
pkg_nofetch ()
{
[ -z "${SRC_URI}" ] && return;
echo "!!! The following are listed in SRC_URI for ${PN}:";
local x;
for x in $(echo ${SRC_URI});
do
echo "!!! ${x}";
done
}
pkg_postinst ()
{
elog "~/.wine/config is now deprecated. For configuration either use";
elog "winecfg or regedit HKCU\\Software\\Wine"
}
pkg_setup ()
{
use alsa || return 0;
if ! built_with_use --missing true media-libs/alsa-lib midi; then
eerror "You must build media-libs/alsa-lib with USE=midi";
die "please re-emerge media-libs/alsa-lib with USE=midi";
fi
}
prep_ml_includes ()
{
if [[ $(number_abis) -gt 1 ]]; then
local dir;
local dirs;
local base;
if [[ $# -eq 0 ]]; then
dirs=/usr/include;
else
dirs="$@";
fi;
for dir in ${dirs};
do
base=${T}/gentoo-multilib/${dir}/gentoo-multilib;
mkdir -p "${base}";
[[ -d ${base}/${ABI} ]] && rm -rf "${base}/${ABI}";
mv "${D}/${dir}" "${base}/${ABI}";
done;
if is_final_abi; then
base=${T}/gentoo-multilib;
pushd "${base}";
find . | tar -c -T - -f - | tar -x --no-same-owner -f - -C ${D};
popd;
set --;
for dir in ${dirs};
do
set -- "$@" "${dir}";
local abi;
for abi in $(get_install_abis);
do
set -- "$@" "$(get_abi_CDEFINE ${abi}):${dir}/gentoo-multilib/${abi}";
done;
create_ml_includes "$@";
done;
fi;
fi
}
preserve_old_lib ()
{
if [[ ${EBUILD_PHASE} != "preinst" ]]; then
eerror "preserve_old_lib() must be called from pkg_preinst() only";
die "Invalid preserve_old_lib() usage";
fi;
[[ -z $1 ]] && die "Usage: preserve_old_lib <library to preserve> [more libraries to preserve]";
has preserve-libs ${FEATURES} && return 0;
local lib dir;
for lib in "$@";
do
[[ -e ${ROOT}/${lib} ]] || continue;
dir=${lib%/*};
dodir ${dir} || die "dodir ${dir} failed";
cp "${ROOT}"/${lib} "${D}"/${lib} || die "cp ${lib} failed";
touch "${D}"/${lib};
done
}
preserve_old_lib_notify ()
{
if [[ ${EBUILD_PHASE} != "postinst" ]]; then
eerror "preserve_old_lib_notify() must be called from pkg_postinst() only";
die "Invalid preserve_old_lib_notify() usage";
fi;
has preserve-libs ${FEATURES} && return 0;
local lib notice=0;
for lib in "$@";
do
[[ -e ${ROOT}/${lib} ]] || continue;
if [[ ${notice} -eq 0 ]]; then
notice=1;
ewarn "Old versions of installed libraries were detected on your system.";
ewarn "In order to avoid breaking packages that depend on these old libs,";
ewarn "the libraries are not being removed. You need to run revdep-rebuild";
ewarn "in order to remove these old dependencies. If you do not have this";
ewarn "helper program, simply emerge the 'gentoolkit' package.";
ewarn;
fi;
ewarn " # revdep-rebuild --library ${lib##*/}";
done;
if [[ ${notice} -eq 1 ]]; then
ewarn;
ewarn "Once you've finished running revdep-rebuild, it should be safe to";
ewarn "delete the old libraries. Here is a copy & paste for the lazy:";
for lib in "$@";
do
ewarn " # rm '${lib}'";
done;
fi
}
raw-ldflags ()
{
local x input="$@";
[[ -z ${input} ]] && input=${LDFLAGS};
set --;
for x in ${input};
do
x=${x#-Wl,};
set -- "$@" ${x//,/ };
done;
echo "$@"
}
remove_flag ()
{
local remove="${1}";
shift;
while [[ -n "${1}" ]]; do
[[ "${1}" != "${remove}" ]] && echo -n "${1} ";
shift;
done
}
replace-cpu-flags ()
{
local newcpu="$#";
newcpu="${!newcpu}";
while [ $# -gt 1 ]; do
replace-flags "-march=${1}" "-march=${newcpu}";
replace-flags "-mcpu=${1}" "-mcpu=${newcpu}";
replace-flags "-mtune=${1}" "-mtune=${newcpu}";
shift;
done;
return 0
}
replace-flags ()
{
[[ $# != 2 ]] && echo && eerror "Usage: replace-flags <old flag> <new flag>" && die "replace-flags takes 2 arguments, not $#";
local f fset;
declare -a new_CFLAGS new_CXXFLAGS;
for fset in CFLAGS CXXFLAGS;
do
for f in ${!fset};
do
[[ ${f} == ${1} ]] && f=${2};
eval new_${fset}\[\${\#new_${fset}\[@]}]=\${f};
done;
eval export ${fset}=\${new_${fset}\[*]};
done;
return 0
}
replace-sparc64-flags ()
{
local SPARC64_CPUS="ultrasparc3 ultrasparc v9";
if [ "${CFLAGS/mtune}" != "${CFLAGS}" ]; then
for x in ${SPARC64_CPUS};
do
CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8}";
done;
else
for x in ${SPARC64_CPUS};
do
CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}";
done;
fi;
if [ "${CXXFLAGS/mtune}" != "${CXXFLAGS}" ]; then
for x in ${SPARC64_CPUS};
do
CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8}";
done;
else
for x in ${SPARC64_CPUS};
do
CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}";
done;
fi;
export CFLAGS CXXFLAGS
}
seq ()
{
local p=$(type -P seq);
case $# in
1)
min=1 max=$1 step=1
;;
2)
min=$1 max=$2 step=1
;;
3)
min=$1 max=$3 step=$2
;;
*)
die "seq called with wrong number of arguments"
;;
esac;
if [[ -z ${p} ]]; then
local reps;
if [[ ${step} != 0 ]]; then
reps=$(( ($max-$min) / $step +1 ));
else
reps=0;
fi;
jot $reps $min $max $step;
else
"${p}" $min $step $max;
fi
}
setup-allowed-flags ()
{
if [[ -z ${ALLOWED_FLAGS} ]]; then
export ALLOWED_FLAGS="-pipe";
export ALLOWED_FLAGS="${ALLOWED_FLAGS} -O -O0 -O1 -O2 -mcpu -march -mtune";
export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fstack-protector -fstack-protector-all";
export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fbounds-checking";
export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-PIE -fno-pie -fno-unit-at-a-time";
export ALLOWED_FLAGS="${ALLOWED_FLAGS} -g -g[0-9] -ggdb -ggdb[0-9] -gstabs -gstabs+";
export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-ident";
export ALLOWED_FLAGS="${ALLOWED_FLAGS} -W* -w";
fi;
ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-stack-protector -fno-stack-protector-all -fno-strict-aliasing -fno-bounds-checking";
ALLOWED_FLAGS="${ALLOWED_FLAGS} -mregparm -mno-app-regs -mapp-regs -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-3dnow -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 -msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu -mieee -mieee-with-inexact -mschedule -mtls-direct-seg-refs -mno-tls-direct-seg-refs -mflat -mno-flat -mno-faster-structs -mfaster-structs -m32 -m64 -mabi -mlittle-endian -mbig-endian -EL -EB -fPIC -mlive-g0 -mcmodel -mstack-bias -mno-stack-bias -msecure-plt -D*";
export UNSTABLE_FLAGS="-Os -O3 -freorder-blocks";
return 0
}
src_compile ()
{
export LDCONFIG=/bin/true;
use esd || export ac_cv_path_ESDCONFIG="";
use scanner || export ac_cv_path_sane_devel="no";
config_cache jack jack/jack.h;
config_cache cups cups/cups.h;
config_cache alsa alsa/asoundlib.h sys/asoundlib.h asound:snd_pcm_open;
config_cache nas audio/audiolib.h audio/soundlib.h;
config_cache xml libxml/parser.h libxslt/pattern.h libxslt/transform.h;
config_cache ldap ldap.h lber.h;
config_cache dbus dbus/dbus.h;
config_cache hal hal/libhal.h;
config_cache jpeg jpeglib.h;
config_cache oss sys/soundcard.h machine/soundcard.h soundcard.h;
config_cache lcms lcms.h;
strip-flags;
use amd64 && multilib_toolchain_setup x86;
econf --sysconfdir=/etc/wine $(use_with ncurses curses) $(use_with opengl) $(use_with X x) || die "configure failed";
emake -j1 depend || die "depend";
emake all || die "all"
}
src_install ()
{
emake DESTDIR="${D}" install || die;
dodoc ANNOUNCE AUTHORS ChangeLog README;
if use gecko; then
insinto /usr/share/wine/gecko;
doins "${DISTDIR}"/wine_gecko-*.cab || die;
fi
}
src_test ()
{
if emake -j1 check -n >&/dev/null; then
vecho ">>> Test phase [check]: ${CATEGORY}/${PF}";
if ! emake -j1 check; then
hasq test $FEATURES && die "Make check failed. See above for details.";
hasq test $FEATURES || eerror "Make check failed. See above for details.";
fi;
else
if emake -j1 test -n >&/dev/null; then
vecho ">>> Test phase [test]: ${CATEGORY}/${PF}";
if ! emake -j1 test; then
hasq test $FEATURES && die "Make test failed. See above for details.";
hasq test $FEATURES || eerror "Make test failed. See above for details.";
fi;
else
vecho ">>> Test phase [none]: ${CATEGORY}/${PF}";
fi;
fi
}
src_unpack ()
{
unpack wine-${PV}.tar.bz2;
cd "${S}";
sed -i '/^UPDATE_DESKTOP_DATABASE/s:=.*:=true:' tools/Makefile.in;
epatch "${FILESDIR}"/wine-gentoo-no-ssp.patch;
sed -i '/^MimeType/d' tools/wine.desktop || die
}
strip-flags ()
{
local x y flag NEW_CFLAGS NEW_CXXFLAGS;
setup-allowed-flags;
local NEW_CFLAGS="";
local NEW_CXXFLAGS="";
if has ~$(tc-arch) ${ACCEPT_KEYWORDS}; then
ALLOWED_FLAGS="${ALLOWED_FLAGS} ${UNSTABLE_FLAGS}";
fi;
set -f;
for x in ${CFLAGS};
do
for y in ${ALLOWED_FLAGS};
do
flag=${x%%=*};
if [ "${flag%%${y}}" = "" ]; then
NEW_CFLAGS="${NEW_CFLAGS} ${x}";
break;
fi;
done;
done;
for x in ${CXXFLAGS};
do
for y in ${ALLOWED_FLAGS};
do
flag=${x%%=*};
if [ "${flag%%${y}}" = "" ]; then
NEW_CXXFLAGS="${NEW_CXXFLAGS} ${x}";
break;
fi;
done;
done;
if [ "${CFLAGS/-O}" != "${CFLAGS}" -a "${NEW_CFLAGS/-O}" = "${NEW_CFLAGS}" ]; then
NEW_CFLAGS="${NEW_CFLAGS} -O2";
fi;
if [ "${CXXFLAGS/-O}" != "${CXXFLAGS}" -a "${NEW_CXXFLAGS/-O}" = "${NEW_CXXFLAGS}" ]; then
NEW_CXXFLAGS="${NEW_CXXFLAGS} -O2";
fi;
set +f;
export CFLAGS="${NEW_CFLAGS}";
export CXXFLAGS="${NEW_CXXFLAGS}";
return 0
}
strip-linguas ()
{
local ls newls nols;
if [[ $1 == "-i" ]] || [[ $1 == "-u" ]]; then
local op=$1;
shift;
ls=$(find "$1" -name '*.po' -exec basename {} .po \;);
shift;
local d f;
for d in "$@";
do
if [[ ${op} == "-u" ]]; then
newls=${ls};
else
newls="";
fi;
for f in $(find "$d" -name '*.po' -exec basename {} .po \;);
do
if [[ ${op} == "-i" ]]; then
hasq ${f} ${ls} && newls="${newls} ${f}";
else
hasq ${f} ${ls} || newls="${newls} ${f}";
fi;
done;
ls=${newls};
done;
else
ls="$@";
fi;
nols="";
newls="";
for f in ${LINGUAS};
do
if hasq ${f} ${ls}; then
newls="${newls} ${f}";
else
nols="${nols} ${f}";
fi;
done;
[[ -n ${nols} ]] && ewarn "Sorry, but ${PN} does not support the LINGUAs:" ${nols};
export LINGUAS=${newls:1}
}
strip-unsupported-flags ()
{
export CFLAGS=$(test-flags-CC ${CFLAGS});
export CXXFLAGS=$(test-flags-CXX ${CXXFLAGS})
}
tc-arch ()
{
tc-ninja_magic_to_arch portage "$@"
}
tc-arch-kernel ()
{
tc-ninja_magic_to_arch kern "$@"
}
tc-endian ()
{
local host=$1;
[[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
host=${host%%-*};
case ${host} in
alpha*)
echo big
;;
arm*b*)
echo big
;;
arm*)
echo little
;;
cris*)
echo little
;;
hppa*)
echo big
;;
i?86*)
echo little
;;
ia64*)
echo little
;;
m68*)
echo big
;;
mips*l*)
echo little
;;
mips*)
echo big
;;
powerpc*)
echo big
;;
s390*)
echo big
;;
sh*b*)
echo big
;;
sh*)
echo little
;;
sparc*)
echo big
;;
x86_64*)
echo little
;;
*)
echo wtf
;;
esac
}
tc-export ()
{
local var;
for var in "$@";
do
eval tc-get${var} > /dev/null;
done
}
tc-getAR ()
{
tc-getPROG AR ar "$@"
}
tc-getAS ()
{
tc-getPROG AS as "$@"
}
tc-getBUILD_CC ()
{
local v;
for v in CC_FOR_BUILD BUILD_CC HOSTCC;
do
if [[ -n ${!v} ]]; then
export BUILD_CC=${!v};
echo "${!v}";
return 0;
fi;
done;
local search=;
if [[ -n ${CBUILD} ]]; then
search=$(type -p ${CBUILD}-gcc);
search=${search##*/};
fi;
search=${search:-gcc};
export BUILD_CC=${search};
echo "${search}"
}
tc-getCC ()
{
tc-getPROG CC gcc "$@"
}
tc-getCPP ()
{
tc-getPROG CPP cpp "$@"
}
tc-getCXX ()
{
tc-getPROG CXX g++ "$@"
}
tc-getF77 ()
{
tc-getPROG F77 f77 "$@"
}
tc-getF90 ()
{
tc-getPROG F90 gfortran "$@"
}
tc-getFORTRAN ()
{
tc-getPROG FORTRAN gfortran "$@"
}
tc-getGCJ ()
{
tc-getPROG GCJ gcj "$@"
}
tc-getLD ()
{
tc-getPROG LD ld "$@"
}
tc-getNM ()
{
tc-getPROG NM nm "$@"
}
tc-getPROG ()
{
local var=$1;
local prog=$2;
if [[ -n ${!var} ]]; then
echo "${!var}";
return 0;
fi;
local search=;
[[ -n $3 ]] && search=$(type -p "$3-${prog}");
[[ -z ${search} && -n ${CHOST} ]] && search=$(type -p "${CHOST}-${prog}");
[[ -n ${search} ]] && prog=${search##*/};
export ${var}=${prog};
echo "${!var}"
}
tc-getRANLIB ()
{
tc-getPROG RANLIB ranlib "$@"
}
tc-getSTRIP ()
{
tc-getPROG STRIP strip "$@"
}
tc-is-cross-compiler ()
{
return $([[ ${CBUILD:-${CHOST}} != ${CHOST} ]])
}
tc-is-softfloat ()
{
case ${CTARGET} in
bfin* | h8300*)
echo "only"
;;
*)
[[ ${CTARGET//_/-} == *-softfloat-* ]] && echo "yes" || echo "no"
;;
esac
}
tc-ninja_magic_to_arch ()
{
function ninj ()
{
[[ ${type} == "kern" ]] && echo $1 || echo $2
};
local type=$1;
local host=$2;
[[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
case ${host} in
alpha*)
echo alpha
;;
arm*)
echo arm
;;
avr*)
ninj avr32 avr
;;
bfin*)
ninj blackfin bfin
;;
cris*)
echo cris
;;
hppa*)
ninj parisc hppa
;;
i?86*)
if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -lt $(KV_to_int 2.6.24) ]]; then
echo i386;
else
echo x86;
fi
;;
ia64*)
echo ia64
;;
m68*)
echo m68k
;;
mips*)
echo mips
;;
nios2*)
echo nios2
;;
nios*)
echo nios
;;
powerpc*)
if [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.6.16) ]] && [[ ${type} == "kern" ]]; then
echo powerpc;
else
if [[ $(KV_to_int ${KV}) -eq $(KV_to_int 2.6.15) ]] && [[ ${type} == "kern" ]]; then
if [[ ${host} == powerpc64* ]] || [[ ${PROFILE_ARCH} == "ppc64" ]]; then
echo powerpc;
else
echo ppc;
fi;
else
if [[ ${host} == powerpc64* ]]; then
echo ppc64;
else
if [[ ${PROFILE_ARCH} == "ppc64" ]]; then
ninj ppc64 ppc;
else
echo ppc;
fi;
fi;
fi;
fi
;;
s390*)
echo s390
;;
sh64*)
ninj sh64 sh
;;
sh*)
echo sh
;;
sparc64*)
ninj sparc64 sparc
;;
sparc*)
[[ ${PROFILE_ARCH} == "sparc64" ]] && ninj sparc64 sparc || echo sparc
;;
vax*)
echo vax
;;
x86_64*)
if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.6.24) ]]; then
echo x86;
else
ninj x86_64 amd64;
fi
;;
*)
echo unknown
;;
esac
}
test-flag-CC ()
{
test-flag-PROG "CC" "$1"
}
test-flag-CXX ()
{
test-flag-PROG "CXX" "$1"
}
test-flag-PROG ()
{
local comp=$1;
local flags="$2";
[[ -z ${comp} || -z ${flags} ]] && return 1;
local PROG=$(tc-get${comp});
${PROG} ${flags} -S -o /dev/null -xc /dev/null > /dev/null 2>&1
}
test-flags ()
{
test-flags-CC "$@"
}
test-flags-CC ()
{
test-flags-PROG "CC" "$@"
}
test-flags-CXX ()
{
test-flags-PROG "CXX" "$@"
}
test-flags-PROG ()
{
local comp=$1;
local flags;
local x;
shift;
[[ -z ${comp} ]] && return 1;
x="";
for x in "$@";
do
test-flag-${comp} "${x}" && flags="${flags}${flags:+ }${x}";
done;
echo "${flags}";
[[ -n ${flags} ]]
}
test_flag ()
{
ewarn "test_flag: deprecated, please use test-flags()!" 1>&2;
test-flags-CC "$@"
}
test_version_info ()
{
if [[ $($(tc-getCC) --version 2>&1) == *$1* ]]; then
return 0;
else
return 1;
fi
}
treecopy ()
{
dest=${!#};
files_count=$#;
while (( $# > 1 )); do
dirstruct=$(dirname "$1");
mkdir -p "${dest}/${dirstruct}";
cp -pPR "$1" "${dest}/${dirstruct}";
shift;
done
}
unpack_makeself ()
{
local src_input=${1:-${A}};
local src=$(find_unpackable_file "${src_input}");
local skip=$2;
local exe=$3;
[[ -z ${src} ]] && die "Could not locate source for '${src_input}'";
local shrtsrc=$(basename "${src}");
echo ">>> Unpacking ${shrtsrc} to ${PWD}";
if [[ -z ${skip} ]]; then
local ver=$(grep -a '#.*Makeself' "${src}" | awk '{print $NF}');
local skip=0;
exe=tail;
case ${ver} in
1.5.* | 1.6.0-nv)
skip=$(grep -a ^skip= "${src}" | cut -d= -f2)
;;
2.0 | 2.0.1)
skip=$(grep -a ^' 'tail "${src}" | awk '{print $2}' | cut -b2-)
;;
2.1.1)
skip=$(grep -a ^offset= "${src}" | awk '{print $2}' | cut -b2-);
let skip="skip + 1"
;;
2.1.2)
skip=$(grep -a ^offset= "${src}" | awk '{print $3}' | head -n 1);
let skip="skip + 1"
;;
2.1.3)
skip=`grep -a ^offset= "${src}" | awk '{print $3}'`;
let skip="skip + 1"
;;
2.1.4 | 2.1.5)
skip=$(grep -a offset=.*head.*wc "${src}" | awk '{print $3}' | head -n 1);
skip=$(head -n ${skip} "${src}" | wc -c);
exe="dd"
;;
*)
eerror "I'm sorry, but I was unable to support the Makeself file.";
eerror "The version I detected was '${ver}'.";
eerror "Please file a bug about the file ${shrtsrc} at";
eerror "http://bugs.gentoo.org/ so that support can be added.";
die "makeself version '${ver}' not supported"
;;
esac;
debug-print "Detected Makeself version ${ver} ... using ${skip} as offset";
fi;
case ${exe} in
tail)
exe="tail -n +${skip} '${src}'"
;;
dd)
exe="dd ibs=${skip} skip=1 obs=1024 conv=sync if='${src}'"
;;
*)
die "makeself cant handle exe '${exe}'"
;;
esac;
local tmpfile=$(emktemp);
eval ${exe} 2> /dev/null | head -c 512 > "${tmpfile}";
local filetype=$(file -b "${tmpfile}");
case ${filetype} in
*tar\ archive*)
eval ${exe} | tar --no-same-owner -xf -
;;
bzip2*)
eval ${exe} | bzip2 -dc | tar --no-same-owner -xf -
;;
gzip*)
eval ${exe} | tar --no-same-owner -xzf -
;;
compress*)
eval ${exe} | gunzip | tar --no-same-owner -xf -
;;
*)
eerror "Unknown filetype \"${filetype}\" ?";
false
;;
esac;
_pipestatus="${PIPESTATUS[*]}";
[[ "${_pipestatus// /}" -eq 0 ]] || die "failure unpacking (${filetype}) makeself ${shrtsrc} ('${ver}' +${skip})"
}
unpack_pdv ()
{
local src=$(find_unpackable_file "$1");
local sizeoff_t=$2;
[[ -z ${src} ]] && die "Could not locate source for '$1'";
[[ -z ${sizeoff_t} ]] && die "No idea what off_t size was used for this pdv :(";
local shrtsrc=$(basename "${src}");
echo ">>> Unpacking ${shrtsrc} to ${PWD}";
local metaskip=$(tail -c ${sizeoff_t} "${src}" | hexdump -e \"%i\");
local tailskip=$(tail -c $((${sizeoff_t}*2)) "${src}" | head -c ${sizeoff_t} | hexdump -e \"%i\");
local metafile=$(emktemp);
tail -c +$((${metaskip}+1)) "${src}" > "${metafile}";
local datafile=$(tail -c +$((${metaskip}+1)) "${src}" | strings | head -n 1);
datafile=$(basename "${datafile}");
local tmpfile=$(emktemp);
tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c 512 > ${tmpfile};
local iscompressed=$(file -b "${tmpfile}");
if [[ ${iscompressed:0:8} == "compress" ]]; then
iscompressed=1;
mv ${tmpfile}{,.Z};
gunzip ${tmpfile};
else
iscompressed=0;
fi;
local istar=$(file -b "${tmpfile}");
if [[ ${istar:0:9} == "POSIX tar" ]]; then
istar=1;
else
istar=0;
fi;
if [ ${iscompressed} -eq 1 ]; then
if [ ${istar} -eq 1 ]; then
tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | tar -xzf -;
else
tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | gzip -dc > ${datafile};
fi;
else
if [ ${istar} -eq 1 ]; then
tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | tar --no-same-owner -xf -;
else
tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) > ${datafile};
fi;
fi;
true
}
validate_desktop_entries ()
{
if [[ -x /usr/bin/desktop-file-validate ]]; then
einfo "Checking desktop entry validity";
local directories="";
for d in /usr/share/applications $@;
do
[[ -d ${D}${d} ]] && directories="${directories} ${D}${d}";
done;
if [[ -n ${directories} ]]; then
for FILE in $(find ${directories} -name "*\.desktop" -not -path '*.hidden*' | sort -u 2>/dev/null);
do
local temp=$(desktop-file-validate ${FILE} | grep -v "warning:" | sed -e "s|error: ||" -e "s|${FILE}:|--|g" );
[[ -n $temp ]] && elog ${temp/--/${FILE/${D}/}:};
done;
fi;
echo "";
else
einfo "Passing desktop entry validity check. Install dev-util/desktop-file-utils, if you want to help to improve Gentoo.";
fi
}
declare -x ABI="amd64"
declare -x ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci"
declare -x ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route share shm softvol"
declare -x ANT_HOME="/usr/share/ant-core"
declare -x APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias"
declare -x ARCH="amd64"
declare -x ASFLAGS_x86="--32"
declare -x CBUILD="x86_64-pc-linux-gnu"
declare -x CDEFINE_amd64="__x86_64__"
declare -x CDEFINE_default="__unix__"
declare -x CDEFINE_x86="__i386__"
declare -x CFLAGS="-O2 -march=x86-64 -pipe"
declare -x CFLAGS_default=""
declare -x CFLAGS_x86="-m32 -L/emul/linux/x86/lib -L/emul/linux/x86/usr/lib"
declare -x CHOST="x86_64-pc-linux-gnu"
declare -x CHOST_amd64="x86_64-pc-linux-gnu"
declare -x CHOST_default="x86_64-pc-linux-gnu"
declare -x CHOST_x86="i686-pc-linux-gnu"
declare -x CLASSPATH="."
declare -x CTARGET_default="x86_64-pc-linux-gnu"
declare -x CVS_RSH="ssh"
declare -x CXXFLAGS="-O2 -march=x86-64 -pipe"
declare -x DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-EIGWGb2Fh7,guid=33779f9781e2e3c7415cd65f47d5750c"
declare -x DBUS_SESSION_BUS_PID="25726"
declare -x DCCC_PATH="/usr/lib/distcc/bin"
declare -x DEFAULT_ABI="amd64"
declare -x DESKTOP_SESSION="gnome"
declare -x DESKTOP_STARTUP_ID=""
declare -x DESTTREE="/usr"
declare -x DIROPTIONS="-m0755"
declare -x ELIBC="glibc"
declare -x EXEOPTIONS="-m0755"
declare -x FEATURES="distlocks metadata-transfer parallel-fetch sandbox sfperms strict unmerge-orphans userfetch"
declare -x FLTK_DOCDIR="/usr/share/doc/fltk-1.1.7/html"
declare -x GCC_SPECS=""
declare -x GDK_USE_XFT="1"
declare -x GDMSESSION="gnome"
declare -x GDM_LANG="en_US.UTF-8"
declare -x GDM_XSERVER_LOCATION="local"
declare -x GENERATION="2"
declare -x GNOME_DESKTOP_SESSION_ID="Default"
declare -x GNOME_KEYRING_SOCKET="/tmp/keyring-Q8iTkX/socket"
declare -x GTK_MODULES="gnomebreakpad"
declare -x GTK_RC_FILES="/etc/gtk/gtkrc:/home/bob/.gtkrc-1.2-gnome2"
declare -x GUILE_LOAD_PATH="/usr/share/guile/1.8"
declare -x INHERITED="multilib toolchain-funcs eutils portability flag-o-matic"
declare -x INPUT_DEVICES="keyboard mouse"
declare -x INSDESTTREE=""
declare -x INSOPTIONS="-m0644"
declare -x IUSE=" alsa cups dbus esd gecko hal jack jpeg lcms ldap nas ncurses opengl oss samba scanner xml X"
declare -x JAVAC="/etc/java-config-2/current-system-vm/bin/javac"
declare -x JAVA_HOME="/etc/java-config-2/current-system-vm"
declare -x JDK_HOME="/etc/java-config-2/current-system-vm"
declare -x KDEDIRS="/usr:/usr/local:/usr/kde/4.0:/usr/kde/3.5"
declare -x KERNEL="linux"
declare -x KERNEL_ABI="amd64"
declare -x KV="2.6.24.2"
declare -x LADSPA_PATH="/usr/lib64/ladspa"
declare -x LANG="en_US.UTF-8"
declare -x LANGUAGE="en_US.UTF-8"
declare -x LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text"
declare -x LC_ALL="en_US.UTF-8"
declare -x LDFLAGS="-Wl,-O1 -Wl,--enable-new-dtags -Wl,--sort-common -s"
declare -x LDFLAGS_default=""
declare -x LDFLAGS_x86="-m elf_i386 -L/emul/linux/x86/lib -L/emul/linux/x86/usr/lib"
declare -x LIBDIR_amd64="lib64"
declare -x LIBDIR_default="lib"
declare -x LIBDIR_x86="lib32"
declare -x LIBGL_DRIVERS_PATH="/usr/lib64/dri:/usr/lib32/dri"
declare -x LIBOPTIONS="-m0644"
declare -x LINGUAS="en"
declare -x LIRC_DEVICES="audio audio_alsa"
declare -x MAKEOPTS="-j3"
declare -x MULTILIB_ABIS="amd64 x86"
declare -x MULTILIB_STRICT_DENY="64-bit.*shared object"
declare -x MULTILIB_STRICT_DIRS="/lib /usr/lib /usr/kde/*/lib /usr/qt/*/lib /usr/X11R6/lib"
declare -x MULTILIB_STRICT_EXEMPT="(perl5|gcc|gcc-lib|binutils|eclipse-3|debug|portage)"
declare -x OPENGL_PROFILE="nvidia"
declare -x PKG_CONFIG_PATH="/usr/qt/3/lib64/pkgconfig"
declare -x PORTAGE_NICENESS="8"
declare -x PRELINK_PATH_MASK="/usr/lib/gstreamer-0.8:/usr/lib64/klibc"
declare -x PYTHONPATH="/usr/lib64/portage/pym"
declare -x QMAKESPEC="linux-g++"
declare -x QTDIR="/usr/qt/3"
declare -x RESTRICT="test"
declare -x RUBYOPT="-rauto_gem"
declare -x S="/var/tmp/portage/app-emulation/wine-0.9.57/work/wine-0.9.57"
declare -x SANDBOX_DENY="/etc/ld.so.preload"
declare -x SANDBOX_PREDICT=":/dev/console:/dev/random:/proc/self/maps:/usr/lib64/portage/pym:/usr/lib/python2.0/:/usr/lib/python2.1/:/usr/lib/python2.2/:/usr/lib/python2.3/:/usr/lib/python2.4/:/usr/lib/python2.5/:/usr/lib/python3.0/:/var/cache/edb/dep:/var/db/aliases.db:/var/db/ethers.db:/var/db/group.db:/var/db/hosts.db:/var/db/netgroup.db:/var/db/netmasks.db:/var/db/networks.db:/var/db/passwd.db:/var/db/protocols.db:/var/db/rpc.db:/var/db/services.db:/var/tmp/portage/app-emulation/wine-0.9.57/homedir/.:"
declare -x SANDBOX_READ=":/:/dev/shm:/dev/stdin:/var/tmp:"
declare -x SANDBOX_WRITE=":/dev/console:/dev/fd:/dev/null:/dev/pts/:/dev/pty:/dev/shm:/dev/shm/ngpt:/dev/stderr:/dev/stdout:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/proc/self/fd:/tmp:/tmp/:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/lib/cf:/usr/lib/conftest:/usr/tmp/cf:/usr/tmp/conftest:/var/log/scrollkeeper.log:/var/tmp:/var/tmp/:/var/tmp/portage/app-emulation/wine-0.9.57/homedir/.bash_history:/var/tmp/portage/app-emulation/wine-0.9.57/homedir/.gconfd/lock:"
declare -x SANE_CONFIG_DIR="/etc/sane.d"
declare -x SCHEME_LIBRARY_PATH="/usr/share/slib/"
declare -x SESSION_MANAGER="local/java:/tmp/.ICE-unix/25702"
declare -x SLOT="0"
declare -x STAGE1_USE="nptl nptlonly unicode"
declare -x SYMLINK_LIB="yes"
declare -x SYSFONT="latarcyrheb-sun16"
declare -x USB_DEVFS_PATH="/dev/bus/usb"
declare -x USE="X alsa amd64 cups elibc_glibc esd gecko jack jpeg kernel_linux ldap ncurses opengl oss samba userland_GNU xml"
declare -x USERLAND="GNU"
declare -x USERNAME="bob"
declare -x VIDEO_CARDS="fbdev nv v4l vesa vga nvidia"
declare -x VMHANDLE="blackdown-jdk-1.4.2"
declare -x WINDOWID="48234584"
declare -x WINDOWPATH="7"
declare -x XCURSORS_THEME="Blue"
declare -x XDG_DATA_DIRS="/usr/share:/usr/kde/4.0/share:/usr/local/share:/usr/kde/3.5/share"
declare -x XERCESC_NLS_HOME="/usr/share/xerces-c/msg"
declare -x XPSERVERLIST=""
declare -x _E_DOCDESTTREE_=""
declare -x _E_EXEDESTTREE_=""
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [gentoo-user] emerge wine
2008-03-12 10:23 ` Alan McKinnon
@ 2008-03-13 1:07 ` Robert Stockdale IV
2008-03-13 1:19 ` Neil Bothwick
0 siblings, 1 reply; 15+ messages in thread
From: Robert Stockdale IV @ 2008-03-13 1:07 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1: Type: text/plain, Size: 1896 bytes --]
On Wed, Mar 12, 2008 at 6:23 AM, Alan McKinnon <alan.mckinnon@gmail.com>
wrote:
> On Wednesday 12 March 2008, Robert Stockdale IV wrote:
> > Hi all:
> > I trying to emerge world and just got this error message with only 3
> > programs left to emerge. It is:
> >
> > * Messages for package app-emulation/wine-0.9.57:
>
> http://forums.gentoo.org/viewtopic-p-2111407.html
>
>
> --
> Alan McKinnon
> alan dot mckinnon at gmail dot com
>
> --
> gentoo-user@lists.gentoo.org mailing list
>
>
Tried that and the emerge failed for gcc. I did an "emerge --sync" and tried
again using -uDNav and it came up with the following:
USE="multilib" FEATURES="-sandbox" emerge -uDNav gcc portage
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild U ] media-sound/alsa-headers-1.0.16 [1.0.16_rc2] 2,662 kB
[ebuild U ] dev-util/desktop-file-utils-0.15 [0.14-r1] USE="-emacs" 341
kB
[ebuild U ] media-libs/alsa-lib-1.0.16 [1.0.16_rc2] USE="midi -alisp
-debug -doc" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty
extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null
plug rate route share shm softvol" 764 kB
[ebuild R ] sys-devel/gcc-4.1.2 USE="fortran gcj gtk mudflap* nls
(-altivec) -bootstrap -build -d -doc (-hardened) -ip28 -ip32r10k -libffi%
(-multilib) -multislot (-n32) (-n64) -nocxx -objc -objc++ -objc-gc -test
-vanilla" 38,841 kB
Total: 4 packages (3 upgrades, 1 reinstall), Size of downloads: 42,607 kB
Would you like to merge these packages? [Yes/No] No
***********************************************************************************************************************
I already have gcc 4.2.3 installed and emerge wants to downgrade to 4.1.2.
I'd prefer to stay with 4.2.3. Is there a way to force it? Do I use
/etc/portage/package.use to set the use flags permanently?
Thank you,
Bob
[-- Attachment #2: Type: text/html, Size: 2634 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [gentoo-user] emerge wine
2008-03-13 1:07 ` Robert Stockdale IV
@ 2008-03-13 1:19 ` Neil Bothwick
2008-03-13 20:15 ` Robert Stockdale IV
0 siblings, 1 reply; 15+ messages in thread
From: Neil Bothwick @ 2008-03-13 1:19 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1: Type: text/plain, Size: 660 bytes --]
On Wed, 12 Mar 2008 21:07:11 -0400, Robert Stockdale IV wrote:
> [ebuild R ] sys-devel/gcc-4.1.2 USE="fortran gcj gtk mudflap* nls
> (-altivec) -bootstrap -build -d -doc (-hardened) -ip28 -ip32r10k
> -libffi% (-multilib) -multislot (-n32) (-n64) -nocxx -objc -objc++
> -objc-gc -test -vanilla" 38,841 kB
> I already have gcc 4.2.3 installed and emerge wants to downgrade to
> 4.1.2.
No it doesn't, it wants to reinstall 4.1.2 because of the changed mudflap
USE flag. gcc is slotted, so you can have 4.1 and 4.2 installed at the
same time and switch between them with gcc-config.
--
Neil Bothwick
Home is where you hang your @.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [gentoo-user] emerge wine
2008-03-13 1:19 ` Neil Bothwick
@ 2008-03-13 20:15 ` Robert Stockdale IV
2008-03-13 21:44 ` Dale
2008-03-13 22:17 ` Neil Bothwick
0 siblings, 2 replies; 15+ messages in thread
From: Robert Stockdale IV @ 2008-03-13 20:15 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1: Type: text/plain, Size: 1035 bytes --]
On Wed, Mar 12, 2008 at 9:19 PM, Neil Bothwick <neil@digimed.co.uk> wrote:
> On Wed, 12 Mar 2008 21:07:11 -0400, Robert Stockdale IV wrote:
>
> > [ebuild R ] sys-devel/gcc-4.1.2 USE="fortran gcj gtk mudflap* nls
> > (-altivec) -bootstrap -build -d -doc (-hardened) -ip28 -ip32r10k
> > -libffi% (-multilib) -multislot (-n32) (-n64) -nocxx -objc -objc++
> > -objc-gc -test -vanilla" 38,841 kB
>
>
> > I already have gcc 4.2.3 installed and emerge wants to downgrade to
> > 4.1.2.
>
> No it doesn't, it wants to reinstall 4.1.2 because of the changed mudflap
> USE flag. gcc is slotted, so you can have 4.1 and 4.2 installed at the
> same time and switch between them with gcc-config.
>
>
> --
> Neil Bothwick
>
> Home is where you hang your @.
>
Well I got it compiling. However it seems to die with errors with the USE
flag and FEATURES. It also will not take the multilib use flag. I use the
-uDNav option on emerge and multilib is shown as (-multilib). How can I get
it to show multilib* instead of (-multilib). Thank you.
Bob
[-- Attachment #2: Type: text/html, Size: 1440 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [gentoo-user] emerge wine
2008-03-13 20:15 ` Robert Stockdale IV
@ 2008-03-13 21:44 ` Dale
2008-03-13 22:14 ` Robert Stockdale IV
2008-03-13 22:31 ` Alan McKinnon
2008-03-13 22:17 ` Neil Bothwick
1 sibling, 2 replies; 15+ messages in thread
From: Dale @ 2008-03-13 21:44 UTC (permalink / raw
To: gentoo-user
Robert Stockdale IV wrote:
>
> Well I got it compiling. However it seems to die with errors with the
> USE flag and FEATURES. It also will not take the multilib use flag. I
> use the -uDNav option on emerge and multilib is shown as (-multilib).
> How can I get it to show multilib* instead of (-multilib). Thank you.
> Bob
You should add multilib to your make.conf file USE flags. If it is not
a global need, put it in package.use.
Question, are you new to Gentoo? If you are, maybe we need to go more
into detail here.
Dale
:-) :-)
--
gentoo-user@lists.gentoo.org mailing list
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [gentoo-user] emerge wine
2008-03-13 21:44 ` Dale
@ 2008-03-13 22:14 ` Robert Stockdale IV
2008-03-13 22:31 ` Alan McKinnon
1 sibling, 0 replies; 15+ messages in thread
From: Robert Stockdale IV @ 2008-03-13 22:14 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1: Type: text/plain, Size: 1319 bytes --]
On Thu, Mar 13, 2008 at 5:44 PM, Dale <dalek1967@bellsouth.net> wrote:
> Robert Stockdale IV wrote:
> >
> > Well I got it compiling. However it seems to die with errors with the
> > USE flag and FEATURES. It also will not take the multilib use flag. I
> > use the -uDNav option on emerge and multilib is shown as (-multilib).
> > How can I get it to show multilib* instead of (-multilib). Thank you.
> > Bob
>
> You should add multilib to your make.conf file USE flags. If it is not
> a global need, put it in package.use.
>
> Question, are you new to Gentoo? If you are, maybe we need to go more
> into detail here.
>
> Dale
>
> :-) :-)
> --
> gentoo-user@lists.gentoo.org mailing list
>
>
multilib is in both /etc/make.conf and in /etc/portage/package.use. In fact
this is the line I have in the package.use file for gcc:
=sys-devel/gcc-4.2.3 multislot multilib altivec build fortran nls nocxx doc
gcj gtk hardened libffi objc vanilla ip28 ip32r10k n32 n64 objc-gc mudflap
objc++ openmp -sandbox
No, I'm not entirely new to Gentoo. I just recently returned after
approximately 2 years with Ubuntu. I missed Gentoo and portage. Was
reintroduced to it with Sabayon Linux and just came back to full blown
Gentoo. Still a little rusty with portage and gcc. Should have stuck with
Gentoo all along.
Thank you,
Bob
[-- Attachment #2: Type: text/html, Size: 1825 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [gentoo-user] emerge wine
2008-03-13 20:15 ` Robert Stockdale IV
2008-03-13 21:44 ` Dale
@ 2008-03-13 22:17 ` Neil Bothwick
2008-03-13 23:13 ` Robert Stockdale IV
1 sibling, 1 reply; 15+ messages in thread
From: Neil Bothwick @ 2008-03-13 22:17 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1: Type: text/plain, Size: 569 bytes --]
On Thu, 13 Mar 2008 16:15:24 -0400, Robert Stockdale IV wrote:
> Well I got it compiling. However it seems to die with errors with the
> USE flag and FEATURES.
And those errors are...?
> It also will not take the multilib use flag. I
> use the -uDNav option on emerge and multilib is shown as (-multilib).
> How can I get it to show multilib* instead of (-multilib).
Parentheses around a USE flag mean that it is forced or masked in your
profile. Which profile are you using?
--
Neil Bothwick
"Bother," said Pooh, as he connected at 300 bps.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [gentoo-user] emerge wine
2008-03-13 21:44 ` Dale
2008-03-13 22:14 ` Robert Stockdale IV
@ 2008-03-13 22:31 ` Alan McKinnon
2008-03-13 23:12 ` Dale
1 sibling, 1 reply; 15+ messages in thread
From: Alan McKinnon @ 2008-03-13 22:31 UTC (permalink / raw
To: gentoo-user
On Thursday 13 March 2008, Dale wrote:
> Robert Stockdale IV wrote:
> > Well I got it compiling. However it seems to die with errors with
> > the USE flag and FEATURES. It also will not take the multilib use
> > flag. I use the -uDNav option on emerge and multilib is shown as
> > (-multilib). How can I get it to show multilib* instead of
> > (-multilib). Thank you. Bob
>
> You should add multilib to your make.conf file USE flags. If it is
> not a global need, put it in package.use.
>
> Question, are you new to Gentoo? If you are, maybe we need to go
> more into detail here.
I think he is new to Gentoo Dale, he seems to be making the kinda
elementary mistakes you'd expect from someone suffering from
information overload after trying to grasp the install docs
Robert, knowing the workings of portage is crucial to a satisfactory
Gentoo. There isn't a simple way through this, it's just a lot of good
old RTFM (but we've all done it).
At a minimum you should read everything linked from here several times:
http://www.gentoo.org/doc/en/handbook/index.xml
and read these man pages many many times:
man emerge
man ebuild
man 5 ebuild
man 5 make.conf
man 5 portage
The answers to all your questions in this thread are in those references
--
Alan McKinnon
alan dot mckinnon at gmail dot com
--
gentoo-user@lists.gentoo.org mailing list
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [gentoo-user] emerge wine
2008-03-13 22:31 ` Alan McKinnon
@ 2008-03-13 23:12 ` Dale
2008-03-13 23:31 ` Robert Stockdale IV
0 siblings, 1 reply; 15+ messages in thread
From: Dale @ 2008-03-13 23:12 UTC (permalink / raw
To: gentoo-user
Alan McKinnon wrote:
> On Thursday 13 March 2008, Dale wrote:
>
>> Robert Stockdale IV wrote:
>>
>>> Well I got it compiling. However it seems to die with errors with
>>> the USE flag and FEATURES. It also will not take the multilib use
>>> flag. I use the -uDNav option on emerge and multilib is shown as
>>> (-multilib). How can I get it to show multilib* instead of
>>> (-multilib). Thank you. Bob
>>>
>> You should add multilib to your make.conf file USE flags. If it is
>> not a global need, put it in package.use.
>>
>> Question, are you new to Gentoo? If you are, maybe we need to go
>> more into detail here.
>>
>
>
> I think he is new to Gentoo Dale, he seems to be making the kinda
> elementary mistakes you'd expect from someone suffering from
> information overload after trying to grasp the install docs
>
> Robert, knowing the workings of portage is crucial to a satisfactory
> Gentoo. There isn't a simple way through this, it's just a lot of good
> old RTFM (but we've all done it).
>
> At a minimum you should read everything linked from here several times:
> http://www.gentoo.org/doc/en/handbook/index.xml
>
> and read these man pages many many times:
>
> man emerge
> man ebuild
> man 5 ebuild
> man 5 make.conf
> man 5 portage
>
> The answers to all your questions in this thread are in those references
>
>
I think so too. He posted that he used it a few years ago which may be
worse than starting out completely new. I noticed he was putting a USE
and FEATURES variable on the command line instead of make.conf and
friends. It sort of tipped me off that he is familiar with Linux but
new to Gentoo.
We'll get him going tho. ;-)
Dale
:-) :-)
--
gentoo-user@lists.gentoo.org mailing list
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [gentoo-user] emerge wine
2008-03-13 22:17 ` Neil Bothwick
@ 2008-03-13 23:13 ` Robert Stockdale IV
2008-03-14 13:23 ` Tony Davison
0 siblings, 1 reply; 15+ messages in thread
From: Robert Stockdale IV @ 2008-03-13 23:13 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1: Type: text/plain, Size: 782 bytes --]
On Thu, Mar 13, 2008 at 6:17 PM, Neil Bothwick <neil@digimed.co.uk> wrote:
> On Thu, 13 Mar 2008 16:15:24 -0400, Robert Stockdale IV wrote:
>
> > Well I got it compiling. However it seems to die with errors with the
> > USE flag and FEATURES.
>
> And those errors are...?
>
> > It also will not take the multilib use flag. I
> > use the -uDNav option on emerge and multilib is shown as (-multilib).
> > How can I get it to show multilib* instead of (-multilib).
>
> Parentheses around a USE flag mean that it is forced or masked in your
> profile. Which profile are you using?
>
>
> --
> Neil Bothwick
>
> "Bother," said Pooh, as he connected at 300 bps.
>
According to eselect it is still :default-linux/amd64/2007.0/desktop
This is what I set it at when I installed Gentoo.
Bob
[-- Attachment #2: Type: text/html, Size: 1167 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [gentoo-user] emerge wine
2008-03-13 23:12 ` Dale
@ 2008-03-13 23:31 ` Robert Stockdale IV
2008-03-14 0:12 ` Dale
2008-03-14 6:59 ` Alan McKinnon
0 siblings, 2 replies; 15+ messages in thread
From: Robert Stockdale IV @ 2008-03-13 23:31 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1: Type: text/plain, Size: 528 bytes --]
>
> <http://www.gentoo.org/doc/en/handbook/index.xml> I noticed he was
> putting a USE and FEATURES variable on the command line instead of
> make.conf and
> friends.
This is what a link from a previous post told me to do. The link was in the
first reply and is:
http://forums.gentoo.org/viewtopic-p-2111407.html
> It sort of tipped me off that he is familiar with Linux but
> new to Gentoo.
>
> We'll get him going tho. ;-)
Thank you
Bob
>
>
> Dale
>
> :-) :-)
> --
> gentoo-user@lists.gentoo.org mailing list
>
>
[-- Attachment #2: Type: text/html, Size: 1334 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [gentoo-user] emerge wine
2008-03-13 23:31 ` Robert Stockdale IV
@ 2008-03-14 0:12 ` Dale
2008-03-14 6:59 ` Alan McKinnon
1 sibling, 0 replies; 15+ messages in thread
From: Dale @ 2008-03-14 0:12 UTC (permalink / raw
To: gentoo-user
Robert Stockdale IV wrote:
>
> I noticed he was putting a USE and FEATURES variable on the
> command line instead of make.conf and
> friends.
>
>
> This is what a link from a previous post told me to do. The link was
> in the first reply and is:
>
> http://forums.gentoo.org/viewtopic-p-2111407.html
>
>
> It sort of tipped me off that he is familiar with Linux but
> new to Gentoo.
>
> We'll get him going tho. ;-)
>
>
> Thank you
> Bob
>
>
>
> Dale
>
> :-) :-)
> --
> gentoo-user@lists.gentoo.org <mailto:gentoo-user@lists.gentoo.org>
> mailing list
>
>
OK. I see what he was trying to do now. Basically this was a one time
thing and would likely be OK. Sort of a 'exception to the rule' if you
will.
Dale
:-) :-)
--
gentoo-user@lists.gentoo.org mailing list
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [gentoo-user] emerge wine
2008-03-13 23:31 ` Robert Stockdale IV
2008-03-14 0:12 ` Dale
@ 2008-03-14 6:59 ` Alan McKinnon
1 sibling, 0 replies; 15+ messages in thread
From: Alan McKinnon @ 2008-03-14 6:59 UTC (permalink / raw
To: gentoo-user
On Friday 14 March 2008, Robert Stockdale IV wrote:
> I noticed he was putting a USE and FEATURES variable on the command
> line instead of make.conf and
>
> friends.
>
> This is what a link from a previous post told me to do. The link was
> in the first reply and is:
>
> http://forums.gentoo.org/viewtopic-p-2111407.html
Haven't read the link (still way too early in the morning) but I often
still find howtos that say to put USE on the command line. This old
syntax is very much deprecated, mostly because you will forget that you
did it, the current supported method is to put the same
flag/feature/whatever in make.conf or per-package in package.use, where
portage will remember it for you
--
Alan McKinnon
alan dot mckinnon at gmail dot com
--
gentoo-user@lists.gentoo.org mailing list
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [gentoo-user] emerge wine
2008-03-13 23:13 ` Robert Stockdale IV
@ 2008-03-14 13:23 ` Tony Davison
0 siblings, 0 replies; 15+ messages in thread
From: Tony Davison @ 2008-03-14 13:23 UTC (permalink / raw
To: gentoo-user
On Thursday 13 March 2008 23:13:04 Robert Stockdale IV wrote:
> On Thu, Mar 13, 2008 at 6:17 PM, Neil Bothwick <neil@digimed.co.uk> wrote:
> > On Thu, 13 Mar 2008 16:15:24 -0400, Robert Stockdale IV wrote:
> > > Well I got it compiling. However it seems to die with errors with the
> > > USE flag and FEATURES.
> >
> > And those errors are...?
> >
> > > It also will not take the multilib use flag. I
> > > use the -uDNav option on emerge and multilib is shown as (-multilib).
> > > How can I get it to show multilib* instead of (-multilib).
> >
> > Parentheses around a USE flag mean that it is forced or masked in your
> > profile. Which profile are you using?
> >
> >
> > --
> > Neil Bothwick
> >
> > "Bother," said Pooh, as he connected at 300 bps.
>
> According to eselect it is still :default-linux/amd64/2007.0/desktop
> This is what I set it at when I installed Gentoo.
> Bob
Hmm, I run the same profile and it shows (-multilib) in the output from
a "emerge gcc -pvt" but profuse denies the existence of a multilib USE flag.
I should add that this box has both lib64 and lib32.
--
BigTone
--
gentoo-user@lists.gentoo.org mailing list
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2008-03-14 13:23 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-03-12 10:23 [gentoo-user] emerge wine Robert Stockdale IV
2008-03-12 10:23 ` Alan McKinnon
2008-03-13 1:07 ` Robert Stockdale IV
2008-03-13 1:19 ` Neil Bothwick
2008-03-13 20:15 ` Robert Stockdale IV
2008-03-13 21:44 ` Dale
2008-03-13 22:14 ` Robert Stockdale IV
2008-03-13 22:31 ` Alan McKinnon
2008-03-13 23:12 ` Dale
2008-03-13 23:31 ` Robert Stockdale IV
2008-03-14 0:12 ` Dale
2008-03-14 6:59 ` Alan McKinnon
2008-03-13 22:17 ` Neil Bothwick
2008-03-13 23:13 ` Robert Stockdale IV
2008-03-14 13:23 ` Tony Davison
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox