public inbox for gentoo-amd64@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-amd64]  Re: emerge -eav system failed with ati-drivers
  2009-06-20 23:01 John P. Burkett
@ 2009-06-20 23:17 ` Nikos Chantziaras
  2009-06-21  1:26   ` Duncan
  0 siblings, 1 reply; 24+ messages in thread
From: Nikos Chantziaras @ 2009-06-20 23:17 UTC (permalink / raw
  To: gentoo-amd64

On 06/21/2009 02:01 AM, John P. Burkett wrote:
> Today on an amd64 machine I tried "emerge -eav system". The process
> ended with the following message:
> [...]
>   * Found kernel source directory:
>   *     /usr/src/linux
>   * Could not find a Makefile in the kernel source directory.
>   * Please ensure that /usr/src/linux points to a complete set of Linux
> sources

Did you check for the existence of a Makefile?  What happens when you do:

   cd /usr/src/linux
   make

If you get an error, try:

   cd /usr/src/linux
   zcat /proc/config.gz > .config
   make oldconfig

and then try to "emerge --resume" to continue with the system emerge.




^ permalink raw reply	[flat|nested] 24+ messages in thread

* [gentoo-amd64]  Re: emerge -eav system failed with ati-drivers
  2009-06-20 23:17 ` [gentoo-amd64] " Nikos Chantziaras
@ 2009-06-21  1:26   ` Duncan
  0 siblings, 0 replies; 24+ messages in thread
From: Duncan @ 2009-06-21  1:26 UTC (permalink / raw
  To: gentoo-amd64

Nikos Chantziaras <realnc@arcor.de> posted h1jqlc$o63$1@ger.gmane.org,
excerpted below, on  Sun, 21 Jun 2009 02:17:02 +0300:

> zcat /proc/config.gz > .config

Note that /proc/config.gz depends on kernel config, so may not exist on 
all systems.  From the help text for "Kernel .config support" under 
"General setup" in menuconfig:

""""
CONFIG_IKCONFIG:                                                      

This option enables the complete Linux kernel ".config" file contents to 
be saved in the kernel. It provides documentation of which kernel options 
are used in a running kernel or in an on-disk kernel.  This information 
can be extracted from the kernel image file with the script scripts/
extract-ikconfig and used as input to rebuild the current kernel or to 
build another kernel. It can also be extracted from a running kernel by 
reading /proc/config.gz if enabled (below).     
""""

Then the dependent suboption:

""""
CONFIG_IKCONFIG_PROC:

This option enables access to the kernel configuration file through
/proc/config.gz. 
""""

So depending on the kernel config /proc/config.gz may or may not exist.  
I don't have the first option enabled here so don't see the second, and 
don't have that proc file.

However, you did say "try".  If genkernel enables it by default, 
presumably those using genkernel would either have the file, or would 
know enough about kernel functionality to either fix the problem on their 
own or at least be able to translate your instructions into something 
approaching "copy your kernel config from wherever you put it to the 
kernel working dir".

Talking about the kernel working dir, it's also worth noting that can be 
set as well, using the O=dir kernel make option (as mentioned in make 
help) or by setting and exporting the KBUILD_OUTPUT environmental 
variable appropriately.  Setting that keeps the kernel sources pristine 
(save for the output-dir itself, if set to within the kernel tree as it 
will be if an absolute path is not used), with all output (including 
the .config file) directed to the output dir, thus making cleanup far 
easier as well as tracking a kernel git repository, for those who wish to 
do so. I've used "outputdir" as my build/working dir for some time, so 
have /usr/src/linux/outputdir/.config instead of /usr/src/linux/.config .

Note that for purposes of building out-of-tree kernel modules such as
the ati-drivers under discussion here, exporting KBUILD_OUTPUT is 
easiest, and setting it in make.conf should be all that's necessary for 
packages installed using portage.

-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman




^ permalink raw reply	[flat|nested] 24+ messages in thread

* [gentoo-amd64] emerge -eav system failed with ati-drivers
@ 2009-06-21 17:47 John P. Burkett
  2009-06-21 17:55 ` Drake Donahue
  0 siblings, 1 reply; 24+ messages in thread
From: John P. Burkett @ 2009-06-21 17:47 UTC (permalink / raw
  To: gentoo-amd64

Nikos,

Thank your response to my last query.

Doing "cd /usr/src/linux"
generates the response
make: *** No targets specified and no makefile found.  Stop.

Doing
zcat /proc/config.gz > .config
make oldconfig
gets the same response:
make: *** No rule to make target `oldconfig'.  Stop.

Since my last note I've make new uses of the "emerge" command. As a
result "emerge --resume" finds nothing to resume. However, doing "emerge
ati-drivers" still elicits the following response:

* Found kernel source directory:
 *     /usr/src/linux
 * Could not find a Makefile in the kernel source directory.
 * Please ensure that /usr/src/linux points to a complete set of Linux
sources
 *
 * ERROR: x11-drivers/ati-drivers-8.552-r2 failed.
 * Call stack:
 *                     ebuild.sh, line   49:  Called pkg_setup
 *   ati-drivers-8.552-r2.ebuild, line   70:  Called linux-mod_pkg_setup
 *              linux-mod.eclass, line  578:  Called linux-info_pkg_setup
 *             linux-info.eclass, line  696:  Called die
 * The specific snippet of code:
 *   	get_version || die "Unable to calculate Linux Kernel version"
 *  The die message:
 *   Unable to calculate Linux Kernel version
 *
 * 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/x11-drivers/ati-drivers-8.552-r2/temp/build.log'.
 * The ebuild environment file is located at
'/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/temp/die.env'.
 *

>>> Failed to emerge x11-drivers/ati-drivers-8.552-r2, Log file:

>>>  '/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/temp/build.log'

 * Messages for package x11-drivers/ati-drivers-8.552-r2:

 * Could not find a Makefile in the kernel source directory.
 * Please ensure that /usr/src/linux points to a complete set of Linux
sources
 *
 * ERROR: x11-drivers/ati-drivers-8.552-r2 failed.
 * Call stack:
 *                     ebuild.sh, line   49:  Called pkg_setup
 *   ati-drivers-8.552-r2.ebuild, line   70:  Called linux-mod_pkg_setup
 *              linux-mod.eclass, line  578:  Called linux-info_pkg_setup
 *             linux-info.eclass, line  696:  Called die
 * The specific snippet of code:
 *   	get_version || die "Unable to calculate Linux Kernel version"
 *  The die message:
 *   Unable to calculate Linux Kernel version
 *

If you have other suggestions, I would glad to try them.

Best regards,
John



-- 
John P. Burkett
Department of Economics
University of Rhode Island
Kingston, RI 02881-0808
USA

phone (401) 874-9195



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [gentoo-amd64] emerge -eav system failed with ati-drivers
  2009-06-21 17:47 [gentoo-amd64] emerge -eav system failed with ati-drivers John P. Burkett
@ 2009-06-21 17:55 ` Drake Donahue
  2009-06-21 18:17   ` David Relson
  2009-06-21 18:40   ` [gentoo-amd64] " John P. Burkett
  0 siblings, 2 replies; 24+ messages in thread
From: Drake Donahue @ 2009-06-21 17:55 UTC (permalink / raw
  To: gentoo-amd64

<snip>

I'm guessing you did an "emerge --depclean" sometime after compiling the
2.6.22-r2 kernel and after emerging a new gentoo-sources that erased
your make files, This is something depclean loves to do while leaving
99% of the older kernel source files intact.
I think depclean leaves your .config file in place. Been a few weeks
since I burned myself last with this one. 
If you were following directions back in 2007 you should have a
stored 2.6.22-r2 config in the /boot directory.

Try "emerge =sys-kernel/gentoo-sources-2.6.22-r2 to re-emerge the old
package and regain the make files. What the osmp is about beats me.

or

Emerge a new gentoo-sources, eselect it, configure, compile, install a
new (current) kernel.





^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [gentoo-amd64] emerge -eav system failed with ati-drivers
  2009-06-21 17:55 ` Drake Donahue
@ 2009-06-21 18:17   ` David Relson
  2009-06-21 18:54     ` John P. Burkett
  2009-06-21 18:40   ` [gentoo-amd64] " John P. Burkett
  1 sibling, 1 reply; 24+ messages in thread
From: David Relson @ 2009-06-21 18:17 UTC (permalink / raw
  To: gentoo-amd64

On Sun, 21 Jun 2009 13:55:10 -0400
Drake Donahue wrote:

> <snip>
> 
> I'm guessing you did an "emerge --depclean" sometime after compiling
> the 2.6.22-r2 kernel and after emerging a new gentoo-sources that
> erased your make files, This is something depclean loves to do while
> leaving 99% of the older kernel source files intact.
> I think depclean leaves your .config file in place. Been a few weeks
> since I burned myself last with this one. 
> If you were following directions back in 2007 you should have a
> stored 2.6.22-r2 config in the /boot directory.
> 
> Try "emerge =sys-kernel/gentoo-sources-2.6.22-r2 to re-emerge the old
> package and regain the make files. What the osmp is about beats me.
> 
> or
> 
> Emerge a new gentoo-sources, eselect it, configure, compile, install a
> new (current) kernel.

My understanding is that ati-drivers expects /usr/src/linux to contain
the source of the currently running kernel.

I'm running a 2.6.28 kernel.  I have downloaded 2.6.30 and built that
but have not yet rebooted.  "emerge ati-drivers" failed with 2.6.30
in /usr/src/linux.  Changing directory names allowed ati-drivers to
build happily.

HTH,

David



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [gentoo-amd64] emerge -eav system failed with ati-drivers
  2009-06-21 17:55 ` Drake Donahue
  2009-06-21 18:17   ` David Relson
@ 2009-06-21 18:40   ` John P. Burkett
  1 sibling, 0 replies; 24+ messages in thread
From: John P. Burkett @ 2009-06-21 18:40 UTC (permalink / raw
  To: gentoo-amd64

Drake Donahue wrote:
> <snip>
> 
> I'm guessing you did an "emerge --depclean" sometime after compiling the
> 2.6.22-r2 kernel and after emerging a new gentoo-sources that erased
> your make files,
Drake, thank you very much for your comments.
Yes, I did an "emerge --depclean" around June 6.

 This is something depclean loves to do while leaving
> 99% of the older kernel source files intact.
> I think depclean leaves your .config file in place. Been a few weeks
> since I burned myself last with this one. 
> If you were following directions back in 2007 you should have a
> stored 2.6.22-r2 config in the /boot directory.
Yes, doing "ls -l" in my /boot directory produces output including the
following lines:
lrwxrwxrwx 1 root root      28 Sep  3  2007 config ->
config-2.6.22-gentoo-r2-osmp
-rw-r--r-- 1 root root   42638 Sep 21  2006 config-2.6.17-ck1-r3-osmp
-rw-r--r-- 1 root root   47220 Sep  3  2007 config-2.6.22-gentoo-r2-osmp
-rw-r--r-- 1 root root   45522 Sep  3  2007 config-2.6.22-gentoo-r2-osmp.old
lrwxrwxrwx 1 root root      25 Sep  3  2007 config.failsafe ->
config-2.6.17-ck1-r3-osmp
lrwxrwxrwx 1 root root      32 Sep  3  2007 config.old ->
config-2.6.22-gentoo-r2-osmp.old

> 
> Try "emerge =sys-kernel/gentoo-sources-2.6.22-r2 to re-emerge the old
> package and regain the make files. What the osmp is about beats me.
In some contexts, osmp is short for Operational Security Management
Plan.  Whether that is the meaning here, I don't know.

Should I back up any particular files before doing "emerge
=sys-kernel/gentoo-sources-2.6.22-r2"?

Best regards,
John


> 
> or
> 
> Emerge a new gentoo-sources, eselect it, configure, compile, install a
> new (current) kernel.
> 
> 
> 
> 


-- 
John P. Burkett
Department of Economics
University of Rhode Island
Kingston, RI 02881-0808
USA

phone (401) 874-9195



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [gentoo-amd64] emerge -eav system failed with ati-drivers
  2009-06-21 18:17   ` David Relson
@ 2009-06-21 18:54     ` John P. Burkett
  2009-06-21 19:10       ` David Relson
  0 siblings, 1 reply; 24+ messages in thread
From: John P. Burkett @ 2009-06-21 18:54 UTC (permalink / raw
  To: gentoo-amd64

David Relson wrote:
> On Sun, 21 Jun 2009 13:55:10 -0400
> Drake Donahue wrote:
> 
>> <snip>
>>
>> I'm guessing you did an "emerge --depclean" sometime after compiling
>> the 2.6.22-r2 kernel and after emerging a new gentoo-sources that
>> erased your make files, This is something depclean loves to do while
>> leaving 99% of the older kernel source files intact.
>> I think depclean leaves your .config file in place. Been a few weeks
>> since I burned myself last with this one. 
>> If you were following directions back in 2007 you should have a
>> stored 2.6.22-r2 config in the /boot directory.
>>
>> Try "emerge =sys-kernel/gentoo-sources-2.6.22-r2 to re-emerge the old
>> package and regain the make files. What the osmp is about beats me.
>>
>> or
>>
>> Emerge a new gentoo-sources, eselect it, configure, compile, install a
>> new (current) kernel.
> 
> My understanding is that ati-drivers expects /usr/src/linux to contain
> the source of the currently running kernel.
> 
> I'm running a 2.6.28 kernel.  I have downloaded 2.6.30 and built that
> but have not yet rebooted.  "emerge ati-drivers" failed with 2.6.30
> in /usr/src/linux.  Changing directory names allowed ati-drivers to
> build happily.
> 

David, thank you for sharing your experience. On my system, doing "uname
-r" gets the response "2.6.22-gentoo-r2-osmp".  In my /usr/src/linux
directory I currently have a .config file starting with the lines
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.22-gentoo-r2
# Mon Sep  3 21:48:37 2007
Can you suggest how to change directory names to allow the ati-drivers
to build?

Best regards,
John



> HTH,
> 
> David
> 
> 





-- 
John P. Burkett
Department of Economics
University of Rhode Island
Kingston, RI 02881-0808
USA

phone (401) 874-9195



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [gentoo-amd64] emerge -eav system failed with ati-drivers
  2009-06-21 18:54     ` John P. Burkett
@ 2009-06-21 19:10       ` David Relson
  2009-06-21 19:19         ` John P. Burkett
  0 siblings, 1 reply; 24+ messages in thread
From: David Relson @ 2009-06-21 19:10 UTC (permalink / raw
  To: gentoo-amd64; +Cc: burkett

On Sun, 21 Jun 2009 14:54:36 -0400
John P. Burkett wrote:

> David Relson wrote:
> > On Sun, 21 Jun 2009 13:55:10 -0400
> > Drake Donahue wrote:
> > 
> >> <snip>
> >>
> >> I'm guessing you did an "emerge --depclean" sometime after
> >> compiling the 2.6.22-r2 kernel and after emerging a new
> >> gentoo-sources that erased your make files, This is something
> >> depclean loves to do while leaving 99% of the older kernel source
> >> files intact. I think depclean leaves your .config file in place.
> >> Been a few weeks since I burned myself last with this one. 
> >> If you were following directions back in 2007 you should have a
> >> stored 2.6.22-r2 config in the /boot directory.
> >>
> >> Try "emerge =sys-kernel/gentoo-sources-2.6.22-r2 to re-emerge the
> >> old package and regain the make files. What the osmp is about
> >> beats me.
> >>
> >> or
> >>
> >> Emerge a new gentoo-sources, eselect it, configure, compile,
> >> install a new (current) kernel.
> > 
> > My understanding is that ati-drivers expects /usr/src/linux to
> > contain the source of the currently running kernel.
> > 
> > I'm running a 2.6.28 kernel.  I have downloaded 2.6.30 and built
> > that but have not yet rebooted.  "emerge ati-drivers" failed with
> > 2.6.30 in /usr/src/linux.  Changing directory names allowed
> > ati-drivers to build happily.
> > 
> 
> David, thank you for sharing your experience. On my system, doing
> "uname -r" gets the response "2.6.22-gentoo-r2-osmp".  In
> my /usr/src/linux directory I currently have a .config file starting
> with the lines # Automatically generated make config: don't edit
> # Linux kernel version: 2.6.22-gentoo-r2
> # Mon Sep  3 21:48:37 2007
> Can you suggest how to change directory names to allow the ati-drivers
> to build?
> 
> Best regards,
> John

John,

/usr/src/linux is what I'd want to see.  Do you have just a few files
(like .config) or the full kernel source?  It's my understanding that
ati-drivers need the full kernel source.  Likely they use (or check)
some of the kernel's internal header files to "match up" the driver
with the kernel it's running against.

If you've got the full kernel source, then all I can suggest is
getting source for the newest kernel, building it (using your
old .config as the starting point), rebooting, and (finally) emerging
ati-drivers.  The steps up to and including rebooting should provide a
consistent kernel version and source tree and make ati-drivers happy.

HTH,

David



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [gentoo-amd64] emerge -eav system failed with ati-drivers
  2009-06-21 19:10       ` David Relson
@ 2009-06-21 19:19         ` John P. Burkett
  2009-06-21 20:10           ` David Relson
  2009-06-21 20:48           ` Drake Donahue
  0 siblings, 2 replies; 24+ messages in thread
From: John P. Burkett @ 2009-06-21 19:19 UTC (permalink / raw
  To: gentoo-amd64

David Relson wrote:
> On Sun, 21 Jun 2009 14:54:36 -0400
> John P. Burkett wrote:
> 
>> David Relson wrote:
>>> On Sun, 21 Jun 2009 13:55:10 -0400
>>> Drake Donahue wrote:
>>>
>>>> <snip>
>>>>
>>>> I'm guessing you did an "emerge --depclean" sometime after
>>>> compiling the 2.6.22-r2 kernel and after emerging a new
>>>> gentoo-sources that erased your make files, This is something
>>>> depclean loves to do while leaving 99% of the older kernel source
>>>> files intact. I think depclean leaves your .config file in place.
>>>> Been a few weeks since I burned myself last with this one. 
>>>> If you were following directions back in 2007 you should have a
>>>> stored 2.6.22-r2 config in the /boot directory.
>>>>
>>>> Try "emerge =sys-kernel/gentoo-sources-2.6.22-r2 to re-emerge the
>>>> old package and regain the make files. What the osmp is about
>>>> beats me.
>>>>
>>>> or
>>>>
>>>> Emerge a new gentoo-sources, eselect it, configure, compile,
>>>> install a new (current) kernel.
>>> My understanding is that ati-drivers expects /usr/src/linux to
>>> contain the source of the currently running kernel.
>>>
>>> I'm running a 2.6.28 kernel.  I have downloaded 2.6.30 and built
>>> that but have not yet rebooted.  "emerge ati-drivers" failed with
>>> 2.6.30 in /usr/src/linux.  Changing directory names allowed
>>> ati-drivers to build happily.
>>>
>> David, thank you for sharing your experience. On my system, doing
>> "uname -r" gets the response "2.6.22-gentoo-r2-osmp".  In
>> my /usr/src/linux directory I currently have a .config file starting
>> with the lines # Automatically generated make config: don't edit
>> # Linux kernel version: 2.6.22-gentoo-r2
>> # Mon Sep  3 21:48:37 2007
>> Can you suggest how to change directory names to allow the ati-drivers
>> to build?
>>
>> Best regards,
>> John
> 
> John,
> 
> /usr/src/linux is what I'd want to see.  Do you have just a few files
> (like .config) or the full kernel source? 
Thanks for your continuing help with the ati-driver problem.  Doing "ls
-al" in my /usr/src/linux directory produces the following list:
total 28451
drwxr-xr-x 19 root root    1088 Jun  8 01:16 .
drwxr-xr-x  3 root root     136 Jun  8 01:19 ..
-rw-r--r--  1 root root     440 Sep  4  2007 ..tmp_kallsyms1.o.cmd
-rw-r--r--  1 root root     440 Sep  4  2007 ..tmp_kallsyms2.o.cmd
-rw-r--r--  1 root root     636 Sep  4  2007 ..tmp_vmlinux1.cmd
-rw-r--r--  1 root root     652 Sep  4  2007 ..tmp_vmlinux2.cmd
-rw-r--r--  1 root root   47220 Jun 21 13:34 .config
-rw-r--r--  1 root root   47220 Sep  3  2007 .config.old
-rw-r--r--  1 root root     365 Sep  4  2007 .missing-syscalls.d
-rw-r--r--  1 root root 1418737 Sep  4  2007 .tmp_System.map
-rw-r--r--  1 root root 1578817 Sep  4  2007 .tmp_kallsyms1.S
-rw-r--r--  1 root root  735072 Sep  4  2007 .tmp_kallsyms1.o
-rw-r--r--  1 root root 1578817 Sep  4  2007 .tmp_kallsyms2.S
-rw-r--r--  1 root root  735072 Sep  4  2007 .tmp_kallsyms2.o
drwxr-xr-x  2 root root   10176 Sep  4  2007 .tmp_versions
-rwxr-xr-x  1 root root 9069262 Sep  4  2007 .tmp_vmlinux1
-rwxr-xr-x  1 root root 9388791 Sep  4  2007 .tmp_vmlinux2
-rw-r--r--  1 root root       2 Sep  4  2007 .version
-rw-r--r--  1 root root     640 Sep  4  2007 .vmlinux.cmd
-rw-r--r--  1 root root  252456 Sep  4  2007 Module.symvers
-rw-r--r--  1 root root 1418737 Sep  4  2007 System.map
drwxr-xr-x  4 root root      96 Jun  8 01:16 arch
drwxr-xr-x  2 root root     752 Jun  8 01:16 block
drwxr-xr-x  2 root root    6640 Jun  8 01:16 crypto
drwxr-xr-x 35 root root     968 Jun  8 01:16 drivers
drwxr-xr-x 35 root root    4936 Jun  8 01:16 fs
drwxr-xr-x  5 root root     152 Jun  8 01:16 include
drwxr-xr-x  2 root root     736 Jun  8 01:16 init
drwxr-xr-x  2 root root     680 Jun  8 01:16 ipc
drwxr-xr-x  5 root root    3832 Jun  8 01:16 kernel
drwxr-xr-x  4 root root    4512 Jun  8 01:16 lib
drwxr-xr-x  2 root root    2616 Jun  8 01:16 mm
drwxr-xr-x 23 root root     856 Jun  8 01:16 net
drwxr-xr-x  6 root root     320 Jun  8 01:16 scripts
drwxr-xr-x  2 root root     208 Jun  8 01:16 security
drwxr-xr-x 16 root root     904 Jun  8 01:16 sound
drwxr-xr-x  2 root root     424 Jun  8 01:16 usr
-rwxr-xr-x  1 root root 9388791 Sep  4  2007 vmlinux

Does that appear to have what ati-drivers should need?

Best regards,
John


 It's my understanding that
> ati-drivers need the full kernel source.  Likely they use (or check)
> some of the kernel's internal header files to "match up" the driver
> with the kernel it's running against.
> 
> If you've got the full kernel source, then all I can suggest is
> getting source for the newest kernel, building it (using your
> old .config as the starting point), rebooting, and (finally) emerging
> ati-drivers.  The steps up to and including rebooting should provide a
> consistent kernel version and source tree and make ati-drivers happy.
> 
> HTH,
> 
> David
> 
> 


-- 
John P. Burkett
Department of Economics
University of Rhode Island
Kingston, RI 02881-0808
USA

phone (401) 874-9195



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [gentoo-amd64] emerge -eav system failed with ati-drivers
  2009-06-21 19:19         ` John P. Burkett
@ 2009-06-21 20:10           ` David Relson
  2009-06-21 20:48           ` Drake Donahue
  1 sibling, 0 replies; 24+ messages in thread
From: David Relson @ 2009-06-21 20:10 UTC (permalink / raw
  To: gentoo-amd64; +Cc: burkett

On Sun, 21 Jun 2009 15:19:53 -0400
John P. Burkett wrote:

> David Relson wrote:
> > On Sun, 21 Jun 2009 14:54:36 -0400
> > John P. Burkett wrote:
> > 
> >> David Relson wrote:
> >>> On Sun, 21 Jun 2009 13:55:10 -0400
> >>> Drake Donahue wrote:
> >>>
> >>>> <snip>
> >>>>
> >>>> I'm guessing you did an "emerge --depclean" sometime after
> >>>> compiling the 2.6.22-r2 kernel and after emerging a new
> >>>> gentoo-sources that erased your make files, This is something
> >>>> depclean loves to do while leaving 99% of the older kernel source
> >>>> files intact. I think depclean leaves your .config file in place.
> >>>> Been a few weeks since I burned myself last with this one. 
> >>>> If you were following directions back in 2007 you should have a
> >>>> stored 2.6.22-r2 config in the /boot directory.
> >>>>
> >>>> Try "emerge =sys-kernel/gentoo-sources-2.6.22-r2 to re-emerge the
> >>>> old package and regain the make files. What the osmp is about
> >>>> beats me.
> >>>>
> >>>> or
> >>>>
> >>>> Emerge a new gentoo-sources, eselect it, configure, compile,
> >>>> install a new (current) kernel.
> >>> My understanding is that ati-drivers expects /usr/src/linux to
> >>> contain the source of the currently running kernel.
> >>>
> >>> I'm running a 2.6.28 kernel.  I have downloaded 2.6.30 and built
> >>> that but have not yet rebooted.  "emerge ati-drivers" failed with
> >>> 2.6.30 in /usr/src/linux.  Changing directory names allowed
> >>> ati-drivers to build happily.
> >>>
> >> David, thank you for sharing your experience. On my system, doing
> >> "uname -r" gets the response "2.6.22-gentoo-r2-osmp".  In
> >> my /usr/src/linux directory I currently have a .config file
> >> starting with the lines # Automatically generated make config:
> >> don't edit # Linux kernel version: 2.6.22-gentoo-r2
> >> # Mon Sep  3 21:48:37 2007
> >> Can you suggest how to change directory names to allow the
> >> ati-drivers to build?
> >>
> >> Best regards,
> >> John
> > 
> > John,
> > 
> > /usr/src/linux is what I'd want to see.  Do you have just a few
> > files (like .config) or the full kernel source? 
> Thanks for your continuing help with the ati-driver problem.  Doing
> "ls -al" in my /usr/src/linux directory produces the following list:
> total 28451
> drwxr-xr-x 19 root root    1088 Jun  8 01:16 .
> drwxr-xr-x  3 root root     136 Jun  8 01:19 ..
> -rw-r--r--  1 root root     440 Sep  4  2007 ..tmp_kallsyms1.o.cmd
> -rw-r--r--  1 root root     440 Sep  4  2007 ..tmp_kallsyms2.o.cmd
> -rw-r--r--  1 root root     636 Sep  4  2007 ..tmp_vmlinux1.cmd
> -rw-r--r--  1 root root     652 Sep  4  2007 ..tmp_vmlinux2.cmd
> -rw-r--r--  1 root root   47220 Jun 21 13:34 .config
> -rw-r--r--  1 root root   47220 Sep  3  2007 .config.old
> -rw-r--r--  1 root root     365 Sep  4  2007 .missing-syscalls.d
> -rw-r--r--  1 root root 1418737 Sep  4  2007 .tmp_System.map
> -rw-r--r--  1 root root 1578817 Sep  4  2007 .tmp_kallsyms1.S
> -rw-r--r--  1 root root  735072 Sep  4  2007 .tmp_kallsyms1.o
> -rw-r--r--  1 root root 1578817 Sep  4  2007 .tmp_kallsyms2.S
> -rw-r--r--  1 root root  735072 Sep  4  2007 .tmp_kallsyms2.o
> drwxr-xr-x  2 root root   10176 Sep  4  2007 .tmp_versions
> -rwxr-xr-x  1 root root 9069262 Sep  4  2007 .tmp_vmlinux1
> -rwxr-xr-x  1 root root 9388791 Sep  4  2007 .tmp_vmlinux2
> -rw-r--r--  1 root root       2 Sep  4  2007 .version
> -rw-r--r--  1 root root     640 Sep  4  2007 .vmlinux.cmd
> -rw-r--r--  1 root root  252456 Sep  4  2007 Module.symvers
> -rw-r--r--  1 root root 1418737 Sep  4  2007 System.map
> drwxr-xr-x  4 root root      96 Jun  8 01:16 arch
> drwxr-xr-x  2 root root     752 Jun  8 01:16 block
> drwxr-xr-x  2 root root    6640 Jun  8 01:16 crypto
> drwxr-xr-x 35 root root     968 Jun  8 01:16 drivers
> drwxr-xr-x 35 root root    4936 Jun  8 01:16 fs
> drwxr-xr-x  5 root root     152 Jun  8 01:16 include
> drwxr-xr-x  2 root root     736 Jun  8 01:16 init
> drwxr-xr-x  2 root root     680 Jun  8 01:16 ipc
> drwxr-xr-x  5 root root    3832 Jun  8 01:16 kernel
> drwxr-xr-x  4 root root    4512 Jun  8 01:16 lib
> drwxr-xr-x  2 root root    2616 Jun  8 01:16 mm
> drwxr-xr-x 23 root root     856 Jun  8 01:16 net
> drwxr-xr-x  6 root root     320 Jun  8 01:16 scripts
> drwxr-xr-x  2 root root     208 Jun  8 01:16 security
> drwxr-xr-x 16 root root     904 Jun  8 01:16 sound
> drwxr-xr-x  2 root root     424 Jun  8 01:16 usr
> -rwxr-xr-x  1 root root 9388791 Sep  4  2007 vmlinux
> 
> Does that appear to have what ati-drivers should need?
> 
> Best regards,
> John

John,

That looks like what I've got.  If you're up to some debugging, here's
some more info:

When I deliberating have the wrong kernel source in /usr/src/linux, my
build fails the last few lines printed are:

 If you need support, post the topmost build error, and the call stack
 if relevant.
 * A complete build log is located at
 '/var/log/portage/x11-drivers:ati-drivers-8.552-r2:20090621-200106.log'.
 * The ebuild environment file is located at
   '/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/temp/environment'.


Looking at file .../temp/environment I see it's a bash script and
contains line 2536 is

    get_version || die "Unable to calculate Linux Kernel version";

which is the message in your original post.  Evidently function
get_version() is failing and causing the "die" command to be executed.
 I have function get_version() at line 2326 of .../environment.  Take a
 look at that and see if you can figure out where it might be dying.
 Running the script in debug mode, i.e. using "sh -x environment", will
 give you detailed information about the script is finding and doing.


HTH,

David




^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [gentoo-amd64] emerge -eav system failed with ati-drivers
  2009-06-21 19:19         ` John P. Burkett
  2009-06-21 20:10           ` David Relson
@ 2009-06-21 20:48           ` Drake Donahue
  2009-06-21 21:55             ` John P. Burkett
  1 sibling, 1 reply; 24+ messages in thread
From: Drake Donahue @ 2009-06-21 20:48 UTC (permalink / raw
  To: gentoo-amd64

Burkett asked: 

Should I back up any particular files before doing "emerge
=sys-kernel/gentoo-sources-2.6.22-r2"? You will simply be restoring the
bits that depclean removed.

No files should need to backed up.

After the emerge you should be able to restart the emerge -eav world
without problems with "no make file". 

It would be good for you to post the results of
eselect kernel list




^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [gentoo-amd64] emerge -eav system failed with ati-drivers
  2009-06-21 20:48           ` Drake Donahue
@ 2009-06-21 21:55             ` John P. Burkett
  2009-06-21 23:05               ` David Fellows
  2009-06-21 23:19               ` [gentoo-amd64] " Duncan
  0 siblings, 2 replies; 24+ messages in thread
From: John P. Burkett @ 2009-06-21 21:55 UTC (permalink / raw
  To: gentoo-amd64

Drake Donahue wrote:
> Burkett asked: 
> 
> Should I back up any particular files before doing "emerge
> =sys-kernel/gentoo-sources-2.6.22-r2"? You will simply be restoring the
> bits that depclean removed.
> 
> No files should need to backed up.

Thank you David.  Doing
emerge =sys-kernel/gentoo-sources-2.6.22-r2
produced the following response
emerge: there are no ebuilds to satisfy
"=sys-kernel/gentoo-sources-2.6.22-r2"

I also tried
emerge -s gentoo-sources-2.6.22-r2-osmp
and a few other variations without finding any ebuilds.

Ideas about how to emerge the sources would be very welcome.

Best regards,
John


> 
> After the emerge you should be able to restart the emerge -eav world
> without problems with "no make file". 
> 
> It would be good for you to post the results of
> eselect kernel list
> 
> 
> 


-- 
John P. Burkett
Department of Economics
University of Rhode Island
Kingston, RI 02881-0808
USA

phone (401) 874-9195



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [gentoo-amd64] emerge -eav system failed with ati-drivers
  2009-06-21 21:55             ` John P. Burkett
@ 2009-06-21 23:05               ` David Fellows
  2009-06-21 23:13                 ` Mark Knecht
                                   ` (2 more replies)
  2009-06-21 23:19               ` [gentoo-amd64] " Duncan
  1 sibling, 3 replies; 24+ messages in thread
From: David Fellows @ 2009-06-21 23:05 UTC (permalink / raw
  To: gentoo-amd64

On Sun, 21 Jun 2009 17:55:15 -0400 
"John P. Burkett" wrote -
> Drake Donahue wrote:
> > Burkett asked: 
> > 
> > Should I back up any particular files before doing "emerge
> > =sys-kernel/gentoo-sources-2.6.22-r2"? You will simply be restoring the
> > bits that depclean removed.
> > 
> > No files should need to backed up.
> 
> Thank you David.  Doing
> emerge =sys-kernel/gentoo-sources-2.6.22-r2
> produced the following response
> emerge: there are no ebuilds to satisfy
> "=sys-kernel/gentoo-sources-2.6.22-r2"

That is true. 2.6.22 has been removed from the portage tree. Your choices are:
1) to find some one who still has the 2.6.22-r2 ebuild and the corrresponding 
   sources and patches and create an overlay from them, then use that to 
   emerge from.

2) find someone who still has the top level Makefile from 2.6.22-r2 who will 
   send it to you. And hope that that is all you are missing.

3) Upgrade to a newer kernel. Presumably the latest stable that is compatible 
   with your desired driver version.

Realistically 3 is your only reasonable option.  The downside is you will have
to do a kernel configuration that is consistent with your existing 
configuration.

You will want to read the kernel upgrade guide first.
  http://www.gentoo.org/doc/en/kernel-upgrade.xml

Remember that emerging a kernel source only installs the source files. 
Compiling the kernel is another step.  You may already have a suitable kernel
source emerged. eselect kernel list will show which are emerged as will
  ls -l /usr/src

> 
> I also tried
> emerge -s gentoo-sources-2.6.22-r2-osmp
> and a few other variations without finding any ebuilds.

The osmp is a local identifying tag specified by the person that built 
your kernel. The smp probably means symetric multiprocessor. No idea 
what the o stands for.

> 
> Ideas about how to emerge the sources would be very welcome.
> 


Dave F



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [gentoo-amd64] emerge -eav system failed with ati-drivers
  2009-06-21 23:05               ` David Fellows
@ 2009-06-21 23:13                 ` Mark Knecht
  2009-06-21 23:58                 ` John P. Burkett
  2009-06-22 14:00                 ` [gentoo-amd64] " John P. Burkett
  2 siblings, 0 replies; 24+ messages in thread
From: Mark Knecht @ 2009-06-21 23:13 UTC (permalink / raw
  To: gentoo-amd64

On Sun, Jun 21, 2009 at 4:05 PM, David Fellows<fellows@unb.ca> wrote:
> On Sun, 21 Jun 2009 17:55:15 -0400
> "John P. Burkett" wrote -
>> Drake Donahue wrote:
>> > Burkett asked:
>> >
>> > Should I back up any particular files before doing "emerge
>> > =sys-kernel/gentoo-sources-2.6.22-r2"? You will simply be restoring the
>> > bits that depclean removed.
>> >
>> > No files should need to backed up.
>>
>> Thank you David.  Doing
>> emerge =sys-kernel/gentoo-sources-2.6.22-r2
>> produced the following response
>> emerge: there are no ebuilds to satisfy
>> "=sys-kernel/gentoo-sources-2.6.22-r2"
>
> That is true. 2.6.22 has been removed from the portage tree. Your choices are:
> 1) to find some one who still has the 2.6.22-r2 ebuild and the corrresponding
>   sources and patches and create an overlay from them, then use that to
>   emerge from.
>
> 2) find someone who still has the top level Makefile from 2.6.22-r2 who will
>   send it to you. And hope that that is all you are missing.
>
> 3) Upgrade to a newer kernel. Presumably the latest stable that is compatible
>   with your desired driver version.
>
> Realistically 3 is your only reasonable option.  The downside is you will have
> to do a kernel configuration that is consistent with your existing
> configuration.
>
> You will want to read the kernel upgrade guide first.
>  http://www.gentoo.org/doc/en/kernel-upgrade.xml
>
> Remember that emerging a kernel source only installs the source files.
> Compiling the kernel is another step.  You may already have a suitable kernel
> source emerged. eselect kernel list will show which are emerged as will
>  ls -l /usr/src
>
>>
>> I also tried
>> emerge -s gentoo-sources-2.6.22-r2-osmp
>> and a few other variations without finding any ebuilds.
>
> The osmp is a local identifying tag specified by the person that built
> your kernel. The smp probably means symetric multiprocessor. No idea
> what the o stands for.
>
>>
>> Ideas about how to emerge the sources would be very welcome.
>>
>
>
> Dave F

I haven't followed this thread so I'll reread it to get caught up.
However I've found with ati-drivers that you have to be VERY careful.
I have two Asus Pundit-R boxes which use the ATI driver so that I can
get video out on s-video. The problem is that I'm stuck - to the best
of my knowledge - with the following pair:

myth12 ~ # eix -Ic ati-drivers
[D] x11-drivers/ati-drivers (8.28.8-r1@05/19/07 -> (~)8.28.8!s): Ati
precompiled drivers for recent chipsets
myth12 ~ # uname -a
Linux myth12 2.6.19-gentoo-r5 #2 PREEMPT Sat May 19 17:55:30 PDT 2007
i686 Intel(R) Celeron(R) CPU 2.26GHz GenuineIntel GNU/Linux
myth12 ~ #

The issue is that ATI dropped support for my onboard video chip with
anything later than 8.28.8 and that won't work with anything newer
than 2.6.19.

Portage removed everything from my system at one point so I had to dig
around for a while to get copies and then masked everything higher to
stop updates.

If that kernel/driver pair would do you any good - doubtful - then let me know.

Cheers,
Mark



^ permalink raw reply	[flat|nested] 24+ messages in thread

* [gentoo-amd64]  Re: emerge -eav system failed with ati-drivers
  2009-06-21 21:55             ` John P. Burkett
  2009-06-21 23:05               ` David Fellows
@ 2009-06-21 23:19               ` Duncan
  2009-06-22  0:02                 ` John P. Burkett
  1 sibling, 1 reply; 24+ messages in thread
From: Duncan @ 2009-06-21 23:19 UTC (permalink / raw
  To: gentoo-amd64

"John P. Burkett" <burkett@uri.edu> posted 4A3EAC43.30004@uri.edu,
excerpted below, on  Sun, 21 Jun 2009 17:55:15 -0400:

> hank you David.  Doing
> emerge =sys-kernel/gentoo-sources-2.6.22-r2 produced the following
> response
> emerge: there are no ebuilds to satisfy
> "=sys-kernel/gentoo-sources-2.6.22-r2"
> 
> I also tried
> emerge -s gentoo-sources-2.6.22-r2-osmp and a few other variations
> without finding any ebuilds.
> 
> Ideas about how to emerge the sources would be very welcome.

Try epkginfo gentoo-sources

That should give you a list of all available versions and their keyword 
status, among other info (as long as you have gentoolkit installed, tho 
older gentoolkits might not include it as I think it's a newer 
addition).  It looks like there's no longer a gentoo-sources-2.6.22 
version in the tree.  I haven't synced in a few days so the list I get 
may be slightly outdated, but here, there's a version jump from 2.6.16 
(which was maintained as a long-term stable version for quite some time) 
to 2.6.25, then at least one revision of each kernel from there thru 30, 
the latest.

So it appears you'll need to upgrade to at least 2.6.25 if you stay with 
gentoo-sources, or switch to a different kernel package or grab the 
sources directly from upstream.

Personally, since you're upgrading, I'd suggest the latest stable, 2.6.29-
r5 it appears, so you won't need to worry about it for awhile.  But of 
course, the farther you upgrade in one jump, the more various config 
options will have changed a bit, leaving you with more questions to try 
to figure out the answer to when you make oldconfig, or genkernel, or 
whatever you use.

-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman




^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [gentoo-amd64] emerge -eav system failed with ati-drivers
  2009-06-21 23:05               ` David Fellows
  2009-06-21 23:13                 ` Mark Knecht
@ 2009-06-21 23:58                 ` John P. Burkett
  2009-06-22 14:19                   ` David Fellows
  2009-06-22 14:00                 ` [gentoo-amd64] " John P. Burkett
  2 siblings, 1 reply; 24+ messages in thread
From: John P. Burkett @ 2009-06-21 23:58 UTC (permalink / raw
  To: gentoo-amd64

Thank you, David.

David Fellows wrote:
> On Sun, 21 Jun 2009 17:55:15 -0400 
> "John P. Burkett" wrote -
>> Drake Donahue wrote:
>>> Burkett asked: 
>>>
>>> Should I back up any particular files before doing "emerge
>>> =sys-kernel/gentoo-sources-2.6.22-r2"? You will simply be restoring the
>>> bits that depclean removed.
>>>
>>> No files should need to backed up.
>> Thank you David.  Doing
>> emerge =sys-kernel/gentoo-sources-2.6.22-r2
>> produced the following response
>> emerge: there are no ebuilds to satisfy
>> "=sys-kernel/gentoo-sources-2.6.22-r2"
> 
> That is true. 2.6.22 has been removed from the portage tree. Your choices are:
> 1) to find some one who still has the 2.6.22-r2 ebuild and the corrresponding 
>    sources and patches and create an overlay from them, then use that to 
>    emerge from.
> 
> 2) find someone who still has the top level Makefile from 2.6.22-r2 who will 
>    send it to you. And hope that that is all you are missing.
This appears to be the easiest short term solution.  In looking for the
top level Makefile from 2.6.22-r2, do I need to specify that it is to be
used on an amd64 machine or should I expect that any such file might
work on amd64 architecture?

> 
> 3) Upgrade to a newer kernel. Presumably the latest stable that is compatible 
>    with your desired driver version.
> 
> Realistically 3 is your only reasonable option.  The downside is you will have
> to do a kernel configuration that is consistent with your existing 
> configuration.
> 
> You will want to read the kernel upgrade guide first.
>   http://www.gentoo.org/doc/en/kernel-upgrade.xml
> 
> Remember that emerging a kernel source only installs the source files. 
> Compiling the kernel is another step.  You may already have a suitable kernel
> source emerged. eselect kernel list will show which are emerged as will
>   ls -l /usr/src
> 
>> I also tried
>> emerge -s gentoo-sources-2.6.22-r2-osmp
>> and a few other variations without finding any ebuilds.
> 
> The osmp is a local identifying tag specified by the person that built 
> your kernel. The smp probably means symetric multiprocessor. No idea 
> what the o stands for.
> 
>> Ideas about how to emerge the sources would be very welcome.
>>
> 
> 
> Dave F
> 
> 


-- 
John P. Burkett
Department of Economics
University of Rhode Island
Kingston, RI 02881-0808
USA

phone (401) 874-9195



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [gentoo-amd64]  Re: emerge -eav system failed with ati-drivers
  2009-06-21 23:19               ` [gentoo-amd64] " Duncan
@ 2009-06-22  0:02                 ` John P. Burkett
  2009-06-22  0:46                   ` David Relson
  0 siblings, 1 reply; 24+ messages in thread
From: John P. Burkett @ 2009-06-22  0:02 UTC (permalink / raw
  To: gentoo-amd64

Duncan wrote:
> "John P. Burkett" <burkett@uri.edu> posted 4A3EAC43.30004@uri.edu,
> excerpted below, on  Sun, 21 Jun 2009 17:55:15 -0400:
> 
>> hank you David.  Doing
>> emerge =sys-kernel/gentoo-sources-2.6.22-r2 produced the following
>> response
>> emerge: there are no ebuilds to satisfy
>> "=sys-kernel/gentoo-sources-2.6.22-r2"
>>
>> I also tried
>> emerge -s gentoo-sources-2.6.22-r2-osmp and a few other variations
>> without finding any ebuilds.
>>
>> Ideas about how to emerge the sources would be very welcome.
> 
> Try epkginfo gentoo-sources
> 
> That should give you a list of all available versions and their keyword 
> status, among other info (as long as you have gentoolkit installed, tho 
> older gentoolkits might not include it as I think it's a newer 
> addition).  It looks like there's no longer a gentoo-sources-2.6.22 
> version in the tree.  I haven't synced in a few days so the list I get 
> may be slightly outdated, but here, there's a version jump from 2.6.16 
> (which was maintained as a long-term stable version for quite some time) 
> to 2.6.25, then at least one revision of each kernel from there thru 30, 
> the latest.
Thank you, Duncan.  Doing epkginfo gentoo-sources on my machine confirms
your observations.


> 
> So it appears you'll need to upgrade to at least 2.6.25 if you stay with 
> gentoo-sources, or switch to a different kernel package or grab the 
> sources directly from upstream.
> 
> Personally, since you're upgrading, I'd suggest the latest stable, 2.6.29-
> r5 it appears, so you won't need to worry about it for awhile.  But of 
> course, the farther you upgrade in one jump, the more various config 
> options will have changed a bit, leaving you with more questions to try 
> to figure out the answer to when you make oldconfig, or genkernel, or 
> whatever you use.
> 


-- 
John P. Burkett
Department of Economics
University of Rhode Island
Kingston, RI 02881-0808
USA

phone (401) 874-9195



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [gentoo-amd64]  Re: emerge -eav system failed with ati-drivers
  2009-06-22  0:02                 ` John P. Burkett
@ 2009-06-22  0:46                   ` David Relson
  0 siblings, 0 replies; 24+ messages in thread
From: David Relson @ 2009-06-22  0:46 UTC (permalink / raw
  To: gentoo-amd64; +Cc: burkett

On Sun, 21 Jun 2009 20:02:44 -0400
John P. Burkett wrote:

> Duncan wrote:
> > "John P. Burkett" <burkett@uri.edu> posted 4A3EAC43.30004@uri.edu,
> > excerpted below, on  Sun, 21 Jun 2009 17:55:15 -0400:
> > 
> >> hank you David.  Doing
> >> emerge =sys-kernel/gentoo-sources-2.6.22-r2 produced the following
> >> response
> >> emerge: there are no ebuilds to satisfy
> >> "=sys-kernel/gentoo-sources-2.6.22-r2"
> >>
> >> I also tried
> >> emerge -s gentoo-sources-2.6.22-r2-osmp and a few other variations
> >> without finding any ebuilds.

The "-osmp" indicates a "local version".  The proper source for your
kernel is 2.6.22-r2.

If you grep your .config, you'll see the "-osmp" text. 

> >>
> >> Ideas about how to emerge the sources would be very welcome.
> > 
> > Try epkginfo gentoo-sources
> > 
> > That should give you a list of all available versions and their
> > keyword status, among other info (as long as you have gentoolkit
> > installed, tho older gentoolkits might not include it as I think
> > it's a newer addition).  It looks like there's no longer a
> > gentoo-sources-2.6.22 version in the tree.  I haven't synced in a
> > few days so the list I get may be slightly outdated, but here,
> > there's a version jump from 2.6.16 (which was maintained as a
> > long-term stable version for quite some time) to 2.6.25, then at
> > least one revision of each kernel from there thru 30, the latest.
> Thank you, Duncan.  Doing epkginfo gentoo-sources on my machine
> confirms your observations.


Not sure if it's relevant, but all ati-driver ebuilds after 8.552-r3
have a kernel version check and won't build with 2.6.29 or newer.  The
check is in the following lines:

  if kernel_is ge 2 6 29; then
   die "${P} is not yet compatible with 2.6.29 kernels. See bug #264021." 
  fi

So, for the time being, I'm sticking with 2.6.28 and abandoning efforts
to use 2.6.30.

Regards,

David



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [gentoo-amd64] emerge -eav system failed with ati-drivers
  2009-06-21 23:05               ` David Fellows
  2009-06-21 23:13                 ` Mark Knecht
  2009-06-21 23:58                 ` John P. Burkett
@ 2009-06-22 14:00                 ` John P. Burkett
  2 siblings, 0 replies; 24+ messages in thread
From: John P. Burkett @ 2009-06-22 14:00 UTC (permalink / raw
  To: gentoo-amd64

[-- Attachment #1: Type: text/plain, Size: 4549 bytes --]

David Fellows wrote:
> On Sun, 21 Jun 2009 17:55:15 -0400 
> "John P. Burkett" wrote -
>> Drake Donahue wrote:
>>> Burkett asked: 
>>>
>>> Should I back up any particular files before doing "emerge
>>> =sys-kernel/gentoo-sources-2.6.22-r2"? You will simply be restoring the
>>> bits that depclean removed.
>>>
>>> No files should need to backed up.
>> Thank you David.  Doing
>> emerge =sys-kernel/gentoo-sources-2.6.22-r2
>> produced the following response
>> emerge: there are no ebuilds to satisfy
>> "=sys-kernel/gentoo-sources-2.6.22-r2"
> 
> That is true. 2.6.22 has been removed from the portage tree. Your choices are:
> 1) to find some one who still has the 2.6.22-r2 ebuild and the corrresponding 
>    sources and patches and create an overlay from them, then use that to 
>    emerge from.
> 
> 2) find someone who still has the top level Makefile from 2.6.22-r2 who will 
>    send it to you. And hope that that is all you are missing.
Thank you David.  On an x86 machine running kernel 2.6.17-gentoo-r4 I
found /usr/src/linux-2.6.22-gentoo-r2/Makefile. I downloaded that
Makefile to the /usr/src/linux-2.6.22-gentoo-r2 directory of my amd64
machine running 2.6.22-gentoo-r2.  Doing "eix-sync" and "emerge
ati-drivers" then produced the following response:

 * Found kernel source directory:
 *     /usr/src/linux
 * Could not detect kernel version.
 * Please ensure that /usr/src/linux points to a complete set of Linux
sources.
 *
 * ERROR: x11-drivers/ati-drivers-8.552-r2 failed.
 * Call stack:
 *                     ebuild.sh, line   49:  Called pkg_setup
 *   ati-drivers-8.552-r2.ebuild, line   70:  Called linux-mod_pkg_setup
 *              linux-mod.eclass, line  578:  Called linux-info_pkg_setup
 *             linux-info.eclass, line  696:  Called die
 * The specific snippet of code:
 *      get_version || die "Unable to calculate Linux Kernel version"
 *  The die message:
 *   Unable to calculate Linux Kernel version
 *
 * 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/x11-drivers/ati-drivers-8.552-r2/temp/build.log'.
 * The ebuild environment file is located at
'/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/temp/die.env'.
 *

>>> Failed to emerge x11-drivers/ati-drivers-8.552-r2, Log file:

>>>  '/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/temp/build.log'

 * Messages for package x11-drivers/ati-drivers-8.552-r2:

 * Could not detect kernel version.
 * Please ensure that /usr/src/linux points to a complete set of Linux
sources.
 *
 * ERROR: x11-drivers/ati-drivers-8.552-r2 failed.
 * Call stack:
 *                     ebuild.sh, line   49:  Called pkg_setup
 *   ati-drivers-8.552-r2.ebuild, line   70:  Called linux-mod_pkg_setup
 *              linux-mod.eclass, line  578:  Called linux-info_pkg_setup
 *             linux-info.eclass, line  696:  Called die
 * The specific snippet of code:
 *      get_version || die "Unable to calculate Linux Kernel version"
 *  The die message:
 *   Unable to calculate Linux Kernel version

The build log and ebuild environment files are attached.

Doing "ls -l" in my /usr/src/linux directory produces a list including
the following line:
-rw-r--r--  1 john john   50411 Jun 22 09:09 Makefile

I'd be grateful for ideas about how to help emerge detect the kernel
version.

Best regards,
John



> 
> 3) Upgrade to a newer kernel. Presumably the latest stable that is compatible 
>    with your desired driver version.
> 
> Realistically 3 is your only reasonable option.  The downside is you will have
> to do a kernel configuration that is consistent with your existing 
> configuration.
> 
> You will want to read the kernel upgrade guide first.
>   http://www.gentoo.org/doc/en/kernel-upgrade.xml
> 
> Remember that emerging a kernel source only installs the source files. 
> Compiling the kernel is another step.  You may already have a suitable kernel
> source emerged. eselect kernel list will show which are emerged as will
>   ls -l /usr/src
> 
>> I also tried
>> emerge -s gentoo-sources-2.6.22-r2-osmp
>> and a few other variations without finding any ebuilds.
> 
> The osmp is a local identifying tag specified by the person that built 
> your kernel. The smp probably means symetric multiprocessor. No idea 
> what the o stands for.
> 
>> Ideas about how to emerge the sources would be very welcome.
>>
> 
> 
> Dave F
> 
> 


-- 
John P. Burkett
Department of Economics
University of Rhode Island
Kingston, RI 02881-0808
USA

phone (401) 874-9195

[-- Attachment #2: build.log --]
[-- Type: text/plain, Size: 1294 bytes --]

 ^[[32;01m*^[[0m Determining the location of the kernel source code
 ^[[32;01m*^[[0m Found kernel source directory:
 ^[[32;01m*^[[0m     /usr/src/linux
 ^[[31;01m*^[[0m Could not detect kernel version.
 ^[[31;01m*^[[0m Please ensure that /usr/src/linux points to a complete set of Linux sources.
 ^[[31;01m*^[[0m 
 ^[[31;01m*^[[0m ERROR: x11-drivers/ati-drivers-8.552-r2 failed.
 ^[[31;01m*^[[0m Call stack:
 ^[[31;01m*^[[0m                     ebuild.sh, line   49:  Called pkg_setup
 ^[[31;01m*^[[0m   ati-drivers-8.552-r2.ebuild, line   70:  Called linux-mod_pkg_setup
 ^[[31;01m*^[[0m              linux-mod.eclass, line  578:  Called linux-info_pkg_setup
 ^[[31;01m*^[[0m             linux-info.eclass, line  696:  Called die
 ^[[31;01m*^[[0m The specific snippet of code:
 ^[[31;01m*^[[0m   	get_version || die "Unable to calculate Linux Kernel version"
 ^[[31;01m*^[[0m  The die message:
 ^[[31;01m*^[[0m   Unable to calculate Linux Kernel version
 ^[[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/x11-drivers/ati-drivers-8.552-r2/temp/build.log'.
 ^[[31;01m*^[[0m The ebuild environment file is located at '/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/temp/die.env'.
 ^[[31;01m*^[[0m 

[-- Attachment #3: die.env --]
[-- Type: text/plain, Size: 221302 bytes --]

ABI=amd64
ALSA_CARDS=
ALSA_PCM_PLUGINS='adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol'
ANT_HOME=/usr/share/ant
APACHE2_MODULES='actions alias auth_basic auth_digest authn_anon authn_dbd 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 dbd deflate dir disk_cache env expires ext_filter file_cache filter headers ident imagemap include info log_config logio mem_cache mime mime_magic negotiation proxy proxy_ajp proxy_balancer proxy_connect proxy_http rewrite setenvif so speling status unique_id userdir usertrack vhost_alias'
ARCH=amd64
ASFLAGS_x86=--32
ATI_URL=https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/
BAD=$'\E[31;01m'
BASH=/bin/bash
BASH_ARGC=([0]="1" [1]="0" [2]="0" [3]="0" [4]="1" [5]="1" [6]="1" [7]="0" [8]="0" [9]="1")
BASH_ARGV=([0]="Unable to calculate Linux Kernel version" [1]="pkg_setup" [2]="pkg_setup" [3]="pkg_setup" [4]="setup")
BASH_LINENO=([0]="696" [1]="578" [2]="70" [3]="49" [4]="639" [5]="646" [6]="651" [7]="2048" [8]="2112" [9]="0")
BASH_SOURCE=([0]="/usr/lib64/portage/bin/isolated-functions.sh" [1]="/usr/portage/eclass/linux-info.eclass" [2]="/usr/portage/eclass/linux-mod.eclass" [3]="/usr/portage/x11-drivers/ati-drivers/ati-drivers-8.552-r2.ebuild" [4]="/usr/lib64/portage/bin/ebuild.sh" [5]="/usr/lib64/portage/bin/ebuild.sh" [6]="/usr/lib64/portage/bin/ebuild.sh" [7]="/usr/lib64/portage/bin/ebuild.sh" [8]="/usr/lib64/portage/bin/ebuild.sh" [9]="/usr/lib64/portage/bin/ebuild.sh")
BASH_VERSINFO=([0]="3" [1]="2" [2]="39" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
BASH_VERSION='3.2.39(1)-release'
BRACKET=$'\E[34;01m'
BUILD_PREFIX=/var/tmp/portage
BUILD_TARGETS=kmod_build
CATEGORY=x11-drivers
CBUILD=x86_64-pc-linux-gnu
CCACHE_DIR=/var/tmp/ccache
CDEFINE_amd64=__x86_64__
CDEFINE_default=__unix__
CDEFINE_x86=__i386__
CFLAGS='-Os -march=opteron -mtune=opteron -fomit-frame-pointer -ggdb'
CFLAGS_x86=-m32
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
COLS=70
CROSSCOMPILE_OPTS=
CTARGET_default=x86_64-pc-linux-gnu
CVS_RSH=ssh
CXXFLAGS='-Os -march=opteron -mtune=opteron -fomit-frame-pointer -ggdb'
D=/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/image/
DCCC_PATH=/usr/lib64/distcc/bin
DEFAULT_ABI=amd64
DEFINED_PHASES=' compile install postinst postrm preinst setup unpack'
DEPEND=$'>=x11-base/xorg-server-1.5\n\t!x11-apps/ati-drivers-extra\n\t>=app-admin/eselect-1.0.9\n\tapp-admin/eselect-opengl\n\tamd64? ( app-emulation/emul-linux-x86-xlibs )\n\tacpi? (\n\t\tx11-apps/xauth\n\t\tsys-power/acpid\n\t)\n\tx11-libs/libXrandr\n\t>=sys-apps/portage-2.1.1-r1\n\tx11-proto/xf86miscproto\n\tx11-proto/xf86vidmodeproto\n\tx11-proto/inputproto\n\t!<x11-drivers/ati-drivers-8.552-r1  kernel_linux? ( virtual/linux-sources ) kernel_linux? ( virtual/modutils )\n\tsys-apps/sed'
DESCRIPTION='Ati precompiled drivers for recent chipsets'
DESTTREE=/usr
DIROPTIONS=-m0755
DIRSTACK=()
DISPLAY=:0.0
DISTCC_LOG=
DISTCC_VERBOSE=0
DISTDIR=/usr/portage/distfiles
EAPI=0
EBUILD=/usr/portage/x11-drivers/ati-drivers/ati-drivers-8.552-r2.ebuild
EBUILD_EXIT_STATUS_FILE=/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/.exit_status
EBUILD_MASTER_PID=14247
EBUILD_PHASE=setup
EBUILD_SH_ARGS=setup
ECLASSDIR=/usr/portage/eclass
ECLASS_DEPTH=0
EDITOR=/bin/nano
ELIBC=glibc
EMERGE_FROM=ebuild
EMULTILIB_PKG=true
ENDCOL=$'\E[A\E[70C'
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/x11-drivers/ati-drivers-8.552-r2/work/patch
EPATCH_SUFFIX=patch.bz2
EUID=0
EXEOPTIONS=-m0755
FEATURES='ccache distlocks fixpackages parallel-fetch protect-owned sandbox sfperms strict unmerge-orphans userfetch'
FILESDIR=/usr/portage/x11-drivers/ati-drivers/files
FUNCNAME=([0]="die" [1]="linux-info_pkg_setup" [2]="linux-mod_pkg_setup" [3]="pkg_setup" [4]="qa_call" [5]="ebuild_phase" [6]="ebuild_phase_with_hooks" [7]="dyn_setup" [8]="ebuild_main" [9]="main")
GCC_SPECS=
GDK_USE_XFT=1
GOOD=$'\E[32;01m'
GROUPS=()
GUILE_LOAD_PATH=/usr/share/guile/1.8
G_FILENAME_ENCODING=@locale
HILITE=$'\E[36m'
HOME=/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/homedir
HOMEPAGE=http://www.ati.com
HOSTNAME=microway
HOSTTYPE=x86_64
IFS=$' \t\n'
INHERITED='toolchain-funcs portability versionator multilib linux-info linux-mod eutils'
INPUT_DEVICES='keyboard mouse'
INSDESTTREE=
INSOPTIONS=-m0644
IUSE='acpi debug  kernel_linux'
JAVAC=/etc/java-config-2/current-system-vm/bin/javac
JAVACC_HOME=/usr/share/javacc/
JAVA_HOME=/etc/java-config-2/current-system-vm
JDK_HOME=/etc/java-config-2/current-system-vm
KDEDIRS=/usr
KERNEL=linux
KERNEL_ABI=amd64
KERNEL_DIR=/usr/src/linux
KEYWORDS='amd64 x86'
KV=2.6.22-gentoo-r2-osmp
KV_DIR=/usr/src/linux
KV_EXTRA=
KV_MAJOR=
KV_MINOR=
KV_PATCH=
LANG=en_US.utf-8
LAST_E_CMD=eerror
LCD_DEVICES=
LC_ALL=C
LDFLAGS=-Wl,-O1
LDFLAGS_x86='-m elf_i386'
LESS='-R -M --shift 5'
LESSOPEN='|lesspipe.sh %s'
LIBDIR_amd64=lib64
LIBDIR_amd64_fbsd=lib64
LIBDIR_default=lib
LIBDIR_ppc=lib32
LIBDIR_ppc64=lib64
LIBDIR_sparc32=lib32
LIBDIR_sparc64=lib64
LIBDIR_x86=lib32
LIBDIR_x86_fbsd=lib32
LIBGL_DRIVERS_PATH=/usr/lib64/dri:/usr/lib32/dri
LIBOPTIONS=-m0644
LICENSE='AMD GPL-2 QPL-1.0 as-is'
LOGNAME=root
LS_COLORS='rs=0:di=01;34:ln=01;36:hl=44;37:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.pdf=00;32:*.ps=00;32:*.txt=00;32:*.patch=00;32:*.diff=00;32:*.log=00;32:*.tex=00;32:*.doc=00;32:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:'
MACHTYPE=x86_64-pc-linux-gnu
MAKEOPTS=-j5
MODULE_DIR=/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/work/common/lib/modules/fglrx/build_mod
MODULE_NAMES='fglrx(video:/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/work/common/lib/modules/fglrx/build_mod/2.6.x)'
MOPREFIX=ati-drivers
MULTILIB_ABIS='amd64 x86'
MULTILIB_STRICT_DENY='64-bit.*shared object'
MULTILIB_STRICT_DIRS='/lib32 /lib /usr/lib32 /usr/lib /usr/kde/*/lib32 /usr/kde/*/lib /usr/qt/*/lib32 /usr/qt/*/lib /usr/X11R6/lib32 /usr/X11R6/lib'
MULTILIB_STRICT_EXEMPT='(perl5|gcc|gcc-lib|binutils|eclipse-3|debug|portage)'
NETBEANS='apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml'
NORMAL=$'\E[0m'
OLDIFS=$' \t\n'
OLDPWD=/usr/src/linux-2.6.22-gentoo-r2
OPENGL_PROFILE=xorg-x11
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
OUTPUT_DIR=
P=ati-drivers-8.552
PAGER=/usr/bin/less
PATH=/usr/lib/ccache/bin:/usr/lib64/portage/bin/ebuild-helpers:/usr/local/sbin:/sbin:/usr/sbin:/usr/local/bin:/bin:/usr/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.3.2:/usr/kde/3.5/sbin:/usr/kde/3.5/bin:/usr/qt/3/bin
PDEPEND=' '
PF=ati-drivers-8.552-r2
PIPESTATUS=([0]="0")
PKGDIR=/usr/portage/packages
PKGUSE=
PKG_CONFIG_PATH=/usr/qt/3/lib64/pkgconfig
PKG_LOGDIR=/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/temp/logging
PKG_TMPDIR=/var/tmp/binpkgs
PN=ati-drivers
PORTAGE_ARCHLIST='ppc x86-openbsd ppc-openbsd ppc64 x86-winnt x86-fbsd ppc-aix alpha arm x86-freebsd s390 amd64 x86-macos x64-openbsd ia64-hpux hppa x86-netbsd amd64-linux ia64-linux x86 sparc-solaris x64-freebsd sparc64-solaris x86-linux x64-macos sparc m68k-mint ia64 mips ppc-macos x86-interix x64-solaris amd64-fbsd mips-irix m68k sh x86-solaris sparc-fbsd'
PORTAGE_BASHRC=/etc/portage/bashrc
PORTAGE_BASHRCS_SOURCED=1
PORTAGE_BINPKG_FILE=
PORTAGE_BIN_PATH=/usr/lib64/portage/bin
PORTAGE_BUILDDIR=/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2
PORTAGE_COLORMAP=$'GOOD=$\'\E[32;01m\'\nWARN=$\'\E[33;01m\'\nBAD=$\'\E[31;01m\'\nHILITE=$\'\E[36m\'\nBRACKET=$\'\E[34;01m\''
PORTAGE_COMPRESS_EXCLUDE_SUFFIXES='css gif htm[l]? jp[e]?g js pdf png'
PORTAGE_CONFIGROOT=/
PORTAGE_DEBUG=0
PORTAGE_DEPCACHEDIR=/var/cache/edb/dep
PORTAGE_GID=250
PORTAGE_INST_GID=0
PORTAGE_INST_UID=0
PORTAGE_IUSE='^(3dfx|acpi|adabas|alpha|alsa\_cards\_aoa|alsa\_cards\_aoa\-fabric\-layout|alsa\_cards\_aoa\-onyx|alsa\_cards\_aoa\-soundbus|alsa\_cards\_aoa\-soundbus\-i2s|alsa\_cards\_aoa\-tas|alsa\_cards\_aoa\-toonie|alsa\_cards\_armaaci|alsa\_cards\_at91\-soc|alsa\_cards\_at91\-soc\-eti\-b1\-wm8731|alsa\_cards\_au1x00|alsa\_cards\_cs5535audio|alsa\_cards\_harmony|alsa\_cards\_powermac|alsa\_cards\_pxa2xx\-i2sound|alsa\_cards\_pxa2xx\-soc|alsa\_cards\_pxa2xx\-soc\-corgi|alsa\_cards\_pxa2xx\-soc\-poodle|alsa\_cards\_pxa2xx\-soc\-spitz|alsa\_cards\_pxa2xx\-soc\-tosa|alsa\_cards\_sa11xx\-uda1341ts|alsa\_cards\_sun\-amd7930|alsa\_cards\_sun\-cs4231|alsa\_cards\_sun\-dbri|altivec|amd64|amd64\-fbsd|amd64\-linux|aqua|arm|asm|birdstep|bmp|bmpx|bootstrap|build|capslib|clvm|cman|cmucl|coreaudio|crosscompile\_opts\_.*|dbmaker|debug|doomsday|drac|elibc\_AIX|elibc\_Darwin|elibc\_DragonFly|elibc\_FreeBSD|elibc\_HPUX|elibc\_IRIX|elibc\_Interix|elibc\_NetBSD|elibc\_OpenBSD|elibc\_SunOS|elibc\_.*|elibc\_glibc|elibc\_mintlib|elibc\_uclibc|emf|empress|empress\-bcs|esoob|fdftk|filepro|firebird|fixed\-point|frontbase|gamess|gcc64|gulm|hppa|ia64|ia64\-hpux|ia64\-linux|ibm|infopipe|informix|ingres|kdeprefix|kernel\_AIX|kernel\_Darwin|kernel\_FreeBSD|kernel\_HPUX|kernel\_IRIX|kernel\_Interix|kernel\_NetBSD|kernel\_OpenBSD|kernel\_SunOS|kernel\_.*|kernel\_freemint|kernel\_linux|lcd\_devices\_svga|m68k|m68k\-mint|macbook|mips|mips\-irix|multilib|n32|n64|osp|pam\_console|pbbuttonsd|pfpro|plugin|ppc|ppc64|ppc\-aix|ppc\-macos|ppc\-openbsd|ppcsha1|prefix|psyco|pvm|real|realcodecs|s390|selinux|sh|solid|sparc|sparc64\-solaris|sparc\-fbsd|sparc\-solaris|svga|sybase|sybase\-ct|tcc|uclibc|ultra1|userland\_BSD|userland\_GNU|userland\_.*|video\_cards\_geode|video\_cards\_i740|video\_cards\_impact|video\_cards\_imstt|video\_cards\_newport|video\_cards\_nsc|video\_cards\_sunbw2|video\_cards\_suncg14|video\_cards\_suncg3|video\_cards\_suncg6|video\_cards\_sunffb|video\_cards\_sunleo|video\_cards\_suntcx|video\_cards\_vermilion|video\_cards\_xgi|vidix|vis|win32codecs|x64\-freebsd|x64\-macos|x64\-openbsd|x64\-solaris|x86|x86\-fbsd|x86\-freebsd|x86\-interix|x86\-linux|x86\-macos|x86\-netbsd|x86\-openbsd|x86\-solaris|x86\-winnt|xmms|yellownet)$'
PORTAGE_LOG_FILE=/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/temp/build.log
PORTAGE_MASTER_PID=14209
PORTAGE_MUTABLE_FILTERED_VARS='AA HOSTNAME'
PORTAGE_PYM_PATH=/usr/lib64/portage/pym
PORTAGE_REPO_NAME=gentoo
PORTAGE_RESTRICT=
PORTAGE_SAVED_READONLY_VARS='A CATEGORY P PF PN PR PV PVR'
PORTAGE_TMPDIR=/var/tmp
PORTAGE_WORKDIR_MODE=0700
PORTDIR=/usr/portage
PORTDIR_OVERLAY=
PPID=14209
PR=r2
PREROOTPATH=
PROFILE_ONLY_VARIABLES='ARCH ELIBC KERNEL USERLAND'
PROFILE_PATHS=$'/usr/portage/profiles/base\n/usr/portage/profiles/default/linux\n/usr/portage/profiles/arch/base\n/usr/portage/profiles/features/multilib\n/usr/portage/profiles/arch/amd64\n/usr/portage/profiles/default/linux/amd64\n/usr/portage/profiles/releases\n/usr/portage/profiles/releases/2008.0\n/usr/portage/profiles/default/linux/amd64/2008.0\n/etc/portage/profile'
PROPERTIES=
PROVIDE=
PS4='+ '
PV=8.552
PVR=8.552-r2
PWD=/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2
QA_EXECSTACK_amd64=$'usr/lib64/dri/fglrx_dri.so\n\tusr/lib32/dri/fglrx_dri.so\n\tusr/lib64/opengl/ati/lib/libGL.so.1.2\n\tusr/lib32/opengl/ati/lib/libGL.so.1.2\n\topt/bin/amdcccle'
QA_EXECSTACK_x86=$'usr/lib/dri/fglrx_dri.so\n\tusr/lib/opengl/ati/lib/libGL.so.1.2\n\topt/bin/amdcccle'
QA_TEXTRELS_amd64=$'\n\tusr/lib64/opengl/ati/lib/libGL.so.1.2\n\tusr/lib32/opengl/ati/lib/libGL.so.1.2\n\tusr/lib64/dri/fglrx_dri.so\n\tusr/lib32/dri/fglrx_dri.so\n\tusr/lib32/xorg/modules/glesx.so\n\tusr/lib64/xorg/modules/glesx.so'
QA_TEXTRELS_x86=$'usr/lib/dri/fglrx_dri.so\n\tusr/lib/xorg/modules/drivers/fglrx_drv.so\n\tusr/lib/opengl/ati/lib/libGL.so.1.2\n\tusr/lib/xorg/modules/glesx.so\n\tusr/lib/xorg/modules/amdxmm.so'
QMAKESPEC=linux-g++
QTDIR=/usr/qt/3
RC_DEFAULT_INDENT=2
RC_DOT_PATTERN=
RC_ENDCOL=yes
RC_INDENTATION=
RDEPEND=$'>=x11-base/xorg-server-1.5\n\t!x11-apps/ati-drivers-extra\n\t>=app-admin/eselect-1.0.9\n\tapp-admin/eselect-opengl\n\tamd64? ( app-emulation/emul-linux-x86-xlibs )\n\tacpi? (\n\t\tx11-apps/xauth\n\t\tsys-power/acpid\n\t)\n\tx11-libs/libXrandr\n\t>=sys-apps/portage-2.1.1-r1   kernel_linux? ( virtual/modutils )'
READONLY_EBUILD_METADATA=$'DEFINED_PHASES DEPEND DESCRIPTION\n\tEAPI HOMEPAGE INHERITED IUSE KEYWORDS LICENSE\n\tPDEPEND PROVIDE RDEPEND RESTRICT SLOT SRC_URI'
READONLY_PORTAGE_VARS=$'D EBUILD EBUILD_PHASE \tEBUILD_SH_ARGS EMERGE_FROM FILESDIR PORTAGE_BINPKG_FILE \tPORTAGE_BIN_PATH PORTAGE_IUSE \tPORTAGE_PYM_PATH PORTAGE_MUTABLE_FILTERED_VARS \tPORTAGE_SAVED_READONLY_VARS PORTAGE_TMPDIR T WORKDIR'
RESTRICT=
ROOT=/
ROOTPATH=/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.3.2:/usr/kde/3.5/sbin:/usr/kde/3.5/bin:/usr/qt/3/bin
RPMDIR=/usr/portage/rpm
RSYNC_EXCLUDEFROM=/etc/portage/rsync_excludes
R_HOME=/usr/lib64/R
S=/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/work
SAGE_ROOT=/usr/local/sage-2.8.2-debian32-i686-Linux
SANDBOX_LOG=x11-drivers_-_ati-drivers-8.552-r2
SANDBOX_ON=0
SANDBOX_PREDICT=/proc/self/maps:/dev/console:/dev/random
SANDBOX_READ=/:/dev/shm:/dev/stdin:/var/tmp:/var/tmp/ccache
SANDBOX_WRITE=/dev/shm:/dev/stdout:/dev/stderr:/var/tmp:/var/tmp/ccache
SCHEME_LIBRARY_PATH=/usr/share/slib/
SGML_CATALOG_FILES=/etc/sgml/sgml-docbook.cat:/etc/sgml/openjade-1.3.2.cat:/etc/sgml/xml-docbook-4.4.cat:/etc/sgml/xml-docbook-4.1.2.cat:/etc/sgml/sgml-docbook-3.1.cat:/etc/sgml/sgml-lite.cat:/etc/sgml/dsssl-docbook-stylesheets.cat
SHELL=/bin/bash
SHELLOPTS=braceexpand:hashall:interactive-comments
SHLVL=3
SLOT=0
SRC_URI=https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux//ati-driver-installer-8-11-x86.x86_64.run
STAGE1_USE='multilib nptl nptlonly unicode'
STARTDIR=/usr/src/linux-2.6.22-gentoo-r2
SYMLINK_LIB=yes
T=/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/temp
TERM=xterm
TMP=/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/temp
TMPDIR=/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/temp
UID=0
USE='acpi amd64 elibc_glibc kernel_linux multilib userland_GNU'
USER=root
USERLAND=GNU
USE_EXPAND='ALSA_CARDS ALSA_PCM_PLUGINS APACHE2_MODULES APACHE2_MPMS CAMERAS CROSSCOMPILE_OPTS DVB_CARDS ELIBC FCDSL_CARDS FOO2ZJS_DEVICES FRITZCAPI_CARDS INPUT_DEVICES KERNEL LCD_DEVICES LINGUAS LIRC_DEVICES MISDN_CARDS NETBEANS_MODULES QEMU_SOFTMMU_TARGETS QEMU_USER_TARGETS USERLAND VIDEO_CARDS'
VIDEO_CARDS=
WARN=$'\E[33;01m'
WORKDIR=/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/work
XARGS='xargs -r'
XAUTHORITY=/root/.xauthgpNGVW
XDG_CONFIG_DIRS=/etc/xdg
XDG_DATA_DIRS=/usr/local/share:/usr/kde/3.5/share:/usr/share
_=']'
_E_DOCDESTTREE_=
_E_EXEDESTTREE_=
_RC_GET_KV_CACHE=
___ECLASS_RECUR_MULTILIB=yes
___ECLASS_RECUR_TOOLCHAIN_FUNCS=yes
args=
conf=ati-drivers-8.552-r2
f=
filespacing=27
j=1
lineno=696
linespacing=4
n=-1
phase_name=pkg_setup
retval=
shopts=$'cdable_vars    \toff\ncdspell        \toff\ncheckhash      \toff\ncheckwinsize   \toff\ncmdhist        \ton\ncompat31       \toff\ndotglob        \toff\nexecfail       \toff\nexpand_aliases \ton\nextdebug       \ton\nextglob        \toff\nextquote       \ton\nfailglob       \toff\nforce_fignore  \ton\ngnu_errfmt     \toff\nhistappend     \toff\nhistreedit     \toff\nhistverify     \toff\nhostcomplete   \ton\nhuponexit      \toff\ninteractive_comments\ton\nlithist        \toff\nlogin_shell    \toff\nmailwarn       \toff\nno_empty_cmd_completion\toff\nnocaseglob     \toff\nnocasematch    \toff\nnullglob       \toff\nprogcomp       \ton\npromptvars     \ton\nrestricted_shell\toff\nshift_verbose  \toff\nsourcepath     \ton\nxpg_echo       \toff'
sourcefile=isolated-functions.sh
str='linux-mod_pkg_setup: entering function'
x=pkg_setup
EXPORT_FUNCTIONS () 
{ 
    if [ -z "$ECLASS" ]; then
        die "EXPORT_FUNCTIONS without a defined ECLASS";
    fi;
    eval $__export_funcs_var+=\" $*\"
}
KV_major () 
{ 
    [[ -z $1 ]] && return 1;
    local KV=$@;
    echo "${KV%%.*}"
}
KV_micro () 
{ 
    [[ -z $1 ]] && return 1;
    local KV=$@;
    KV=${KV#*.*.};
    echo "${KV%%[^[:digit:]]*}"
}
KV_minor () 
{ 
    [[ -z $1 ]] && return 1;
    local KV=$@;
    KV=${KV#*.};
    echo "${KV%%.*}"
}
KV_to_int () 
{ 
    [[ -z $1 ]] && return 1;
    local KV_MAJOR=$(KV_major "$1");
    local KV_MINOR=$(KV_minor "$1");
    local KV_MICRO=$(KV_micro "$1");
    local KV_int=$(( KV_MAJOR * 65536 + KV_MINOR * 256 + KV_MICRO ));
    if [[ ${KV_int} -ge 131584 ]]; then
        echo "${KV_int}";
        return 0;
    fi;
    return 1
}
__versionator__test_version_compare () 
{ 
    __versionator_shopt_toggle on;
    local lt=1 eq=2 gt=3 p q;
    function __versionator__test_version_compare_t () 
    { 
        version_compare "${1}" "${3}";
        local r=$?;
        [[ ${r} -eq ${2} ]] || echo "FAIL: ${@} (got ${r} exp ${2})"
    };
    echo "
		0             $lt 1
		1             $lt 2
		2             $gt 1
		2             $eq 2
		0             $eq 0
		10            $lt 20
		68            $eq 068
		068           $gt 67
		068           $lt 69

		1.0           $lt 2.0
		2.0           $eq 2.0
		2.0           $gt 1.0

		1.0           $gt 0.0
		0.0           $eq 0.0
		0.0           $lt 1.0

		0.1           $lt 0.2
		0.2           $eq 0.2
		0.3           $gt 0.2

		1.2           $lt 2.1
		2.1           $gt 1.2

		1.2.3         $lt 1.2.4
		1.2.4         $gt 1.2.3

		1.2.0         $eq 1.2
		1.2.1         $gt 1.2
		1.2           $lt 1.2.1

		1.2b          $eq 1.2b
		1.2b          $lt 1.2c
		1.2b          $gt 1.2a
		1.2b          $gt 1.2
		1.2           $lt 1.2a

		1.3           $gt 1.2a
		1.3           $lt 1.3a

		1.0_alpha7    $lt 1.0_beta7
		1.0_beta      $lt 1.0_pre
		1.0_pre5      $lt 1.0_rc2
		1.0_rc2       $lt 1.0

		1.0_p1        $gt 1.0
		1.0_p1-r1     $gt 1.0_p1

		1.0_alpha6-r1 $gt 1.0_alpha6
		1.0_beta6-r1  $gt 1.0_alpha6-r2

		1.0_pre1      $lt 1.0-p1

		1.0p          $gt 1.0_p1
		1.0r          $gt 1.0-r1
		1.6.15        $gt 1.6.10-r2
		1.6.10-r2     $lt 1.6.15

	" | while read a b c; do
        [[ -z "${a}${b}${c}" ]] && continue;
        __versionator__test_version_compare_t "${a}" "${b}" "${c}";
    done;
    for q in "alpha beta pre rc=${lt};${gt}" "p r=${gt};${lt}";
    do
        for p in ${q%%=*};
        do
            local c=${q##*=};
            local alt=${c%%;*} agt=${c##*;};
            __versionator__test_version_compare_t "1.0" $agt "1.0_${p}";
            __versionator__test_version_compare_t "1.0" $agt "1.0_${p}1";
            __versionator__test_version_compare_t "1.0" $agt "1.0_${p}068";
            __versionator__test_version_compare_t "2.0_${p}" $alt "2.0";
            __versionator__test_version_compare_t "2.0_${p}1" $alt "2.0";
            __versionator__test_version_compare_t "2.0_${p}068" $alt "2.0";
            __versionator__test_version_compare_t "1.0_${p}" $eq "1.0_${p}";
            __versionator__test_version_compare_t "0.0_${p}" $lt "0.0_${p}1";
            __versionator__test_version_compare_t "666_${p}3" $gt "666_${p}";
            __versionator__test_version_compare_t "1_${p}7" $lt "1_${p}8";
            __versionator__test_version_compare_t "1_${p}7" $eq "1_${p}7";
            __versionator__test_version_compare_t "1_${p}7" $gt "1_${p}6";
            __versionator__test_version_compare_t "1_${p}09" $eq "1_${p}9";
        done;
    done;
    for p in "-r" "_p";
    do
        __versionator__test_version_compare_t "7.2${p}1" $lt "7.2${p}2";
        __versionator__test_version_compare_t "7.2${p}2" $gt "7.2${p}1";
        __versionator__test_version_compare_t "7.2${p}3" $gt "7.2${p}2";
        __versionator__test_version_compare_t "7.2${p}2" $lt "7.2${p}3";
    done;
    __versionator_shopt_toggle off
}
__versionator_shopt_toggle () 
{ 
    VERSIONATOR_RECURSION=${VERSIONATOR_RECURSION:-0};
    case "$1" in 
        "on")
            if [[ $VERSIONATOR_RECURSION -lt 1 ]]; then
                VERSIONATOR_OLD_EXTGLOB=$(shopt -p extglob);
                shopt -s extglob;
            fi;
            VERSIONATOR_RECURSION=$(( $VERSIONATOR_RECURSION + 1 ))
        ;;
        "off")
            VERSIONATOR_RECURSION=$(( $VERSIONATOR_RECURSION - 1 ));
            if [[ $VERSIONATOR_RECURSION -lt 1 ]]; then
                eval $VERSIONATOR_OLD_EXTGLOB;
            fi
        ;;
    esac;
    return 0
}
_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
}
_eapi0_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
}
_eapi0_src_compile () 
{ 
    if [ -x ./configure ]; then
        econf;
    fi;
    _eapi2_src_compile
}
_eapi0_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
}
_eapi0_src_unpack () 
{ 
    [[ -n ${A} ]] && unpack ${A}
}
_eapi1_src_compile () 
{ 
    _eapi2_src_configure;
    _eapi2_src_compile
}
_eapi2_src_compile () 
{ 
    if [ -f Makefile ] || [ -f GNUmakefile ] || [ -f makefile ]; then
        emake || die "emake failed";
    fi
}
_eapi2_src_configure () 
{ 
    if [[ -x ${ECONF_SOURCE:-.}/configure ]]; then
        econf;
    fi
}
_ebuild_arg_to_phase () 
{ 
    [ $# -ne 2 ] && die "expected exactly 2 args, got $#: $*";
    local eapi=$1;
    local arg=$2;
    local phase_func="";
    case "$arg" in 
        setup)
            phase_func=pkg_setup
        ;;
        nofetch)
            phase_func=pkg_nofetch
        ;;
        unpack)
            phase_func=src_unpack
        ;;
        prepare)
            ! hasq $eapi 0 1 && phase_func=src_prepare
        ;;
        configure)
            ! hasq $eapi 0 1 && phase_func=src_configure
        ;;
        compile)
            phase_func=src_compile
        ;;
        test)
            phase_func=src_test
        ;;
        install)
            phase_func=src_install
        ;;
        preinst)
            phase_func=pkg_preinst
        ;;
        postinst)
            phase_func=pkg_postinst
        ;;
        prerm)
            phase_func=pkg_prerm
        ;;
        postrm)
            phase_func=pkg_postrm
        ;;
    esac;
    [[ -z $phase_func ]] && return 1;
    echo "$phase_func";
    return 0
}
_ebuild_phase_funcs () 
{ 
    [ $# -ne 2 ] && die "expected exactly 2 args, got $#: $*";
    local eapi=$1;
    local phase_func=$2;
    local default_phases="pkg_nofetch src_unpack src_prepare src_configure
		src_compile src_install src_test";
    local x y default_func="";
    for x in pkg_nofetch src_unpack src_test;
    do
        declare -F $x > /dev/null || eval "$x() { _eapi0_$x \"\$@\" ; }";
    done;
    case $eapi in 
        0 | 1)
            if ! declare -F src_compile > /dev/null; then
                case $eapi in 
                    0)
                        function src_compile () 
                        { 
                            _eapi0_src_compile "$@"
                        }
                    ;;
                    *)
                        function src_compile () 
                        { 
                            _eapi1_src_compile "$@"
                        }
                    ;;
                esac;
            fi;
            for x in $default_phases;
            do
                eval "default_$x() {
					die \"default_$x() is not supported with EAPI='$eapi' during phase $phase_func\"
				}";
            done;
            eval "default() {
				die \"default() is not supported with EAPI='$eapi' during phase $phase_func\"
			}"
        ;;
        *)
            declare -F src_configure > /dev/null || function src_configure () 
            { 
                _eapi2_src_configure "$@"
            };
            declare -F src_compile > /dev/null || function src_compile () 
            { 
                _eapi2_src_compile "$@"
            };
            if hasq $phase_func $default_phases; then
                function _eapi2_pkg_nofetch () 
                { 
                    _eapi0_pkg_nofetch "$@"
                };
                function _eapi2_src_unpack () 
                { 
                    _eapi0_src_unpack "$@"
                };
                function _eapi2_src_prepare () 
                { 
                    true
                };
                function _eapi2_src_test () 
                { 
                    _eapi0_src_test "$@"
                };
                function _eapi2_src_install () 
                { 
                    die "$FUNCNAME is not supported"
                };
                for x in $default_phases;
                do
                    eval "default_$x() { _eapi2_$x \"\$@\" ; }";
                done;
                eval "default() { _eapi2_$phase_func \"\$@\" ; }";
            else
                for x in $default_phases;
                do
                    eval "default_$x() {
						die \"default_$x() is not supported in phase $default_func\"
					}";
                done;
                eval "default() {
					die \"default() is not supported with EAPI='$eapi' during phase $phase_func\"
				}";
            fi
        ;;
    esac
}
_eend () 
{ 
    local retval=${1:-0} efunc=${2:-eerror} msg;
    shift 2;
    if [[ ${retval} == "0" ]]; then
        msg="${BRACKET}[ ${GOOD}ok${BRACKET} ]${NORMAL}";
    else
        if [[ -n $* ]]; then
            ${efunc} "$*";
        fi;
        msg="${BRACKET}[ ${BAD}!!${BRACKET} ]${NORMAL}";
    fi;
    if [[ ${RC_ENDCOL} == "yes" ]]; then
        echo -e "${ENDCOL}  ${msg}";
    else
        [[ ${LAST_E_CMD} == ebegin ]] || LAST_E_LEN=0;
        printf "%$(( COLS - LAST_E_LEN - 6 ))s%b\n" '' "${msg}";
    fi;
    return ${retval}
}
_gcc-install-dir () 
{ 
    echo "$(LC_ALL=C $(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 ]]
}
_sb_append_var () 
{ 
    local _v=$1;
    shift;
    local var="SANDBOX_${_v}";
    [[ -z $1 || -n $2 ]] && die "Usage: add$(echo ${_v} | 		LC_ALL=C tr [:upper:] [:lower:]) <colon-delimited list of paths>";
    export ${var}="${!var:+${!var}:}$1"
}
_source_ebuild () 
{ 
    source_all_bashrcs;
    unset DEPEND RDEPEND PDEPEND IUSE;
    source "${EBUILD}" || die "error sourcing ebuild";
    if [ "${EBUILD_PHASE}" != "depend" ]; then
        RESTRICT=${PORTAGE_RESTRICT};
        [[ -e $PORTAGE_BUILDDIR/.ebuild_changed ]] && rm "$PORTAGE_BUILDDIR/.ebuild_changed";
    fi;
    set -f;
    if [ "${RDEPEND-unset}" == "unset" ]; then
        export RDEPEND=${DEPEND};
        debug-print "RDEPEND: not set... Setting to: ${DEPEND}";
    fi;
    IUSE="${IUSE} ${E_IUSE}";
    DEPEND="${DEPEND} ${E_DEPEND}";
    RDEPEND="${RDEPEND} ${E_RDEPEND}";
    PDEPEND="${PDEPEND} ${E_PDEPEND}";
    unset ECLASS E_IUSE E_DEPEND E_RDEPEND E_PDEPEND;
    set +f;
    [[ -n $EAPI ]] || EAPI=0;
    local f valid_phases;
    case "$EAPI" in 
        0 | 1)
            valid_phases="src_compile pkg_config pkg_info src_install
				pkg_nofetch pkg_postinst pkg_postrm pkg_preinst pkg_prerm
				pkg_setup src_test src_unpack"
        ;;
        *)
            valid_phases="src_compile pkg_config src_configure pkg_info
				src_install pkg_nofetch pkg_postinst pkg_postrm pkg_preinst
				src_prepare pkg_prerm pkg_setup src_test src_unpack"
        ;;
    esac;
    DEFINED_PHASES=;
    for f in $valid_phases;
    do
        if declare -F $f > /dev/null; then
            f=${f#pkg_};
            DEFINED_PHASES+=" ${f#src_}";
        fi;
    done;
    [[ -n $DEFINED_PHASES ]] || DEFINED_PHASES=-;
    [[ -n $QA_PRESTRIPPED ]] && export QA_PRESTRIPPED
}
abort_compile () 
{ 
    abort_handler "src_compile" $1;
    rm -f "${PORTAGE_BUILDDIR}/.compiled";
    exit 1
}
abort_configure () 
{ 
    abort_handler src_configure $1;
    rm -f "$PORTAGE_BUILDDIR/.configured";
    exit 1
}
abort_handler () 
{ 
    local msg;
    if [ "$2" != "fail" ]; then
        msg="${EBUILD}: ${1} aborted; exiting.";
    else
        msg="${EBUILD}: ${1} failed; exiting.";
    fi;
    echo;
    echo "$msg";
    echo;
    eval ${3};
    trap - SIGINT SIGQUIT
}
abort_install () 
{ 
    abort_handler "src_install" $1;
    rm -rf "${PORTAGE_BUILDDIR}/image";
    exit 1
}
abort_prepare () 
{ 
    abort_handler src_prepare $1;
    rm -f "$PORTAGE_BUILDDIR/.prepared";
    exit 1
}
abort_test () 
{ 
    abort_handler "dyn_test" $1;
    rm -f "${PORTAGE_BUILDDIR}/.tested";
    exit 1
}
adddeny () 
{ 
    _sb_append_var DENY "$@"
}
addpredict () 
{ 
    _sb_append_var PREDICT "$@"
}
addread () 
{ 
    _sb_append_var READ "$@"
}
addwrite () 
{ 
    _sb_append_var WRITE "$@"
}
bashrc_has () 
{ 
    [[ " ${*:2} " == *" $1 "* ]]
}
best_version () 
{ 
    if [ "${EBUILD_PHASE}" == "depend" ]; then
        die "portageq calls (best_version calls portageq) are not allowed in the global scope";
    fi;
    PYTHONPATH=${PORTAGE_PYM_PATH}${PYTHONPATH:+:}${PYTHONPATH} "${PORTAGE_BIN_PATH}/portageq" 'best_version' "${ROOT}" "$1";
    local retval=$?;
    case "${retval}" in 
        0)
            return 0
        ;;
        1)
            return 1
        ;;
        *)
            die "unexpected portageq exit code: ${retval}"
        ;;
    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_KV () 
{ 
    if [ -z "${KV}" ]; then
        eerror "";
        eerror "Could not determine your kernel version.";
        eerror "Make sure that you have a /usr/src/linux symlink,";
        eerror "and that the indicated kernel has been configured.";
        eerror "You can also simply run the following command";
        eerror "in the directory referenced by /usr/src/linux:";
        eerror " make include/linux/version.h";
        eerror "";
        die;
    fi
}
check_extra_config () 
{ 
    local config negate die error reworkmodulenames;
    local soft_errors_count=0 hard_errors_count=0 config_required=0;
    get_version;
    for config in ${CONFIG_CHECK};
    do
        if [[ "${config:0:1}" != "~" ]]; then
            config_required=1;
            break;
        fi;
    done;
    if [[ ${config_required} == 0 ]]; then
        if ! linux_config_exists; then
            return 0;
        fi;
    else
        require_configured_kernel;
    fi;
    einfo "Checking for suitable kernel configuration options...";
    for config in ${CONFIG_CHECK};
    do
        die=1;
        error=0;
        negate=0;
        reworkmodulenames=0;
        if [[ ${config:0:1} == "~" ]]; then
            die=0;
            config=${config:1};
        else
            if [[ ${config:0:1} == "@" ]]; then
                die=0;
                reworkmodulenames=1;
                config=${config:1};
            fi;
        fi;
        if [[ ${config:0:1} == "!" ]]; then
            negate=1;
            config=${config:1};
        fi;
        if [[ ${negate} == 1 ]]; then
            linux_chkconfig_present ${config} && error=2;
        else
            if [[ ${reworkmodulenames} == 1 ]]; then
                local temp_config="${config//*:}" i n;
                config="${config//:*}";
                if linux_chkconfig_present ${config}; then
                    for i in ${MODULE_NAMES};
                    do
                        n="${i//${temp_config}}";
                        [[ -z ${n//\(*} ]] && MODULE_IGNORE="${MODULE_IGNORE} ${temp_config}";
                    done;
                    error=2;
                fi;
            else
                linux_chkconfig_present ${config} || error=1;
            fi;
        fi;
        if [[ ${error} > 0 ]]; then
            local report_func="eerror" local_error;
            local_error="ERROR_${config}";
            local_error="${!local_error}";
            if [[ -z "${local_error}" ]]; then
                local_error="${config}_ERROR";
                local_error="${!local_error}";
            fi;
            if [[ ${die} == 0 && -z "${local_error}" ]]; then
                local_error="WARNING_${config}";
                local_error="${!local_error}";
                if [[ -n "${local_error}" ]]; then
                    report_func="ewarn";
                fi;
            fi;
            if [[ -z "${local_error}" ]]; then
                [[ ${error} == 1 ]] && local_error="is not set when it should be." || local_error="should not be set. But it is.";
                local_error="CONFIG_${config}:\t ${local_error}";
            fi;
            if [[ ${die} == 0 ]]; then
                ${report_func} "  ${local_error}";
                soft_errors_count=$[soft_errors_count + 1];
            else
                ${report_func} "  ${local_error}";
                hard_errors_count=$[hard_errors_count + 1];
            fi;
        fi;
    done;
    if [[ ${hard_errors_count} > 0 ]]; then
        eerror "Please check to make sure these options are set correctly.";
        eerror "Failure to do so may cause unexpected problems.";
        eerror "Once you have satisfied these options, please try merging";
        eerror "this package again.";
        die "Incorrect kernel configuration options";
    else
        if [[ ${soft_errors_count} > 0 ]]; then
            ewarn "Please check to make sure these options are set correctly.";
            ewarn "Failure to do so may cause unexpected problems.";
        else
            eend 0;
        fi;
    fi
}
check_kernel_built () 
{ 
    require_configured_kernel;
    get_version;
    if [ ! -f "${KV_OUT_DIR}/include/linux/version.h" ]; then
        eerror "These sources have not yet been prepared.";
        eerror "We cannot build against an unprepared tree.";
        eerror "To resolve this, please type the following:";
        eerror;
        eerror "# cd ${KV_DIR}";
        eerror "# make oldconfig";
        eerror "# make modules_prepare";
        eerror;
        eerror "Then please try merging this module again.";
        die "Kernel sources need compiling first";
    fi
}
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
}
check_modules_supported () 
{ 
    require_configured_kernel;
    get_version;
    if ! linux_chkconfig_builtin "MODULES"; then
        eerror "These sources do not support loading external modules.";
        eerror "to be able to use this module please enable \"Loadable modules support\"";
        eerror "in your kernel, recompile and then try merging this module again.";
        die "No support for external modules in ${KV_FULL} config";
    fi
}
check_vermagic () 
{ 
    debug-print-function ${FUNCNAME} $*;
    local curr_gcc_ver=$(gcc -dumpversion);
    local tmpfile old_chost old_gcc_ver result=0;
    tmpfile=`find ${KV_DIR}/ -iname "*.o.cmd" -exec grep usr/lib/gcc {} \; -quit`;
    tmpfile=${tmpfile//*usr/lib};
    tmpfile=${tmpfile//\/include*};
    old_chost=${tmpfile//*gcc\/};
    old_chost=${old_chost//\/*};
    old_gcc_ver=${tmpfile//*\/};
    if [[ -z ${old_gcc_ver} || -z ${old_chost} ]]; then
        ewarn "";
        ewarn "Unable to detect what version of GCC was used to compile";
        ewarn "the kernel. Build will continue, but you may experience problems.";
    else
        if [[ ${curr_gcc_ver} != ${old_gcc_ver} ]]; then
            ewarn "";
            ewarn "The version of GCC you are using (${curr_gcc_ver}) does";
            ewarn "not match the version of GCC used to compile the";
            ewarn "kernel (${old_gcc_ver}).";
            result=1;
        else
            if [[ ${CHOST} != ${old_chost} ]]; then
                ewarn "";
                ewarn "The current CHOST (${CHOST}) does not match the chost";
                ewarn "used when compiling the kernel (${old_chost}).";
                result=1;
            fi;
        fi;
    fi;
    if [[ ${result} -gt 0 ]]; then
        ewarn "";
        ewarn "Build will not continue, because you will experience problems.";
        ewarn "To fix this either change the version of GCC you wish to use";
        ewarn "to match the kernel, or recompile the kernel first.";
        die "GCC Version Mismatch.";
    fi
}
check_zlibinflate () 
{ 
    require_configured_kernel;
    get_version;
    local INFLATE;
    local DEFLATE;
    einfo "Determining the usability of ZLIB_INFLATE support in your kernel";
    ebegin "checking ZLIB_INFLATE";
    getfilevar_isbuiltin CONFIG_ZLIB_INFLATE ${KV_DIR}/.config;
    eend $?;
    [ "$?" != 0 ] && die;
    ebegin "checking ZLIB_DEFLATE";
    getfilevar_isbuiltin CONFIG_ZLIB_DEFLATE ${KV_DIR}/.config;
    eend $?;
    [ "$?" != 0 ] && die;
    local LINENO_START;
    local LINENO_END;
    local SYMBOLS;
    local x;
    LINENO_END="$(grep -n 'CONFIG_ZLIB_INFLATE y' ${KV_DIR}/lib/Config.in | cut -d : -f 1)";
    LINENO_START="$(head -n $LINENO_END ${KV_DIR}/lib/Config.in | grep -n 'if \[' | tail -n 1 | cut -d : -f 1)";
    (( LINENO_AMOUNT = $LINENO_END - $LINENO_START ));
    (( LINENO_END = $LINENO_END - 1 ));
    SYMBOLS="$(head -n $LINENO_END ${KV_DIR}/lib/Config.in | tail -n $LINENO_AMOUNT | sed -e 's/^.*\(CONFIG_[^\" ]*\).*/\1/g;')";
    for x in $SYMBOLS;
    do
        if [ "${!x}" = "y" ]; then
            einfo "${x} ensures zlib is linked into your kernel - excellent";
            return 0;
        fi;
    done;
    eerror;
    eerror "This kernel module requires ZLIB library support.";
    eerror "You have enabled zlib support in your kernel, but haven't enabled";
    eerror "enabled any option that will ensure that zlib is linked into your";
    eerror "kernel.";
    eerror;
    eerror "Please ensure that you enable at least one of these options:";
    eerror;
    for x in $SYMBOLS;
    do
        eerror "  * $x";
    done;
    eerror;
    eerror "Please remember to recompile and install your kernel, and reboot";
    eerror "into your new kernel before attempting to load this kernel module.";
    die "Kernel doesn't include zlib support"
}
convert_to_m () 
{ 
    debug-print-function ${FUNCNAME} $*;
    if use_m; then
        [ ! -f "${1}" ] && die "convert_to_m() requires a filename as an argument";
        ebegin "Converting ${1/${WORKDIR}\//} to use M= instead of SUBDIRS=";
        sed -i 's:SUBDIRS=:M=:g' ${1};
        eend $?;
    fi
}
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
}
debug-print () 
{ 
    [ ! -d "$T" ] && return 0;
    while [ "$1" ]; do
        if [ "$ECLASS_DEBUG_OUTPUT" == "on" ]; then
            echo "debug: $1" 1>&2;
        else
            if [ -n "$ECLASS_DEBUG_OUTPUT" ]; then
                echo "debug: $1" >> $ECLASS_DEBUG_OUTPUT;
            fi;
        fi;
        echo "$1" 2> /dev/null >> "${T}/eclass-debug.log";
        chmod g+w "${T}/eclass-debug.log" >&/dev/null;
        shift;
    done
}
debug-print-function () 
{ 
    str="$1: entering function";
    shift;
    debug-print "$str, parameters: $*"
}
debug-print-section () 
{ 
    debug-print "now in section $*"
}
default () 
{ 
    die "default() is not supported with EAPI='0' during phase pkg_setup"
}
default_pkg_nofetch () 
{ 
    die "default_pkg_nofetch() is not supported with EAPI='0' during phase pkg_setup"
}
default_src_compile () 
{ 
    die "default_src_compile() is not supported with EAPI='0' during phase pkg_setup"
}
default_src_configure () 
{ 
    die "default_src_configure() is not supported with EAPI='0' during phase pkg_setup"
}
default_src_install () 
{ 
    die "default_src_install() is not supported with EAPI='0' during phase pkg_setup"
}
default_src_prepare () 
{ 
    die "default_src_prepare() is not supported with EAPI='0' during phase pkg_setup"
}
default_src_test () 
{ 
    die "default_src_test() is not supported with EAPI='0' during phase pkg_setup"
}
default_src_unpack () 
{ 
    die "default_src_unpack() is not supported with EAPI='0' during phase pkg_setup"
}
delete_all_version_separators () 
{ 
    __versionator_shopt_toggle on;
    replace_all_version_separators "" "${1}";
    __versionator_shopt_toggle off
}
delete_version_separator () 
{ 
    __versionator_shopt_toggle on;
    replace_version_separator "${1}" "" "${2}";
    __versionator_shopt_toggle off
}
die () 
{ 
    set +e;
    if [ -n "${QA_INTERCEPTORS}" ]; then
        unset -f ${QA_INTERCEPTORS};
        unset QA_INTERCEPTORS;
    fi;
    local n filespacing=0 linespacing=0;
    for ((n = ${#FUNCNAME[@]} - 1; n >= 0; --n))
    do
        sourcefile=${BASH_SOURCE[${n}]} sourcefile=${sourcefile##*/};
        lineno=${BASH_LINENO[${n}]};
        ((filespacing < ${#sourcefile})) && filespacing=${#sourcefile};
        ((linespacing < ${#lineno})) && linespacing=${#lineno};
    done;
    eerror;
    eerror "ERROR: $CATEGORY/$PF failed.";
    dump_trace 2 ${filespacing} ${linespacing};
    eerror "  $(printf "%${filespacing}s" "${BASH_SOURCE[1]##*/}"), line $(printf "%${linespacing}s" "${BASH_LINENO[0]}"):  Called die";
    eerror "The specific snippet of code:";
    sed -n -e "# When we get to the line that failed, append it to the
		    # hold space, move the hold space to the pattern space,
		    # then print out the pattern space and quit immediately
		    ${BASH_LINENO[0]}{H;g;p;q}" -e '# If this line ends with a line continuation, append it
		    # to the hold space
		    /\\$/H' -e '# If this line does not end with a line continuation,
		    # erase the line and set the hold buffer to it (thus
		    # erasing the hold buffer in the process)
		    /[^\]$/{s:^.*$::;h}' ${BASH_SOURCE[1]} | sed -e '1d' -e 's:^:RETAIN-LEADING-SPACE:' | while read -r n; do
        eerror "  ${n#RETAIN-LEADING-SPACE}";
    done;
    eerror " The die message:";
    eerror "  ${*:-(no error message)}";
    eerror;
    eerror "If you need support, post the topmost build error, and the call stack if relevant.";
    [[ -n ${PORTAGE_LOG_FILE} ]] && eerror "A complete build log is located at '${PORTAGE_LOG_FILE}'.";
    if [ -f "${T}/environment" ]; then
        eerror "The ebuild environment file is located at '${T}/environment'.";
    else
        if [ -d "${T}" ]; then
            { 
                set;
                export
            } > "${T}/die.env";
            eerror "The ebuild environment file is located at '${T}/die.env'.";
        fi;
    fi;
    if [[ -n ${EBUILD_OVERLAY_ECLASSES} ]]; then
        eerror "This ebuild used the following eclasses from overlays:";
        local x;
        for x in ${EBUILD_OVERLAY_ECLASSES};
        do
            eerror "  ${x}";
        done;
    fi;
    if [ "${EMERGE_FROM}" != "binary" ] && ! hasq ${EBUILD_PHASE} prerm postrm && [ "${EBUILD#${PORTDIR}/}" == "${EBUILD}" ]; then
        local overlay=${EBUILD%/*};
        overlay=${overlay%/*};
        overlay=${overlay%/*};
        if [[ -n $PORTAGE_REPO_NAME ]]; then
            eerror "This ebuild is from an overlay named" "'$PORTAGE_REPO_NAME': '${overlay}/'";
        else
            eerror "This ebuild is from an overlay: '${overlay}/'";
        fi;
    else
        if [[ -n $PORTAGE_REPO_NAME && -f "$PORTDIR"/profiles/repo_name ]]; then
            local portdir_repo_name=$(<"$PORTDIR"/profiles/repo_name);
            if [[ -n $portdir_repo_name && $portdir_repo_name != $PORTAGE_REPO_NAME ]]; then
                eerror "This ebuild is from a repository" "named '$PORTAGE_REPO_NAME'";
            fi;
        fi;
    fi;
    eerror;
    if [[ "${EBUILD_PHASE/depend}" == "${EBUILD_PHASE}" ]]; then
        local x;
        for x in $EBUILD_DEATH_HOOKS;
        do
            ${x} "$@" 1>&2 1>&2;
        done;
    fi;
    [ -n "$EBUILD_EXIT_STATUS_FILE" ] &&  > "$EBUILD_EXIT_STATUS_FILE";
    kill -s SIGTERM ${EBUILD_MASTER_PID};
    exit 1
}
diefunc () 
{ 
    die "${@}"
}
diropts () 
{ 
    export DIROPTIONS="$@"
}
dlopen_lib () 
{ 
    if [[ ${CHOST} == *-linux-gnu || ${CHOST} == *-linux-uclibc ]]; then
        echo "-ldl";
    fi
}
do_newdepend () 
{ 
    debug-print-function do_newdepend $*;
    [ -z "$1" ] && die "do_newdepend without arguments";
    [[ ${ECLASS_DEPTH} > 0 ]] && TARGET="E_$1";
    [[ ${ECLASS_DEPTH} > 0 ]] || TARGET="$1";
    shift;
    while [ -n "$1" ]; do
        eval export ${TARGET}=\"\${${TARGET}} \$1\";
        shift;
    done
}
docinto () 
{ 
    if [ "$1" == "/" ]; then
        export _E_DOCDESTTREE_="";
    else
        export _E_DOCDESTTREE_="$1";
        if [ ! -d "${D}usr/share/doc/${PF}/${_E_DOCDESTTREE_}" ]; then
            install -d "${D}usr/share/doc/${PF}/${_E_DOCDESTTREE_}";
        fi;
    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} )
}
dump_trace () 
{ 
    local funcname="" sourcefile="" lineno="" s="yes" n p;
    declare -i strip=${1:-1};
    local filespacing=$2 linespacing=$3;
    (( n = ${#FUNCNAME[@]} - 1 ));
    (( p = ${#BASH_ARGV[@]} ));
    while (( n > 0 )); do
        [ "${FUNCNAME[${n}]}" == "qa_call" ] && break;
        (( p -= ${BASH_ARGC[${n}]} ));
        (( n-- ));
    done;
    if (( n == 0 )); then
        (( n = ${#FUNCNAME[@]} - 1 ));
        (( p = ${#BASH_ARGV[@]} ));
    fi;
    eerror "Call stack:";
    while (( n > ${strip} )); do
        funcname=${FUNCNAME[${n} - 1]};
        sourcefile=$(basename ${BASH_SOURCE[${n}]});
        lineno=${BASH_LINENO[${n} - 1]};
        args=;
        if [[ -n "${BASH_ARGV[@]}" ]]; then
            for ((j = 1 ; j <= ${BASH_ARGC[${n} - 1]} ; ++j ))
            do
                newarg=${BASH_ARGV[$(( p - j - 1 ))]};
                args="${args:+${args} }'${newarg}'";
            done;
            (( p -= ${BASH_ARGC[${n} - 1]} ));
        fi;
        eerror "  $(printf "%${filespacing}s" "${sourcefile}"), line $(printf "%${linespacing}s" "${lineno}"):  Called ${funcname}${args:+ ${args}}";
        (( n-- ));
    done
}
dyn_clean () 
{ 
    if [ -z "${PORTAGE_BUILDDIR}" ]; then
        echo "Aborting clean phase because PORTAGE_BUILDDIR is unset!";
        return 1;
    else
        if [ ! -d "${PORTAGE_BUILDDIR}" ]; then
            return 0;
        fi;
    fi;
    if hasq chflags $FEATURES; then
        chflags -R noschg,nouchg,nosappnd,nouappnd "${PORTAGE_BUILDDIR}";
        chflags -R nosunlnk,nouunlnk "${PORTAGE_BUILDDIR}" 2> /dev/null;
    fi;
    rm -rf "${PORTAGE_BUILDDIR}/image" "${PORTAGE_BUILDDIR}/homedir";
    rm -f "${PORTAGE_BUILDDIR}/.installed";
    if [[ $EMERGE_FROM = binary ]] || ! hasq keeptemp $FEATURES && ! hasq keepwork $FEATURES; then
        rm -rf "${T}";
    fi;
    if [[ $EMERGE_FROM = binary ]] || ! hasq keepwork $FEATURES; then
        rm -f "$PORTAGE_BUILDDIR"/.{ebuild_changed,exit_status,logid,unpacked,prepared} "$PORTAGE_BUILDDIR"/.{configured,compiled,tested,packaged};
        rm -rf "${PORTAGE_BUILDDIR}/build-info";
        rm -rf "${WORKDIR}";
    fi;
    if [ -f "${PORTAGE_BUILDDIR}/.unpacked" ]; then
        find "${PORTAGE_BUILDDIR}" -type d ! -regex "^${WORKDIR}" | sort -r | tr "\n" "\0" | $XARGS -0 rmdir >&/dev/null;
    fi;
    rm -rf "${PORTAGE_BUILDDIR}/distdir";
    cd "$PORTAGE_BUILDDIR"/../..;
    rmdir "$PORTAGE_BUILDDIR" "${PORTAGE_BUILDDIR%/*}" 2> /dev/null;
    true
}
dyn_compile () 
{ 
    if [[ -e $PORTAGE_BUILDDIR/.compiled ]]; then
        vecho ">>> It appears that '${PF}' is already compiled; skipping.";
        vecho ">>> Remove '$PORTAGE_BUILDDIR/.compiled' to force compilation.";
        return 0;
    fi;
    trap abort_compile SIGINT SIGQUIT;
    [ -n "$EBUILD_PHASE" ] && rm -f "$T/logging/$EBUILD_PHASE";
    ebuild_phase pre_src_compile;
    vecho ">>> Compiling source in ${srcdir} ...";
    ebuild_phase src_compile;
    touch "$PORTAGE_BUILDDIR"/.compiled;
    vecho ">>> Source compiled.";
    ebuild_phase post_src_compile;
    trap - SIGINT SIGQUIT
}
dyn_configure () 
{ 
    if [[ -e $PORTAGE_BUILDDIR/.configured ]]; then
        vecho ">>> It appears that '$PF' is already configured; skipping.";
        vecho ">>> Remove '$PORTAGE_BUILDDIR/.configured' to force configuration.";
        return 0;
    fi;
    trap abort_configure SIGINT SIGQUIT;
    [ -n "$EBUILD_PHASE" ] && rm -f "$T/logging/$EBUILD_PHASE";
    ebuild_phase pre_src_configure;
    vecho ">>> Configuring source in $srcdir ...";
    ebuild_phase src_configure;
    touch "$PORTAGE_BUILDDIR"/.configured;
    vecho ">>> Source configured.";
    ebuild_phase post_src_configure;
    trap - SIGINT SIGQUIT
}
dyn_help () 
{ 
    echo;
    echo "Portage";
    echo "Copyright 1999-2008 Gentoo Foundation";
    echo;
    echo "How to use the ebuild command:";
    echo;
    echo "The first argument to ebuild should be an existing .ebuild file.";
    echo;
    echo "One or more of the following options can then be specified.  If more";
    echo "than one option is specified, each will be executed in order.";
    echo;
    echo "  help        : show this help screen";
    echo "  setup       : execute package specific setup actions";
    echo "  fetch       : download source archive(s) and patches";
    echo "  digest      : create a manifest file for the package";
    echo "  manifest    : create a manifest file for the package";
    echo "  unpack      : unpack sources (auto-dependencies if needed)";
    echo "  prepare     : prepare sources (auto-dependencies if needed)";
    echo "  configure   : configure sources (auto-fetch/unpack if needed)";
    echo "  compile     : compile sources (auto-fetch/unpack/configure if needed)";
    echo "  test        : test package (auto-fetch/unpack/configure/compile if needed)";
    echo "  preinst     : execute pre-install instructions";
    echo "  postinst    : execute post-install instructions";
    echo "  install     : install the package to the temporary install directory";
    echo "  qmerge      : merge image into live filesystem, recording files in db";
    echo "  merge       : do fetch, unpack, compile, install and qmerge";
    echo "  prerm       : execute pre-removal instructions";
    echo "  postrm      : execute post-removal instructions";
    echo "  unmerge     : remove package from live filesystem";
    echo "  config      : execute package specific configuration actions";
    echo "  package     : create a tarball package in ${PKGDIR}/All";
    echo "  rpm         : build a RedHat RPM package";
    echo "  clean       : clean up all source and temporary files";
    echo;
    echo "The following settings will be used for the ebuild process:";
    echo;
    echo "  package     : ${PF}";
    echo "  slot        : ${SLOT}";
    echo "  category    : ${CATEGORY}";
    echo "  description : ${DESCRIPTION}";
    echo "  system      : ${CHOST}";
    echo "  c flags     : ${CFLAGS}";
    echo "  c++ flags   : ${CXXFLAGS}";
    echo "  make flags  : ${MAKEOPTS}";
    echo -n "  build mode  : ";
    if hasq nostrip ${FEATURES} ${RESTRICT} || hasq strip ${RESTRICT}; then
        echo "debug (large)";
    else
        echo "production (stripped)";
    fi;
    echo "  merge to    : ${ROOT}";
    echo;
    if [ -n "$USE" ]; then
        echo "Additionally, support for the following optional features will be enabled:";
        echo;
        echo "  ${USE}";
    fi;
    echo
}
dyn_install () 
{ 
    [ -z "$PORTAGE_BUILDDIR" ] && die "${FUNCNAME}: PORTAGE_BUILDDIR is unset";
    if hasq noauto $FEATURES; then
        rm -f "${PORTAGE_BUILDDIR}/.installed";
    else
        if [[ -e $PORTAGE_BUILDDIR/.installed ]]; then
            vecho ">>> It appears that '${PF}' is already installed; skipping.";
            vecho ">>> Remove '${PORTAGE_BUILDDIR}/.installed' to force install.";
            return 0;
        fi;
    fi;
    trap "abort_install" SIGINT SIGQUIT;
    [ -n "$EBUILD_PHASE" ] && rm -f "$T/logging/$EBUILD_PHASE";
    ebuild_phase pre_src_install;
    rm -rf "${PORTAGE_BUILDDIR}/image";
    mkdir "${PORTAGE_BUILDDIR}/image";
    if [ -d "${S}" ]; then
        cd "${S}";
    else
        cd "${WORKDIR}";
    fi;
    vecho;
    vecho ">>> Install ${PF} into ${D} category ${CATEGORY}";
    export S D;
    export PWORKDIR="$WORKDIR";
    export DESTTREE=/usr;
    export INSDESTTREE="";
    export _E_EXEDESTTREE_="";
    export _E_DOCDESTTREE_="";
    ebuild_phase src_install;
    touch "${PORTAGE_BUILDDIR}/.installed";
    vecho ">>> Completed installing ${PF} into ${D}";
    vecho;
    ebuild_phase post_src_install;
    cd "${PORTAGE_BUILDDIR}"/build-info;
    set -f;
    local f x;
    IFS=' 	
\r';
    for f in ASFLAGS CATEGORY CBUILD CC CFLAGS CHOST CTARGET CXX CXXFLAGS DEFINED_PHASES DEPEND EXTRA_ECONF EXTRA_EINSTALL EXTRA_MAKE FEATURES INHERITED IUSE LDFLAGS LIBCFLAGS LIBCXXFLAGS LICENSE PDEPEND PF PKGUSE PROPERTIES PROVIDE RDEPEND RESTRICT SLOT KEYWORDS HOMEPAGE SRC_URI DESCRIPTION;
    do
        x=$(echo -n ${!f});
        [[ -n $x ]] && echo "$x" > $f;
    done;
    echo "${USE}" > USE;
    echo "${EAPI:-0}" > EAPI;
    set +f;
    unset f;
    save_ebuild_env --exclude-init-phases | filter_readonly_variables --filter-sandbox --allow-extra-vars > environment;
    bzip2 -f9 environment;
    cp "${EBUILD}" "${PF}.ebuild";
    [ -n "${PORTAGE_REPO_NAME}" ] && echo "${PORTAGE_REPO_NAME}" > repository;
    if hasq nostrip ${FEATURES} ${RESTRICT} || hasq strip ${RESTRICT}; then
        touch DEBUGBUILD;
    fi;
    trap - SIGINT SIGQUIT
}
dyn_preinst () 
{ 
    if [ -z "${D}" ]; then
        eerror "${FUNCNAME}: D is unset";
        return 1;
    fi;
    ebuild_phase_with_hooks pkg_preinst
}
dyn_prepare () 
{ 
    if [[ -e $PORTAGE_BUILDDIR/.prepared ]]; then
        vecho ">>> It appears that '$PF' is already prepared; skipping.";
        vecho ">>> Remove '$PORTAGE_BUILDDIR/.prepared' to force prepare.";
        return 0;
    fi;
    local srcdir;
    if [[ -d $S ]]; then
        srcdir=$S;
    else
        srcdir=$WORKDIR;
    fi;
    cd "$srcdir";
    trap abort_prepare SIGINT SIGQUIT;
    [ -n "$EBUILD_PHASE" ] && rm -f "$T/logging/$EBUILD_PHASE";
    ebuild_phase pre_src_prepare;
    vecho ">>> Preparing source in $srcdir ...";
    ebuild_phase src_prepare;
    touch "$PORTAGE_BUILDDIR"/.prepared;
    vecho ">>> Source prepared.";
    ebuild_phase post_src_prepare;
    trap - SIGINT SIGQUIT
}
dyn_setup () 
{ 
    ebuild_phase_with_hooks pkg_setup
}
dyn_test () 
{ 
    if [ "${EBUILD_FORCE_TEST}" == "1" ]; then
        rm -f "${PORTAGE_BUILDDIR}/.tested";
        ! hasq test ${USE} && export USE="${USE} test";
    fi;
    if [[ -e $PORTAGE_BUILDDIR/.tested ]]; then
        vecho ">>> It appears that ${PN} has already been tested; skipping.";
        return;
    fi;
    trap "abort_test" SIGINT SIGQUIT;
    if [ -d "${S}" ]; then
        cd "${S}";
    else
        cd "${WORKDIR}";
    fi;
    if ! hasq test $FEATURES && [ "${EBUILD_FORCE_TEST}" != "1" ]; then
        vecho ">>> Test phase [not enabled]: ${CATEGORY}/${PF}";
    else
        if hasq test $RESTRICT; then
            ewarn "Skipping make test/check due to ebuild restriction.";
            vecho ">>> Test phase [explicitly disabled]: ${CATEGORY}/${PF}";
        else
            local save_sp=${SANDBOX_PREDICT};
            addpredict /;
            [ -n "$EBUILD_PHASE" ] && rm -f "$T/logging/$EBUILD_PHASE";
            ebuild_phase pre_src_test;
            ebuild_phase src_test;
            touch "$PORTAGE_BUILDDIR/.tested" || die "Failed to 'touch .tested' in $PORTAGE_BUILDDIR";
            ebuild_phase post_src_test;
            SANDBOX_PREDICT=${save_sp};
        fi;
    fi;
    trap - SIGINT SIGQUIT
}
dyn_unpack () 
{ 
    local newstuff="no";
    if [ -e "${WORKDIR}" ]; then
        local x;
        local checkme;
        for x in ${AA};
        do
            vecho ">>> Checking ${x}'s mtime...";
            if [ "${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}/${x}" -nt "${WORKDIR}" ]; then
                vecho ">>> ${x} has been updated; recreating WORKDIR...";
                newstuff="yes";
                break;
            fi;
        done;
        if [ ! -f "${PORTAGE_BUILDDIR}/.unpacked" ]; then
            vecho ">>> Not marked as unpacked; recreating WORKDIR...";
            newstuff="yes";
        fi;
    fi;
    if [ "${newstuff}" == "yes" ]; then
        rm -rf "${PORTAGE_BUILDDIR}"/{.unpacked,.prepared,.configured,.compiled,.tested,.installed,.packaged,build-info};
        rm -rf "${WORKDIR}";
        if [ -d "${T}" ] && ! hasq keeptemp $FEATURES && ! hasq keepwork $FEATURES; then
            rm -rf "${T}" && mkdir "${T}";
        fi;
    fi;
    if [ -e "${WORKDIR}" ]; then
        if [ "$newstuff" == "no" ]; then
            vecho ">>> WORKDIR is up-to-date, keeping...";
            return 0;
        fi;
    fi;
    if [ ! -d "${WORKDIR}" ]; then
        install -m${PORTAGE_WORKDIR_MODE:-0700} -d "${WORKDIR}" || die "Failed to create dir '${WORKDIR}'";
    fi;
    [ -n "$EBUILD_PHASE" ] && rm -f "$T/logging/$EBUILD_PHASE";
    cd "${WORKDIR}" || die "Directory change failed: \`cd '${WORKDIR}'\`";
    ebuild_phase pre_src_unpack;
    vecho ">>> Unpacking source...";
    ebuild_phase src_unpack;
    touch "${PORTAGE_BUILDDIR}/.unpacked" || die "IO Failure -- Failed 'touch .unpacked' in ${PORTAGE_BUILDDIR}";
    vecho ">>> Source unpacked in ${WORKDIR}";
    ebuild_phase post_src_unpack
}
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
}
ebegin () 
{ 
    local msg="$*" dots spaces=${RC_DOT_PATTERN//?/ };
    if [[ -n ${RC_DOT_PATTERN} ]]; then
        dots=$(printf "%$(( COLS - 3 - ${#RC_INDENTATION} - ${#msg} - 7 ))s" '');
        dots=${dots//${spaces}/${RC_DOT_PATTERN}};
        msg="${msg}${dots}";
    else
        msg="${msg} ...";
    fi;
    einfon "${msg}";
    [[ ${RC_ENDCOL} == "yes" ]] && echo;
    LAST_E_LEN=$(( 3 + ${#RC_INDENTATION} + ${#msg} ));
    LAST_E_CMD="ebegin";
    return 0
}
ebuild_main () 
{ 
    local f x;
    if ! hasq $EBUILD_SH_ARGS clean depend help info nofetch; then
        if hasq distcc $FEATURES; then
            export PATH="/usr/lib/distcc/bin:$PATH";
            [[ -n $DISTCC_LOG ]] && addwrite "${DISTCC_LOG%/*}";
        fi;
        if hasq ccache $FEATURES; then
            export PATH="/usr/lib/ccache/bin:$PATH";
            addread "$CCACHE_DIR";
            addwrite "$CCACHE_DIR";
            [[ -n $CCACHE_SIZE ]] && ccache -M $CCACHE_SIZE >&/dev/null;
        else
            export CCACHE_DISABLE=1;
        fi;
    fi;
    if [[ $EBUILD_PHASE != depend ]]; then
        local phase_func=$(_ebuild_arg_to_phase "$EAPI" "$EBUILD_PHASE");
        [[ -n $phase_func ]] && _ebuild_phase_funcs "$EAPI" "$phase_func";
        unset phase_func;
    fi;
    source_all_bashrcs;
    case ${EBUILD_SH_ARGS} in 
        nofetch)
            ebuild_phase_with_hooks pkg_nofetch;
            exit 1
        ;;
        prerm | postrm | postinst | config | info)
            if hasq "$EBUILD_SH_ARGS" config info && ! declare -F "pkg_$EBUILD_SH_ARGS" > /dev/null; then
                ewarn "pkg_${EBUILD_SH_ARGS}() is not defined: '${EBUILD##*/}'";
            fi;
            export SANDBOX_ON="0";
            if [ "${PORTAGE_DEBUG}" != "1" ] || [ "${-/x/}" != "$-" ]; then
                ebuild_phase_with_hooks pkg_${EBUILD_SH_ARGS};
            else
                set -x;
                ebuild_phase_with_hooks pkg_${EBUILD_SH_ARGS};
                set +x;
            fi;
            if [[ $EBUILD_PHASE == postinst ]] && [[ -n $PORTAGE_UPDATE_ENV ]]; then
                save_ebuild_env --exclude-init-phases | filter_readonly_variables --filter-sandbox --allow-extra-vars | bzip2 -c -f9 > "$PORTAGE_UPDATE_ENV";
            fi
        ;;
        unpack | prepare | configure | compile | test | clean | install)
            if [[ ${SANDBOX_DISABLED:-0} = 0 ]]; then
                export SANDBOX_ON="1";
            else
                export SANDBOX_ON="0";
            fi;
            case "$EBUILD_SH_ARGS" in 
                configure | compile)
                    for x in ASFLAGS CCACHE_DIR CCACHE_SIZE CFLAGS CXXFLAGS LDFLAGS LIBCFLAGS LIBCXXFLAGS;
                    do
                        [[ ${!x-unset} != unset ]] && export $x;
                    done;
                    hasq distcc $FEATURES && [[ -n $DISTCC_DIR ]] && [[ ${SANDBOX_WRITE/$DISTCC_DIR} = $SANDBOX_WRITE ]] && addwrite "$DISTCC_DIR";
                    x=LIBDIR_$ABI;
                    [ -z "$PKG_CONFIG_PATH" -a -n "$ABI" -a -n "${!x}" ] && export PKG_CONFIG_PATH=/usr/${!x}/pkgconfig;
                    if hasq noauto $FEATURES && [[ ! -f $PORTAGE_BUILDDIR/.unpacked ]]; then
                        echo;
                        echo "!!! We apparently haven't unpacked..." "This is probably not what you";
                        echo "!!! want to be doing... You are using" "FEATURES=noauto so I'll assume";
                        echo "!!! that you know what you are doing..." "You have 5 seconds to abort...";
                        echo;
                        local x;
                        for x in 1 2 3 4 5 6 7 8;
                        do
                            echo -ne "\a";
                            LC_ALL=C sleep 0.25;
                        done;
                        sleep 3;
                    fi;
                    cd "$PORTAGE_BUILDDIR";
                    if [ ! -d build-info ]; then
                        mkdir build-info;
                        cp "$EBUILD" "build-info/$PF.ebuild";
                    fi;
                    local srcdir;
                    if [[ -d $S ]]; then
                        srcdir=$S;
                    else
                        srcdir=$WORKDIR;
                    fi;
                    cd "$srcdir";
                    export S D;
                    export PWORKDIR=$WORKDIR
                ;;
            esac;
            if [ "${PORTAGE_DEBUG}" != "1" ] || [ "${-/x/}" != "$-" ]; then
                dyn_${EBUILD_SH_ARGS};
            else
                set -x;
                dyn_${EBUILD_SH_ARGS};
                set +x;
            fi;
            export SANDBOX_ON="0"
        ;;
        help | setup | preinst)
            export SANDBOX_ON="0";
            if [ "${PORTAGE_DEBUG}" != "1" ] || [ "${-/x/}" != "$-" ]; then
                dyn_${EBUILD_SH_ARGS};
            else
                set -x;
                dyn_${EBUILD_SH_ARGS};
                set +x;
            fi
        ;;
        depend)
            export SANDBOX_ON="0";
            set -f;
            if [ -n "${dbkey}" ]; then
                if [ ! -d "${dbkey%/*}" ]; then
                    install -d -g ${PORTAGE_GID} -m2775 "${dbkey%/*}";
                fi;
                umask 002;
            fi;
            auxdbkeys="DEPEND RDEPEND SLOT SRC_URI RESTRICT HOMEPAGE LICENSE
			DESCRIPTION KEYWORDS INHERITED IUSE CDEPEND PDEPEND PROVIDE EAPI
			PROPERTIES DEFINED_PHASES UNUSED_05 UNUSED_04
			UNUSED_03 UNUSED_02 UNUSED_01";
            unset CDEPEND;
            [ -n "${EAPI}" ] || EAPI=0;
            local eapi=$EAPI;
            if [ -n "${dbkey}" ]; then
                 > "${dbkey}";
                for f in ${auxdbkeys};
                do
                    echo $(echo ${!f}) >> "${dbkey}" || exit $?;
                done;
            else
                for f in ${auxdbkeys};
                do
                    echo $(echo ${!f}) 1>&9 || exit $?;
                done;
                exec 9>&-;
            fi;
            set +f
        ;;
        *)
            export SANDBOX_ON="1";
            echo "Unrecognized EBUILD_SH_ARGS: '${EBUILD_SH_ARGS}'";
            echo;
            dyn_help;
            exit 1
        ;;
    esac;
    if [ -n "$EBUILD_EXIT_STATUS_FILE" ]; then
         > "$EBUILD_EXIT_STATUS_FILE" || die "failed to create '$EBUILD_EXIT_STATUS_FILE'";
    fi
}
ebuild_phase () 
{ 
    declare -F "$1" > /dev/null && qa_call $1
}
ebuild_phase_with_hooks () 
{ 
    local x phase_name=${1};
    [ -n "$EBUILD_PHASE" ] && rm -f "$T/logging/$EBUILD_PHASE";
    for x in {pre_,,post_}${phase_name};
    do
        ebuild_phase ${x};
    done
}
econf () 
{ 
    local x;
    local phase_func=$(_ebuild_arg_to_phase "$EAPI" "$EBUILD_PHASE");
    if [[ -n $phase_func ]]; then
        if hasq "$EAPI" 0 1; then
            [[ $phase_func != src_compile ]] && eqawarn "QA Notice: econf called in" "$phase_func instead of src_compile";
        else
            [[ $phase_func != src_configure ]] && eqawarn "QA Notice: econf called in" "$phase_func instead of src_configure";
        fi;
    fi;
    : ${ECONF_SOURCE:=.};
    if [ -x "${ECONF_SOURCE}/configure" ]; then
        if [ -e /usr/share/gnuconfig/ ]; then
            find "${WORKDIR}" -type f '(' -name config.guess -o -name config.sub ')' -print0 | while read -d '' x; do
                vecho " * econf: updating ${x/${WORKDIR}\/} with /usr/share/gnuconfig/${x##*/}";
                cp -f /usr/share/gnuconfig/"${x##*/}" "${x}";
            done;
        fi;
        local CONF_LIBDIR LIBDIR_VAR="LIBDIR_${ABI}";
        if [[ -n ${ABI} && -n ${!LIBDIR_VAR} ]]; then
            CONF_LIBDIR=${!LIBDIR_VAR};
        fi;
        if [[ -n ${CONF_LIBDIR} ]] && ! hasgq --libdir=\* "$@"; then
            export CONF_PREFIX=$(hasg --exec-prefix=\* "$@");
            [[ -z ${CONF_PREFIX} ]] && CONF_PREFIX=$(hasg --prefix=\* "$@");
            : ${CONF_PREFIX:=/usr};
            CONF_PREFIX=${CONF_PREFIX#*=};
            [[ ${CONF_PREFIX} != /* ]] && CONF_PREFIX="/${CONF_PREFIX}";
            [[ ${CONF_LIBDIR} != /* ]] && CONF_LIBDIR="/${CONF_LIBDIR}";
            set -- --libdir="$(strip_duplicate_slashes ${CONF_PREFIX}${CONF_LIBDIR})" "$@";
        fi;
        set -- --prefix=/usr ${CBUILD:+--build=${CBUILD}} --host=${CHOST} ${CTARGET:+--target=${CTARGET}} --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib "$@" ${EXTRA_ECONF};
        vecho "${ECONF_SOURCE}/configure" "$@";
        if ! "${ECONF_SOURCE}/configure" "$@"; then
            if [ -s config.log ]; then
                echo;
                echo "!!! Please attach the following file when seeking support:";
                echo "!!! ${PWD}/config.log";
            fi;
            die "econf failed";
        fi;
    else
        if [ -f "${ECONF_SOURCE}/configure" ]; then
            die "configure is not executable";
        else
            die "no configure script found";
        fi;
    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$//'
}
eend () 
{ 
    local retval=${1:-0};
    shift;
    _eend ${retval} eerror "$*";
    LAST_E_CMD="eend";
    return ${retval}
}
eerror () 
{ 
    elog_base ERROR "$*";
    [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo;
    echo -e "$@" | while read -r; do
        echo " $BAD*$NORMAL $RC_INDENTATION$REPLY" 1>&2;
    done;
    LAST_E_CMD="eerror";
    return 0
}
egetent () 
{ 
    case ${CHOST} in 
        *-darwin9)
            local mytype=$1;
            [[ "passwd" == $mytype ]] && mytype="Users";
            [[ "group" == $mytype ]] && mytype="Groups";
            case "$2" in 
                *[!0-9]*)
                    dscl . -read /$mytype/$2 2> /dev/null | grep RecordName
                ;;
                *)
                    local mykey="UniqueID";
                    [[ $mytype == "Groups" ]] && mykey="PrimaryGroupID";
                    dscl . -search /$mytype $mykey $2 2> /dev/null
                ;;
            esac
        ;;
        *-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
}
einfo () 
{ 
    elog_base INFO "$*";
    [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo;
    echo -e "$@" | while read -r; do
        echo " $GOOD*$NORMAL $REPLY";
    done;
    LAST_E_CMD="einfo";
    return 0
}
einfon () 
{ 
    elog_base INFO "$*";
    [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo;
    echo -ne " ${GOOD}*${NORMAL} $*";
    LAST_E_CMD="einfon";
    return 0
}
einstall () 
{ 
    local LOCAL_EXTRA_EINSTALL="${EXTRA_EINSTALL}";
    LIBDIR_VAR="LIBDIR_${ABI}";
    if [ -n "${ABI}" -a -n "${!LIBDIR_VAR}" ]; then
        CONF_LIBDIR="${!LIBDIR_VAR}";
    fi;
    unset LIBDIR_VAR;
    if [ -n "${CONF_LIBDIR}" ] && [ "${CONF_PREFIX:-unset}" != "unset" ]; then
        EI_DESTLIBDIR="${D}/${CONF_PREFIX}/${CONF_LIBDIR}";
        EI_DESTLIBDIR="$(strip_duplicate_slashes ${EI_DESTLIBDIR})";
        LOCAL_EXTRA_EINSTALL="libdir=${EI_DESTLIBDIR} ${LOCAL_EXTRA_EINSTALL}";
        unset EI_DESTLIBDIR;
    fi;
    if [ -f ./[mM]akefile -o -f ./GNUmakefile ]; then
        if [ "${PORTAGE_DEBUG}" == "1" ]; then
            ${MAKE:-make} -n prefix="${D}usr" datadir="${D}usr/share" infodir="${D}usr/share/info" localstatedir="${D}var/lib" mandir="${D}usr/share/man" sysconfdir="${D}etc" ${LOCAL_EXTRA_EINSTALL} "$@" install;
        fi;
        ${MAKE:-make} prefix="${D}usr" datadir="${D}usr/share" infodir="${D}usr/share/info" localstatedir="${D}var/lib" mandir="${D}usr/share/man" sysconfdir="${D}etc" ${LOCAL_EXTRA_EINSTALL} "$@" install || die "einstall failed";
    else
        die "no Makefile found";
    fi
}
elog () 
{ 
    elog_base LOG "$*";
    [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo;
    echo -e "$@" | while read -r; do
        echo " $GOOD*$NORMAL $REPLY";
    done;
    LAST_E_CMD="elog";
    return 0
}
elog_base () 
{ 
    local messagetype;
    [ -z "${1}" -o -z "${T}" -o ! -d "${T}/logging" ] && return 1;
    case "${1}" in 
        INFO | WARN | ERROR | LOG | QA)
            messagetype="${1}";
            shift
        ;;
        *)
            vecho -e " ${BAD}*${NORMAL} Invalid use of internal function elog_base(), next message will not be logged";
            return 1
        ;;
    esac;
    echo -e "$@" | while read -r; do
        echo "$messagetype $REPLY" >> "${T}/logging/${EBUILD_PHASE:-other}";
    done;
    return 0
}
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 
        xz)
            PIPE_CMD="xz -dc";
            PATCH_SUFFIX="xz"
        ;;
        lzma)
            PIPE_CMD="lzma -dc";
            PATCH_SUFFIX="lzma"
        ;;
        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##*/};
            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##*/};
                if ! ( ${PIPE_CMD} ${x} > ${PATCH_TARGET} ) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1; then
                    echo;
                    eerror "Could not extract patch!";
                    count=5;
                    break;
                fi;
            else
                PATCH_TARGET="${x}";
            fi;
            local abs_paths=$(egrep -n '^[-+]{3} /' "${PATCH_TARGET}" | awk '$2 != "/dev/null" { print }');
            if [[ -n ${abs_paths} ]]; then
                count=1;
                echo "NOTE: skipping -p0 due to absolute paths in patch:" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
                echo "${abs_paths}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
            fi;
            while [ "${count}" -lt 5 ]; do
                _epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
                echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
                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 ( 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
}
eqawarn () 
{ 
    elog_base QA "$*";
    [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo;
    echo -e "$@" | while read -r; do
        vecho " $WARN*$NORMAL $REPLY" 1>&2;
    done;
    LAST_E_CMD="eqawarn";
    return 0
}
esvn_clean () 
{ 
    [[ -z $* ]] && set -- .;
    find "$@" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf
}
esyslog () 
{ 
    return 0
}
ewarn () 
{ 
    elog_base WARN "$*";
    [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo;
    echo -e "$@" | while read -r; do
        echo " $WARN*$NORMAL $RC_INDENTATION$REPLY" 1>&2;
    done;
    LAST_E_CMD="ewarn";
    return 0
}
exeinto () 
{ 
    if [ "$1" == "/" ]; then
        export _E_EXEDESTTREE_="";
    else
        export _E_EXEDESTTREE_="$1";
        if [ ! -d "${D}${_E_EXEDESTTREE_}" ]; then
            install -d "${D}${_E_EXEDESTTREE_}";
        fi;
    fi
}
exeopts () 
{ 
    export EXEOPTIONS="$@";
    hasq -s ${EXEOPTIONS} && die "Never call exeopts() with -s"
}
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
}
filter_readonly_variables () 
{ 
    local x filtered_vars;
    local readonly_bash_vars="DIRSTACK EUID FUNCNAME GROUPS
		PIPESTATUS PPID SHELLOPTS UID";
    local filtered_sandbox_vars="SANDBOX_ACTIVE SANDBOX_BASHRC
		SANDBOX_DEBUG_LOG SANDBOX_DISABLED SANDBOX_LIB
		SANDBOX_LOG SANDBOX_ON";
    filtered_vars="${readonly_bash_vars} ${READONLY_PORTAGE_VARS}
		BASH_.* HISTFILE PATH POSIXLY_CORRECT";
    if hasq --filter-sandbox $*; then
        filtered_vars="${filtered_vars} SANDBOX_.*";
    else
        filtered_vars="${filtered_vars} ${filtered_sandbox_vars}";
    fi;
    if hasq --filter-features $*; then
        filtered_vars="${filtered_vars} FEATURES";
    fi;
    if ! hasq --allow-extra-vars $*; then
        filtered_vars="
			${filtered_vars}
			${PORTAGE_SAVED_READONLY_VARS}
			${PORTAGE_MUTABLE_FILTERED_VARS}
		";
    fi;
    "${PORTAGE_BIN_PATH}"/filter-bash-environment.py "${filtered_vars}"
}
find_module_params () 
{ 
    debug-print-function ${FUNCNAME} $*;
    local matched_offset=0 matched_opts=0 test="${@}" temp_var result;
    local i=0 y=0 z=0;
    for ((i=0; i<=${#test}; i++))
    do
        case ${test:${i}:1} in 
            \()
                matched_offset[0]=${i}
            ;;
            \:)
                matched_opts=$((${matched_opts} + 1));
                matched_offset[${matched_opts}]="${i}"
            ;;
            \))
                matched_opts=$((${matched_opts} + 1));
                matched_offset[${matched_opts}]="${i}"
            ;;
        esac;
    done;
    for ((i=0; i<=${matched_opts}; i++))
    do
        case ${i} in 
            0)
                tempvar=${test:0:${matched_offset[0]}}
            ;;
            *)
                y=$((${matched_offset[$((${i} - 1))]} + 1));
                z=$((${matched_offset[${i}]} - ${matched_offset[$((${i} - 1))]}));
                z=$((${z} - 1));
                tempvar=${test:${y}:${z}}
            ;;
        esac;
        case ${i} in 
            0)
                result="${result} modulename:${tempvar}"
            ;;
            1)
                result="${result} libdir:${tempvar}"
            ;;
            2)
                result="${result} srcdir:${tempvar}"
            ;;
            3)
                result="${result} objdir:${tempvar}"
            ;;
        esac;
    done;
    echo ${result}
}
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-nostrict () 
{ 
    local directive;
    directive=$(gcc-specs-directive cc1);
    return $([[ "${directive/\{!fstrict-overflow:}" != "${directive}" ]])
}
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="" auto=false suffix=$(get_libname);
    [[ -z ${ED+set} ]] && local ED=${D%/}${EPREFIX}/;
    tc-is-static-only && return;
    dodir /usr/${libdir};
    if [[ $1 == "-a" ]]; then
        auto=true;
        shift;
        dodir /${libdir};
    fi;
    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
        local tlib;
        if ${auto}; then
            lib="lib${lib}${suffix}";
        else
            [[ -r ${ED}/${libdir}/${lib} ]] || continue;
        fi;
        case ${CTARGET:-${CHOST}} in 
            *-darwin*)
                if ${auto}; then
                    tlib=$(scanmacho -qF'%S#F' "${ED}"/usr/${libdir}/${lib});
                else
                    tlib=$(scanmacho -qF'%S#F' "${ED}"/${libdir}/${lib});
                fi;
                [[ -z ${tlib} ]] && die "unable to read install_name from ${lib}";
                tlib=${tlib##*/};
                if ${auto}; then
                    mv "${ED}"/usr/${libdir}/${lib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die;
                    rm -f "${ED}"/${libdir}/${lib};
                fi;
                install_name_tool -id "${EPREFIX}"/${libdir}/${tlib} "${ED}"/${libdir}/${tlib};
                pushd "${ED}/usr/${libdir}" > /dev/null;
                ln -snf "../../${libdir}/${tlib}" "${lib}";
                popd > /dev/null
            ;;
            *-aix* | *-irix* | *-hpux* | *-interix* | *-winnt*)
                if ${auto}; then
                    mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die;
                    tlib=$(readlink "${ED}"/${libdir}/${lib});
                    tlib=${tlib##*/};
                    if [[ -z ${tlib} ]]; then
                        tlib=${lib};
                    else
                        rm -f "${ED}"/${libdir}/${lib};
                    fi;
                else
                    tlib=${lib};
                fi;
                pushd "${ED}/usr/${libdir}" > /dev/null;
                ln -snf "../../${libdir}/${tlib}" "${lib}";
                popd > /dev/null
            ;;
            *)
                if ${auto}; then
                    tlib=$(scanelf -qF'%S#F' "${ED}"/usr/${libdir}/${lib});
                    [[ -z ${tlib} ]] && die "unable to read SONAME from ${lib}";
                    mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die;
                    if [[ ${tlib} != ${lib}* ]]; then
                        mv "${ED}"/usr/${libdir}/${tlib}* "${ED}"/${libdir}/ || die;
                    fi;
                    rm -f "${ED}"/${libdir}/${lib};
                else
                    tlib=${lib};
                fi;
                cat > "${ED}/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.  This "fake" dynamic lib is a linker script that
   redirects the linker to the real lib.  And yes, this works in the cross-
   compiling scenario as the sysroot-ed linker will prepend the real path.

   See bug http://bugs.gentoo.org/4411 for more info.
 */
${output_format}
GROUP ( ${EPREFIX}/${libdir}/${tlib} )
END_LDSCRIPT

            ;;
        esac
        fperms a+x "/usr/${libdir}/${lib}" || die "could not change perms on ${lib}";
    done
}
generate_modulesd () 
{ 
    debug-print-function ${FUNCNAME} $*;
    local currm_path currm currm_t t myIFS myVAR;
    local module_docs module_enabled module_aliases module_additions module_examples module_modinfo module_opts;
    for currm_path in ${@};
    do
        currm=${currm_path//*\/};
        currm=$(echo ${currm} | tr '[:lower:]' '[:upper:]');
        currm_t=${currm};
        while [[ -z ${currm_t//*-*} ]]; do
            currm_t=${currm_t/-/_};
        done;
        module_docs="$(eval echo \${MODULESD_${currm_t}_DOCS})";
        module_enabled="$(eval echo \${MODULESD_${currm_t}_ENABLED})";
        module_aliases="$(eval echo \${#MODULESD_${currm_t}_ALIASES[*]})";
        module_additions="$(eval echo \${#MODULESD_${currm_t}_ADDITIONS[*]})";
        module_examples="$(eval echo \${#MODULESD_${currm_t}_EXAMPLES[*]})";
        [[ ${module_aliases} -eq 0 ]] && unset module_aliases;
        [[ ${module_additions} -eq 0 ]] && unset module_additions;
        [[ ${module_examples} -eq 0 ]] && unset module_examples;
        [[ ${module_enabled} == no ]] && return 0;
        for t in ${!module_*};
        do
            [[ -z ${!t} ]] && unset ${t};
        done;
        [[ -z ${!module_*} ]] && return 0;
        module_modinfo="$(modinfo -p ${currm_path}.${KV_OBJ})";
        module_config="${T}/modulesd-${currm}";
        ebegin "Preparing file for modules.d";
        echo "# modules.d configuration file for ${currm}" >> ${module_config};
        [[ -n ${module_docs} ]] && echo "# For more information please read:" >> ${module_config};
        for t in ${module_docs};
        do
            echo "#    ${t//*\/}" >> ${module_config};
        done;
        echo >> ${module_config};
        if [[ ${module_aliases} -gt 0 ]]; then
            echo "# Internal Aliases - Do not edit" >> ${module_config};
            echo "# ------------------------------" >> ${module_config};
            for ((t=0; t<${module_aliases}; t++))
            do
                echo "alias $(eval echo \${MODULESD_${currm}_ALIASES[$t]})" >> ${module_config};
            done;
            echo '' >> ${module_config};
        fi;
        if [[ -n ${module_modinfo} ]]; then
            echo >> ${module_config};
            echo "# Configurable module parameters" >> ${module_config};
            echo "# ------------------------------" >> ${module_config};
            myIFS="${IFS}";
            IFS="$(echo -en "\n\b")";
            for t in ${module_modinfo};
            do
                myVAR="$(echo ${t#*:} | grep -e " [0-9][ =]" | sed "s:.*\([01][= ]\).*:\1:")";
                if [[ -n ${myVAR} ]]; then
                    module_opts="${module_opts} ${t%%:*}:${myVAR}";
                fi;
                echo -e "# ${t%%:*}:\t${t#*:}" >> ${module_config};
            done;
            IFS="${myIFS}";
            echo '' >> ${module_config};
        fi;
        if [[ $(eval echo \${MODULESD_${currm}_ALIASES[0]}) == guess ]]; then
            if [[ -n ${module_opts} ]]; then
                echo "# For Example..." >> ${module_config};
                echo "# --------------" >> ${module_config};
                for t in ${module_opts};
                do
                    echo "# options ${currm} ${t//:*}=${t//*:}" >> ${module_config};
                done;
                echo '' >> ${module_config};
            fi;
        else
            if [[ ${module_examples} -gt 0 ]]; then
                echo "# For Example..." >> ${module_config};
                echo "# --------------" >> ${module_config};
                for ((t=0; t<${module_examples}; t++))
                do
                    echo "options $(eval echo \${MODULESD_${currm}_EXAMPLES[$t]})" >> ${module_config};
                done;
                echo '' >> ${module_config};
            fi;
        fi;
        if [[ ${module_additions} -gt 0 ]]; then
            for ((t=0; t<${module_additions}; t++))
            do
                echo "$(eval echo \${MODULESD_${currm}_ADDITIONS[$t]})" >> ${module_config};
            done;
            echo '' >> ${module_config};
        fi;
        if kernel_is ge 2 6; then
            insinto /etc/modprobe.d;
        else
            insinto /etc/modules.d;
        fi;
        newins ${module_config} ${currm_path//*\/};
        [[ -n ${module_docs} ]] && dodoc ${module_docs};
    done;
    eend 0;
    return 0
}
get-KERNEL_CC () 
{ 
    debug-print-function ${FUNCNAME} $*;
    if [[ -n ${KERNEL_CC} ]]; then
        echo "${KERNEL_CC}";
        return;
    fi;
    local kernel_cc;
    if [ -n "${KERNEL_ABI}" ]; then
        kernel_cc="$(tc-getCC $(ABI=${KERNEL_ABI} get_abi_CHOST))";
    else
        kernel_cc=$(tc-getCC);
    fi;
    echo "${kernel_cc}"
}
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_KV () 
{ 
    [[ -z ${_RC_GET_KV_CACHE} ]] && _RC_GET_KV_CACHE=$(uname -r);
    echo $(KV_to_int "${_RC_GET_KV_CACHE}");
    return $?
}
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_after_major_version () 
{ 
    __versionator_shopt_toggle on;
    echo $(get_version_component_range 2- "${1:-${PV}}" );
    __versionator_shopt_toggle off
}
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_all_version_components () 
{ 
    __versionator_shopt_toggle on;
    local ver_str=${1:-${PV}} result result_idx=0;
    result=();
    if [[ "${VERSIONATOR_CACHE_VER_STR}" == "${ver_str}" ]]; then
        echo ${VERSIONATOR_CACHE_RESULT};
        __versionator_shopt_toggle off;
        return;
    fi;
    export VERSIONATOR_CACHE_VER_STR="${ver_str}";
    while [[ -n "$ver_str" ]]; do
        case "${ver_str:0:1}" in 
            [[:digit:]])
                result[$result_idx]="${ver_str%%[^[:digit:]]*}";
                ver_str="${ver_str##+([[:digit:]])}";
                result_idx=$(($result_idx + 1))
            ;;
            [-_.])
                result[$result_idx]="${ver_str:0:1}";
                ver_str="${ver_str:1}";
                result_idx=$(($result_idx + 1))
            ;;
            [[:alpha:]])
                local not_match="${ver_str##+([[:alpha:]])*([[:digit:]])}";
                result[$result_idx]=${ver_str:0:$((${#ver_str} - ${#not_match}))};
                ver_str="${not_match}";
                result_idx=$(($result_idx + 1))
            ;;
            *)
                result[$result_idx]="${ver_str:0:1}";
                ver_str="${ver_str:1}";
                result_idx=$(($result_idx + 1))
            ;;
        esac;
    done;
    export VERSIONATOR_CACHE_RESULT="${result[@]}";
    echo ${result[@]};
    __versionator_shopt_toggle off
}
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_last_version_component_index () 
{ 
    __versionator_shopt_toggle on;
    echo $(( $(get_version_component_count "${1:-${PV}}" ) - 1 ));
    __versionator_shopt_toggle off
}
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 
        *-cygwin | mingw* | *-mingw*)
            libname="dll"
        ;;
        *-darwin*)
            libname="dylib"
        ;;
        *-aix*)
            libname="a"
        ;;
        *-mint*)
            libname="irrelevant"
        ;;
        *)
            libname="so"
        ;;
    esac;
    if [[ -z $* ]]; then
        echo ".${libname}";
    else
        for ver in "$@";
        do
            case ${CHOST} in 
                *-darwin*)
                    echo ".${ver}.${libname}"
                ;;
                *-aix*)
                    echo ".${libname}"
                ;;
                *-mint*)
                    echo ".${libname}"
                ;;
                *)
                    echo ".${libname}.${ver}"
                ;;
            esac;
        done;
    fi
}
get_localversion () 
{ 
    local lv_list i x;
    for i in $(ls ${1}/localversion* 2>/dev/null);
    do
        [[ -n ${i//*~*} ]] && lv_list="${lv_list} ${i}";
    done;
    for i in ${lv_list};
    do
        x="${x}$(<${i})";
    done;
    x=${x/ /};
    echo ${x}
}
get_major_version () 
{ 
    __versionator_shopt_toggle on;
    local c;
    c=($(get_all_version_components "${1:-${PV}}" ));
    echo ${c[0]};
    __versionator_shopt_toggle off
}
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}
}
get_running_version () 
{ 
    KV_FULL=$(uname -r);
    if [[ -f ${ROOT}/lib/modules/${KV_FULL}/source/Makefile ]]; then
        KERNEL_DIR=$(readlink -f ${ROOT}/lib/modules/${KV_FULL}/source);
        unset KV_FULL;
        get_version;
        return $?;
    else
        if [[ -f ${ROOT}/lib/modules/${KV_FULL}/build/Makefile ]]; then
            KERNEL_DIR=$(readlink -f ${ROOT}/lib/modules/${KV_FULL}/build);
            unset KV_FULL;
            get_version;
            return $?;
        else
            KV_MAJOR=$(get_version_component_range 1 ${KV_FULL});
            KV_MINOR=$(get_version_component_range 2 ${KV_FULL});
            KV_PATCH=$(get_version_component_range 3- ${KV_FULL});
            KV_PATCH=${KV_PATCH//-*};
            [[ -n ${KV_FULL#*-} ]] && [[ -n ${KV_FULL//${KV_FULL#*-}} ]] && KV_EXTRA="-${KV_FULL#*-}";
        fi;
    fi;
    return 0
}
get_version () 
{ 
    local kbuild_output;
    [ -n "${KV_FULL}" ] && return 0;
    unset KV_DIR;
    qeinfo "Determining the location of the kernel source code";
    [ -h "${KERNEL_DIR}" ] && KV_DIR="$(readlink -f ${KERNEL_DIR})";
    [ -d "${KERNEL_DIR}" ] && KV_DIR="${KERNEL_DIR}";
    if [ -z "${KV_DIR}" ]; then
        qeerror "Unable to find kernel sources at ${KERNEL_DIR}";
        qeinfo "This package requires Linux sources.";
        if [ "${KERNEL_DIR}" == "/usr/src/linux" ]; then
            qeinfo "Please make sure that ${KERNEL_DIR} points at your running kernel, ";
            qeinfo "(or the kernel you wish to build against).";
            qeinfo "Alternatively, set the KERNEL_DIR environment variable to the kernel sources location";
        else
            qeinfo "Please ensure that the KERNEL_DIR environment variable points at full Linux sources of the kernel you wish to compile against.";
        fi;
        return 1;
    fi;
    qeinfo "Found kernel source directory:";
    qeinfo "    ${KV_DIR}";
    if [ ! -s "${KV_DIR}/Makefile" ]; then
        qeerror "Could not find a Makefile in the kernel source directory.";
        qeerror "Please ensure that ${KERNEL_DIR} points to a complete set of Linux sources";
        return 1;
    fi;
    OUTPUT_DIR="${OUTPUT_DIR:-${KBUILD_OUTPUT}}";
    kbuild_output="$(getfilevar KBUILD_OUTPUT ${KV_DIR}/Makefile)";
    OUTPUT_DIR="${OUTPUT_DIR:-${kbuild_output}}";
    KV_MAJOR="$(getfilevar VERSION ${KV_DIR}/Makefile)";
    KV_MINOR="$(getfilevar PATCHLEVEL ${KV_DIR}/Makefile)";
    KV_PATCH="$(getfilevar SUBLEVEL ${KV_DIR}/Makefile)";
    KV_EXTRA="$(getfilevar EXTRAVERSION ${KV_DIR}/Makefile)";
    if [ -z "${KV_MAJOR}" -o -z "${KV_MINOR}" -o -z "${KV_PATCH}" ]; then
        qeerror "Could not detect kernel version.";
        qeerror "Please ensure that ${KERNEL_DIR} points to a complete set of Linux sources.";
        return 1;
    fi;
    [ "${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}" == "$(uname -r)" ] && OUTPUT_DIR="${OUTPUT_DIR:-/lib/modules/${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}/build}";
    [ -h "${OUTPUT_DIR}" ] && KV_OUT_DIR="$(readlink -f ${OUTPUT_DIR})";
    [ -d "${OUTPUT_DIR}" ] && KV_OUT_DIR="${OUTPUT_DIR}";
    if [ -n "${KV_OUT_DIR}" ]; then
        qeinfo "Found kernel object directory:";
        qeinfo "    ${KV_OUT_DIR}";
        KV_LOCAL="$(get_localversion ${KV_OUT_DIR})";
    fi;
    KV_OUT_DIR="${KV_OUT_DIR:-${KV_DIR}}";
    KV_LOCAL="${KV_LOCAL}$(get_localversion ${KV_DIR})";
    if linux_config_exists; then
        KV_LOCAL="${KV_LOCAL}$(linux_chkconfig_string LOCALVERSION)";
        KV_LOCAL="${KV_LOCAL//\"/}";
        [ -e ${KV_DIR}/scripts/setlocalversion ] && linux_chkconfig_builtin LOCALVERSION_AUTO && KV_LOCAL="${KV_LOCAL}$(sh ${KV_DIR}/scripts/setlocalversion ${KV_DIR})";
    fi;
    KV_FULL="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}${KV_LOCAL}";
    qeinfo "Found sources for kernel version:";
    qeinfo "    ${KV_FULL}";
    return 0
}
get_version_component_count () 
{ 
    __versionator_shopt_toggle on;
    local a;
    a=($(get_version_components "${1:-${PV}}" ));
    echo ${#a[@]};
    __versionator_shopt_toggle off
}
get_version_component_range () 
{ 
    __versionator_shopt_toggle on;
    local c v="${2:-${PV}}" range="${1}" range_start range_end i=-1 j=0;
    c=($(get_all_version_components ${v} ));
    range_start="${range%-*}";
    range_start="${range_start:-1}";
    range_end="${range#*-}";
    range_end="${range_end:-${#c[@]}}";
    while (( j < ${range_start} )); do
        i=$(($i + 1));
        [[ $i -gt ${#c[@]} ]] && __versionator_shopt_toggle off && return;
        [[ -n "${c[${i}]//[-._]}" ]] && j=$(($j + 1));
    done;
    while (( j <= ${range_end} )); do
        echo -n ${c[$i]};
        [[ $i -gt ${#c[@]} ]] && __versionator_shopt_toggle off && return;
        [[ -n "${c[${i}]//[-._]}" ]] && j=$(($j + 1));
        i=$(($i + 1));
    done;
    __versionator_shopt_toggle off
}
get_version_components () 
{ 
    __versionator_shopt_toggle on;
    local c="$(get_all_version_components "${1:-${PV}}")";
    c=(${c[@]//[-._]/ });
    echo ${c[@]};
    __versionator_shopt_toggle off
}
getfilevar () 
{ 
    local ERROR basefname basedname myARCH="${ARCH}";
    ERROR=0;
    [ -z "${1}" ] && ERROR=1;
    [ ! -f "${2}" ] && ERROR=1;
    if [ "${ERROR}" = 1 ]; then
        echo -e "\n";
        eerror "getfilevar requires 2 variables, with the second a valid file.";
        eerror "   getfilevar <VARIABLE> <CONFIGFILE>";
    else
        basefname="$(basename ${2})";
        basedname="$(dirname ${2})";
        unset ARCH;
        echo -e "e:\\n\\t@echo \$(${1})\\ninclude ${basefname}" | make -C "${basedname}" M="${S}" ${BUILD_FIXES} -s -f - 2> /dev/null;
        ARCH=${myARCH};
    fi
}
has () 
{ 
    hasq "$@"
}
has_multilib_profile () 
{ 
    [ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ]
}
has_version () 
{ 
    if [ "${EBUILD_PHASE}" == "depend" ]; then
        die "portageq calls (has_version calls portageq) are not allowed in the global scope";
    fi;
    PYTHONPATH=${PORTAGE_PYM_PATH}${PYTHONPATH:+:}${PYTHONPATH} "${PORTAGE_BIN_PATH}"/portageq has_version "${ROOT}" "$1";
    local retval=$?;
    case "${retval}" in 
        0)
            return 0
        ;;
        1)
            return 1
        ;;
        *)
            die "unexpected portageq exit code: ${retval}"
        ;;
    esac
}
hasg () 
{ 
    local x s=$1;
    shift;
    for x in "$@";
    do
        [[ ${x} == ${s} ]] && echo "${x}" && return 0;
    done;
    return 1
}
hasgq () 
{ 
    hasg "$@" > /dev/null
}
hasq () 
{ 
    [[ " ${*:2} " == *" $1 "* ]]
}
hasv () 
{ 
    if hasq "$@"; then
        echo "$1";
        return 0;
    fi;
    return 1
}
inherit () 
{ 
    ECLASS_DEPTH=$(($ECLASS_DEPTH + 1));
    if [[ ${ECLASS_DEPTH} > 1 ]]; then
        debug-print "*** Multiple Inheritence (Level: ${ECLASS_DEPTH})";
    fi;
    if [[ -n $ECLASS && -n ${!__export_funcs_var} ]]; then
        echo "QA Notice: EXPORT_FUNCTIONS is called before inherit in" "$ECLASS.eclass. For compatibility with <=portage-2.1.6.7," "only call EXPORT_FUNCTIONS after inherit(s)." | fmt -w 75 | while read; do
            eqawarn "$REPLY";
        done;
    fi;
    local location;
    local olocation;
    local x;
    local PECLASS=$ECLASS;
    local prev_export_funcs_var=$__export_funcs_var;
    local B_IUSE;
    local B_DEPEND;
    local B_RDEPEND;
    local B_PDEPEND;
    while [ "$1" ]; do
        location="${ECLASSDIR}/${1}.eclass";
        olocation="";
        export ECLASS="$1";
        __export_funcs_var=__export_functions_$ECLASS_DEPTH;
        unset $__export_funcs_var;
        if [ "${EBUILD_PHASE}" != "depend" ] && [[ ${EBUILD_PHASE} != *rm ]] && [[ ${EMERGE_FROM} != "binary" ]]; then
            if ! hasq $ECLASS $INHERITED; then
                eqawarn "QA Notice: ECLASS '$ECLASS' inherited illegally in $CATEGORY/$PF $EBUILD_PHASE";
            fi;
        fi;
        if [ -n "$PORTDIR_OVERLAY" ]; then
            local overlay;
            for overlay in ${PORTDIR_OVERLAY};
            do
                olocation="${overlay}/eclass/${1}.eclass";
                if [ -e "$olocation" ]; then
                    location="${olocation}";
                    debug-print "  eclass exists: ${location}";
                fi;
            done;
        fi;
        debug-print "inherit: $1 -> $location";
        [ ! -e "$location" ] && die "${1}.eclass could not be found by inherit()";
        if [ "${location}" == "${olocation}" ] && ! hasq "${location}" ${EBUILD_OVERLAY_ECLASSES}; then
            EBUILD_OVERLAY_ECLASSES="${EBUILD_OVERLAY_ECLASSES} ${location}";
        fi;
        set -f;
        unset B_IUSE B_DEPEND B_RDEPEND B_PDEPEND;
        [ "${IUSE-unset}" != "unset" ] && B_IUSE="${IUSE}";
        [ "${DEPEND-unset}" != "unset" ] && B_DEPEND="${DEPEND}";
        [ "${RDEPEND-unset}" != "unset" ] && B_RDEPEND="${RDEPEND}";
        [ "${PDEPEND-unset}" != "unset" ] && B_PDEPEND="${PDEPEND}";
        unset IUSE DEPEND RDEPEND PDEPEND;
        set +f;
        qa_source "$location" || die "died sourcing $location in inherit()";
        set -f;
        [ "${IUSE-unset}" != "unset" ] && export E_IUSE="${E_IUSE} ${IUSE}";
        [ "${DEPEND-unset}" != "unset" ] && export E_DEPEND="${E_DEPEND} ${DEPEND}";
        [ "${RDEPEND-unset}" != "unset" ] && export E_RDEPEND="${E_RDEPEND} ${RDEPEND}";
        [ "${PDEPEND-unset}" != "unset" ] && export E_PDEPEND="${E_PDEPEND} ${PDEPEND}";
        [ "${B_IUSE-unset}" != "unset" ] && IUSE="${B_IUSE}";
        [ "${B_IUSE-unset}" != "unset" ] || unset IUSE;
        [ "${B_DEPEND-unset}" != "unset" ] && DEPEND="${B_DEPEND}";
        [ "${B_DEPEND-unset}" != "unset" ] || unset DEPEND;
        [ "${B_RDEPEND-unset}" != "unset" ] && RDEPEND="${B_RDEPEND}";
        [ "${B_RDEPEND-unset}" != "unset" ] || unset RDEPEND;
        [ "${B_PDEPEND-unset}" != "unset" ] && PDEPEND="${B_PDEPEND}";
        [ "${B_PDEPEND-unset}" != "unset" ] || unset PDEPEND;
        set +f;
        if [[ -n ${!__export_funcs_var} ]]; then
            for x in ${!__export_funcs_var};
            do
                debug-print "EXPORT_FUNCTIONS: $x -> ${ECLASS}_$x";
                declare -F "${ECLASS}_$x" > /dev/null || die "EXPORT_FUNCTIONS: ${ECLASS}_$x is not defined";
                eval "$x() { ${ECLASS}_$x \"\$@\" ; }" > /dev/null;
            done;
        fi;
        unset $__export_funcs_var;
        hasq $1 $INHERITED || export INHERITED="$INHERITED $1";
        shift;
    done;
    ((--ECLASS_DEPTH));
    if (( ECLASS_DEPTH > 0 )); then
        export ECLASS=$PECLASS;
        __export_funcs_var=$prev_export_funcs_var;
    else
        unset ECLASS __export_funcs_var;
    fi;
    return 0
}
insinto () 
{ 
    if [ "$1" == "/" ]; then
        export INSDESTTREE="";
    else
        export INSDESTTREE=$1;
        if [ ! -d "${D}${INSDESTTREE}" ]; then
            install -d "${D}${INSDESTTREE}";
        fi;
    fi
}
insopts () 
{ 
    export INSOPTIONS="$@";
    hasq -s ${INSOPTIONS} && die "Never call insopts() with -s"
}
into () 
{ 
    if [ "$1" == "/" ]; then
        export DESTTREE="";
    else
        export DESTTREE=$1;
        if [ ! -d "${D}${DESTTREE}" ]; then
            install -d "${D}${DESTTREE}";
        fi;
    fi
}
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} ]]
}
keepdir () 
{ 
    dodir "$@";
    local x;
    if [ "$1" == "-R" ] || [ "$1" == "-r" ]; then
        shift;
        find "$@" -type d -printf "${D}%p/.keep_${CATEGORY}_${PN}-${SLOT}\n" | tr "\n" "\0" | ${XARGS} -0 -n100 touch || die "Failed to recursively create .keep files";
    else
        for x in "$@";
        do
            touch "${D}${x}/.keep_${CATEGORY}_${PN}-${SLOT}" || die "Failed to create .keep in ${D}${x}";
        done;
    fi
}
kernel_is () 
{ 
    get_version;
    local operator test value x=0 y=0 z=0;
    case ${1} in 
        lt)
            operator="-lt";
            shift
        ;;
        gt)
            operator="-gt";
            shift
        ;;
        le)
            operator="-le";
            shift
        ;;
        ge)
            operator="-ge";
            shift
        ;;
        eq)
            operator="-eq";
            shift
        ;;
        *)
            operator="-eq"
        ;;
    esac;
    for x in ${@};
    do
        for ((y=0; y<$((3 - ${#x})); y++))
        do
            value="${value}0";
        done;
        value="${value}${x}";
        z=$((${z} + 1));
        case ${z} in 
            1)
                for ((y=0; y<$((3 - ${#KV_MAJOR})); y++))
                do
                    test="${test}0";
                done;
                test="${test}${KV_MAJOR}"
            ;;
            2)
                for ((y=0; y<$((3 - ${#KV_MINOR})); y++))
                do
                    test="${test}0";
                done;
                test="${test}${KV_MINOR}"
            ;;
            3)
                for ((y=0; y<$((3 - ${#KV_PATCH})); y++))
                do
                    test="${test}0";
                done;
                test="${test}${KV_PATCH}"
            ;;
            *)
                die "Error in kernel-2_kernel_is(): Too many parameters."
            ;;
        esac;
    done;
    [ ${test} ${operator} ${value} ] && return 0 || return 1
}
lchgrp () 
{ 
    chgrp -h "$@"
}
lchown () 
{ 
    chown -h "$@"
}
libopts () 
{ 
    export LIBOPTIONS="$@";
    hasq -s ${LIBOPTIONS} && die "Never call libopts() with -s"
}
linux-info_pkg_setup () 
{ 
    get_version || die "Unable to calculate Linux Kernel version";
    if kernel_is 2 4; then
        if [ "$( gcc-major-version )" -eq "4" ]; then
            echo;
            ewarn "Be warned !! >=sys-devel/gcc-4.0.0 isn't supported with";
            ewarn "linux-2.4 (or modules building against a linux-2.4 kernel)!";
            echo;
            ewarn "Either switch to another gcc-version (via gcc-config) or use a";
            ewarn "newer kernel that supports gcc-4.";
            echo;
            ewarn "Also be aware that bugreports about gcc-4 not working";
            ewarn "with linux-2.4 based ebuilds will be closed as INVALID!";
            echo;
            epause 10;
        fi;
    fi;
    [ -n "${CONFIG_CHECK}" ] && check_extra_config
}
linux-mod_pkg_postinst () 
{ 
    debug-print-function ${FUNCNAME} $*;
    ${UPDATE_DEPMOD} && update_depmod;
    ${UPDATE_MODULES} && update_modules;
    ${UPDATE_MODULEDB} && update_moduledb
}
linux-mod_pkg_postrm () 
{ 
    debug-print-function ${FUNCNAME} $*;
    remove_moduledb
}
linux-mod_pkg_preinst () 
{ 
    debug-print-function ${FUNCNAME} $*;
    [ -d "${D}lib/modules" ] && UPDATE_DEPMOD=true || UPDATE_DEPMOD=false;
    [ -d "${D}etc/modules.d" ] && UPDATE_MODULES=true || UPDATE_MODULES=false;
    [ -d "${D}lib/modules" ] && UPDATE_MODULEDB=true || UPDATE_MODULEDB=false
}
linux-mod_pkg_setup () 
{ 
    debug-print-function ${FUNCNAME} $*;
    linux-info_pkg_setup;
    require_configured_kernel;
    check_kernel_built;
    strip_modulenames;
    [[ -n ${MODULE_NAMES} ]] && check_modules_supported;
    set_kvobj
}
linux-mod_src_compile () 
{ 
    debug-print-function ${FUNCNAME} $*;
    local modulename libdir srcdir objdir i n myABI="${ABI}";
    set_arch_to_kernel;
    ABI="${KERNEL_ABI}";
    BUILD_TARGETS=${BUILD_TARGETS:-clean module};
    strip_modulenames;
    cd "${S}";
    touch Module.symvers;
    for i in ${MODULE_NAMES};
    do
        unset libdir srcdir objdir;
        for n in $(find_module_params ${i});
        do
            eval ${n/:*}=${n/*:/};
        done;
        libdir=${libdir:-misc};
        srcdir=${srcdir:-${S}};
        objdir=${objdir:-${srcdir}};
        if [ ! -f "${srcdir}/.built" ]; then
            cd ${srcdir};
            ln -s "${S}"/Module.symvers Module.symvers;
            einfo "Preparing ${modulename} module";
            if [[ -n ${ECONF_PARAMS} ]]; then
                econf ${ECONF_PARAMS} || die "Unable to run econf ${ECONF_PARAMS}";
            fi;
            eval "emake HOSTCC=\"$(tc-getBUILD_CC)\" 						CROSS_COMPILE=${CHOST}- 						LDFLAGS=\"$(get_abi_LDFLAGS)\" 						${BUILD_FIXES} 						${BUILD_PARAMS} 						${BUILD_TARGETS} " || die "Unable to emake HOSTCC="$(tc-getBUILD_CC)" CROSS_COMPILE=${CHOST}- LDFLAGS="$(get_abi_LDFLAGS)" ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS}";
            cd ${OLDPWD};
            touch ${srcdir}/.built;
        fi;
    done;
    set_arch_to_portage;
    ABI="${myABI}"
}
linux-mod_src_install () 
{ 
    debug-print-function ${FUNCNAME} $*;
    local modulename libdir srcdir objdir i n;
    strip_modulenames;
    for i in ${MODULE_NAMES};
    do
        unset libdir srcdir objdir;
        for n in $(find_module_params ${i});
        do
            eval ${n/:*}=${n/*:/};
        done;
        libdir=${libdir:-misc};
        srcdir=${srcdir:-${S}};
        objdir=${objdir:-${srcdir}};
        einfo "Installing ${modulename} module";
        cd ${objdir} || die "${objdir} does not exist";
        insinto /lib/modules/${KV_FULL}/${libdir};
        doins ${modulename}.${KV_OBJ} || die "doins ${modulename}.${KV_OBJ} failed";
        cd ${OLDPWD};
        generate_modulesd ${objdir}/${modulename};
    done
}
linux_chkconfig_builtin () 
{ 
    local RESULT;
    require_configured_kernel;
    RESULT="$(getfilevar CONFIG_${1} ${KV_OUT_DIR}/.config)";
    [ "${RESULT}" = "y" ] && return 0 || return 1
}
linux_chkconfig_module () 
{ 
    local RESULT;
    require_configured_kernel;
    RESULT="$(getfilevar CONFIG_${1} ${KV_OUT_DIR}/.config)";
    [ "${RESULT}" = "m" ] && return 0 || return 1
}
linux_chkconfig_present () 
{ 
    local RESULT;
    require_configured_kernel;
    RESULT="$(getfilevar CONFIG_${1} ${KV_OUT_DIR}/.config)";
    [ "${RESULT}" = "m" -o "${RESULT}" = "y" ] && return 0 || return 1
}
linux_chkconfig_string () 
{ 
    require_configured_kernel;
    getfilevar "CONFIG_${1}" "${KV_OUT_DIR}/.config"
}
linux_config_exists () 
{ 
    [ -s "${KV_OUT_DIR}/.config" ]
}
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 "$0: You must specify the title" && return 1;
    [[ -z $2 ]] && eerror "$0: You must specify the command" && return 1;
    local title=$1;
    local command=$2;
    local desktop=${T}/${wm:-${PN}}.desktop;
    shift 2;
    cat  > "${desktop}" <<-EOF
[Desktop Entry]
Name=${title}
Comment=This session logs you into ${title}
Exec=${command} $*
TryExec=${command}
Type=XSession
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
}
move_old_moduledb () 
{ 
    debug-print-function ${FUNCNAME} $*;
    local OLDDIR=${ROOT}/usr/share/module-rebuild/;
    local NEWDIR=${ROOT}/var/lib/module-rebuild/;
    if [[ -f ${OLDDIR}/moduledb ]]; then
        [[ ! -d ${NEWDIR} ]] && mkdir -p ${NEWDIR};
        [[ ! -f ${NEWDIR}/moduledb ]] && mv ${OLDDIR}/moduledb ${NEWDIR}/moduledb;
        rm -f ${OLDDIR}/*;
        rmdir ${OLDDIR};
    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"
        ;;
        sparc*)
            export CFLAGS_sparc32=${CFLAGS_sparc32};
            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="${MULTILIB_ABIS-sparc64 sparc32}";
            export DEFAULT_ABI="${DEFAULT_ABI-sparc64}"
        ;;
        *)
            export MULTILIB_ABIS="default";
            export DEFAULT_ABI="default"
        ;;
    esac
}
multilib_toolchain_setup () 
{ 
    local v vv;
    export ABI=$1;
    if [[ ${ABI} != ${DEFAULT_ABI} ]]; then
        if [[ ${DEFAULT_ABI_SAVED} != "true" ]]; then
            for v in CHOST CBUILD AS CC CXX LD;
            do
                export __abi_saved_${v}="${!v}";
            done;
            export DEFAULT_ABI_SAVED="true";
        fi;
        export CHOST=$(get_abi_CHOST ${DEFAULT_ABI});
        export AS="$(tc-getAS) $(get_abi_ASFLAGS)";
        export CC="$(tc-getCC) $(get_abi_CFLAGS)";
        export CXX="$(tc-getCXX) $(get_abi_CFLAGS)";
        export LD="$(tc-getLD) $(get_abi_LDFLAGS)";
        export CHOST=$(get_abi_CHOST $1);
        export CBUILD=$(get_abi_CHOST $1);
    else
        if [[ ${DEFAULT_ABI_SAVED} == "true" ]]; then
            for v in CHOST CBUILD AS CC CXX LD;
            do
                vv="__abi_saved_${v}";
                export ${v}=${!vv};
            done;
        fi;
    fi
}
newdepend () 
{ 
    debug-print-function newdepend $*;
    debug-print "newdepend: E_DEPEND=$E_DEPEND E_RDEPEND=$E_RDEPEND";
    while [ -n "$1" ]; do
        case $1 in 
            "/autotools")
                do_newdepend DEPEND sys-devel/autoconf sys-devel/automake sys-devel/make
            ;;
            "/c")
                do_newdepend DEPEND sys-devel/gcc virtual/libc;
                do_newdepend RDEPEND virtual/libc
            ;;
            *)
                do_newdepend DEPEND $1
            ;;
        esac;
        shift;
    done
}
newicon () 
{ 
    ( insinto /usr/share/pixmaps;
    newins "$@" )
}
newmenu () 
{ 
    ( insinto /usr/share/applications;
    newins "$@" )
}
newpdepend () 
{ 
    debug-print-function newpdepend $*;
    do_newdepend PDEPEND $1
}
newrdepend () 
{ 
    debug-print-function newrdepend $*;
    do_newdepend RDEPEND $1
}
number_abis () 
{ 
    get_install_abis | wc -w
}
pkg_nofetch () 
{ 
    _eapi0_pkg_nofetch "$@"
}
pkg_postinst () 
{ 
    /usr/bin/eselect opengl set --use-old ati;
    elog "To switch to ATI OpenGL, run \"eselect opengl set ati\"";
    elog "To change your xorg.conf you can use the bundled \"aticonfig\"";
    elog;
    elog "If you experience unexplained segmentation faults and kernel crashes";
    elog "with this driver and multi-threaded applications such as wine,";
    elog "set UseFastTLS in xorg.conf to either 0 or 1, but not 2.";
    elog;
    elog "You will have to source /etc/profile (or logout and back in) for dri";
    elog "to work, unless you previously had ati-drivers installed.";
    ewarn "If you experience screen corruption with this driver, try putting";
    ewarn '         Option "XAANoOffscreenPixmaps" "true"';
    ewarn "in the Device Section of /etc/X11/xorg.conf.";
    linux-mod_pkg_postinst
}
pkg_postrm () 
{ 
    linux-mod_pkg_postrm;
    /usr/bin/eselect opengl set --use-old xorg-x11
}
pkg_preinst () 
{ 
    linux-mod_pkg_preinst "$@"
}
pkg_setup () 
{ 
    MODULE_DIR="${S}/common/lib/modules/fglrx/build_mod";
    MODULE_NAMES="fglrx(video:${S}/common/lib/modules/fglrx/build_mod/2.6.x)";
    BUILD_TARGETS="kmod_build";
    linux-mod_pkg_setup;
    BUILD_PARAMS="GCC_VER_MAJ=$(gcc-major-version) KVER=${KV_FULL} KDIR=${KV_DIR}";
    if ! kernel_is 2 6; then
        eerror "Need a 2.6 kernel to compile against!";
        die "Need a 2.6 kernel to compile against!";
    fi;
    if kernel_is ge 2 6 25 && linux_chkconfig_present PREEMPT_RCU; then
        die "${P} is not compatible with RCU Preemption (bug #223281), please disable it";
    fi;
    if kernel_is ge 2 6 26 && ! linux_chkconfig_present UNUSED_SYMBOLS; then
        ewarn "You have to Enable unused/obsolete exported symbols in Kernel hacking section of kernel config for fglrx to load";
    fi;
    if kernel_is ge 2 6 24 && ! linux_chkconfig_present PCI_LEGACY; then
        eerror "${P} requires support for pci_find_slot.";
        die "${P} requires support for pci_find_slot.";
    fi;
    if ! linux_chkconfig_present MTRR; then
        ewarn "You don't have MTRR support enabled, the direct rendering will not work.";
    fi;
    if linux_chkconfig_builtin DRM; then
        ewarn "You have DRM support enabled builtin, the direct rendering will not work.";
    fi;
    if ! linux_chkconfig_present AGP && ! linux_chkconfig_present PCIEPORTBUS; then
        ewarn "You need AGP and/or PCI Express support for direct rendering to work.";
    fi;
    if linux_chkconfig_present PARAVIRT; then
        eerror "The current ati-drivers don't compile when having";
        eerror "paravirtualization active due to GPL symbol export";
        eerror "restrictions.";
        eerror "Please disable it:";
        eerror "	CONFIG_PARAVIRT=n";
        eerror "in /usr/src/linux/.config or";
        eerror "	Processor type and features -->";
        eerror "		[ ] Paravirtualization support (EXPERIMENTAL)";
        eerror "in 'menuconfig'";
        die "CONFIG_PARAVIRT enabled";
    fi;
    if ! linux_chkconfig_present MAGIC_SYSRQ; then
        eerror "You need MAGIC_SYSRQ enabled in order to build ati-drivers";
        die "CONFIG_MAGIC_SYSRQ disabled";
    fi;
    BASE_DIR="${S}/x740";
    if use amd64; then
        MY_BASE_DIR="${BASE_DIR}_64a";
        PKG_LIBDIR=lib64;
        ARCH_DIR="${S}/arch/x86_64";
    else
        MY_BASE_DIR="${BASE_DIR}";
        PKG_LIBDIR=lib;
        ARCH_DIR="${S}/arch/x86";
    fi
}
portageq () 
{ 
    if [ "${EBUILD_PHASE}" == "depend" ]; then
        die "portageq calls are not allowed in the global scope";
    fi;
    PYTHONPATH=${PORTAGE_PYM_PATH}${PYTHONPATH:+:}${PYTHONPATH} "${PORTAGE_BIN_PATH}/portageq" "$@"
}
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
}
preprocess_ebuild_env () 
{ 
    local filter_opts="";
    if [ -f "${T}/environment.raw" ]; then
        filter_opts="--filter-sandbox --filter-features ${filter_opts}";
    fi;
    filter_readonly_variables ${filter_opts} < "${T}"/environment > "${T}"/environment.filtered || return $?;
    unset filter_opts;
    mv "${T}"/environment.filtered "${T}"/environment || return $?;
    rm -f "${T}/environment.success" || return $?;
    ( export SANDBOX_ON=1;
    source "${T}/environment" || exit $?;
    export SANDBOX_ON=0;
    source "${PORTAGE_BIN_PATH}/isolated-functions.sh" || exit $?;
    save_ebuild_env || exit $?;
    touch "${T}/environment.success" || exit $? ) > "${T}/environment.filtered";
    local retval;
    if [ -e "${T}/environment.success" ]; then
        filter_readonly_variables < "${T}/environment.filtered" > "${T}/environment";
        retval=$?;
    else
        retval=1;
    fi;
    rm -f "${T}"/environment.{filtered,raw,success};
    return ${retval}
}
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
}
qa_call () 
{ 
    local shopts=$(shopt) OLDIFS="$IFS";
    local retval;
    "$@";
    retval=$?;
    set +e;
    [[ $shopts != $(shopt) ]] && eqawarn "QA Notice: Global shell options changed and were not restored while calling '$*'";
    [[ "$IFS" != "$OLDIFS" ]] && eqawarn "QA Notice: Global IFS changed and was not restored while calling '$*'";
    return $retval
}
qa_source () 
{ 
    local shopts=$(shopt) OLDIFS="$IFS";
    local retval;
    source "$@";
    retval=$?;
    set +e;
    [[ $shopts != $(shopt) ]] && eqawarn "QA Notice: Global shell options changed and were not restored while sourcing '$*'";
    [[ "$IFS" != "$OLDIFS" ]] && eqawarn "QA Notice: Global IFS changed and was not restored while sourcing '$*'";
    return $retval
}
qeerror () 
{ 
    qout eerror "${@}"
}
qeinfo () 
{ 
    qout einfo "${@}"
}
qout () 
{ 
    local outputmsg type;
    type=${1};
    shift;
    outputmsg="${@}";
    case "${EBUILD_PHASE}" in 
        depend)
            unset outputmsg
        ;;
        clean)
            unset outputmsg
        ;;
        preinst)
            unset outputmsg
        ;;
    esac;
    [ -n "${outputmsg}" ] && ${type} "${outputmsg}"
}
quiet_mode () 
{ 
    [[ ${PORTAGE_QUIET} -eq 1 ]]
}
register_die_hook () 
{ 
    export EBUILD_DEATH_HOOKS="${EBUILD_DEATH_HOOKS} $*"
}
remove_flag () 
{ 
    local remove="${1}";
    shift;
    while [[ -n "${1}" ]]; do
        [[ "${1}" != "${remove}" ]] && echo -n "${1} ";
        shift;
    done
}
remove_moduledb () 
{ 
    debug-print-function ${FUNCNAME} $*;
    local MODULEDB_DIR=${ROOT}/var/lib/module-rebuild/;
    move_old_moduledb;
    if grep -qs ${CATEGORY}/${PN}-${PVR} ${MODULEDB_DIR}/moduledb; then
        einfo "Removing ${CATEGORY}/${PN}-${PVR} from moduledb.";
        sed -i -e "/.*${CATEGORY}\/${PN}-${PVR}.*/d" ${MODULEDB_DIR}/moduledb;
    fi
}
remove_path_entry () 
{ 
    [ "${IFS:-unset}" != "unset" ] && old_IFS="${IFS}";
    IFS=":";
    stripped_path="${PATH}";
    while [ -n "$1" ]; do
        cur_path="";
        for p in ${stripped_path};
        do
            if [ "${p/${1}}" == "${p}" ]; then
                cur_path="${cur_path}:${p}";
            fi;
        done;
        stripped_path="${cur_path#:*}";
        shift;
    done;
    if [ "${old_IFS:-unset}" != "unset" ]; then
        IFS="${old_IFS}";
        unset old_IFS;
    else
        unset IFS;
    fi;
    PATH="${stripped_path}"
}
replace_all_version_separators () 
{ 
    __versionator_shopt_toggle on;
    local c;
    c=($(get_all_version_components "${2:-${PV}}" ));
    c="${c[@]//[-._]/$1}";
    echo ${c// };
    __versionator_shopt_toggle off
}
replace_version_separator () 
{ 
    __versionator_shopt_toggle on;
    local w i c found=0 v="${3:-${PV}}";
    w=${1:-1};
    c=($(get_all_version_components ${v} ));
    if [[ "${w//[[:digit:]]/}" == "${w}" ]]; then
        for ((i = 0 ; i < ${#c[@]} ; i = $i + 1 ))
        do
            if [[ "${c[${i}]}" == "${w}" ]]; then
                c[${i}]="${2}";
                break;
            fi;
        done;
    else
        for ((i = 0 ; i < ${#c[@]} ; i = $i + 1 ))
        do
            if [[ -n "${c[${i}]//[^-._]}" ]]; then
                found=$(($found + 1));
                if [[ "$found" == "${w}" ]]; then
                    c[${i}]="${2}";
                    break;
                fi;
            fi;
        done;
    fi;
    c=${c[@]};
    echo ${c// };
    __versionator_shopt_toggle off
}
require_configured_kernel () 
{ 
    if ! linux_config_exists; then
        qeerror "Could not find a usable .config in the kernel source directory.";
        qeerror "Please ensure that ${KERNEL_DIR} points to a configured set of Linux sources.";
        qeerror "If you are using KBUILD_OUTPUT, please set the environment var so that";
        qeerror "it points to the necessary object directory so that it might find .config.";
        die "Kernel not configured; no .config found in ${KV_OUT_DIR}";
    fi
}
save_ebuild_env () 
{ 
    ( if hasq --exclude-init-phases $*; then
        unset S _E_DOCDESTTREE_ _E_EXEDESTTREE_;
        unset -f pkg_nofetch src_unpack src_prepare src_configure src_compile src_test src_install;
        if [[ -n $PYTHONPATH ]]; then
            export PYTHONPATH=${PYTHONPATH/${PORTAGE_PYM_PATH}:};
            [[ -z $PYTHONPATH ]] && unset PYTHONPATH;
        fi;
    fi;
    unset BASH HOSTTYPE IFS MACHTYPE OLDPWD OPTERR OPTIND OSTYPE PS4 PWD SHELL SHLVL;
    unset COLORTERM DISPLAY EDITOR LESS LESSOPEN LOGNAME LS_COLORS PAGER TERM TERMCAP USER;
    unset ECHANGELOG_USER GPG_AGENT_INFO SSH_AGENT_PID SSH_AUTH_SOCK STY WINDOW XAUTHORITY;
    unset ${!CCACHE_*} ${!DISTCC_*};
    for x in pkg_setup pkg_nofetch src_unpack src_prepare src_configure src_compile src_test src_install pkg_preinst pkg_postinst pkg_prerm pkg_postrm;
    do
        unset -f default_$x _eapi{0,1,2}_$x;
    done;
    unset x;
    unset -f dump_trace die diefunc quiet_mode vecho elog_base eqawarn elog esyslog einfo einfon ewarn eerror ebegin _eend eend KV_major KV_minor KV_micro KV_to_int get_KV unset_colors set_colors has hasg hasgq hasv hasq qa_source qa_call addread addwrite adddeny addpredict _sb_append_var lchown lchgrp esyslog use usev useq has_version portageq best_version use_with use_enable register_die_hook check_KV keepdir unpack strip_duplicate_slashes econf einstall dyn_setup dyn_unpack dyn_clean into insinto exeinto docinto insopts diropts exeopts libopts abort_handler abort_prepare abort_configure abort_compile abort_test abort_install dyn_prepare dyn_configure dyn_compile dyn_test dyn_install dyn_preinst dyn_help debug-print debug-print-function debug-print-section inherit EXPORT_FUNCTIONS newdepend newrdepend newpdepend do_newdepend remove_path_entry save_ebuild_env filter_readonly_variables preprocess_ebuild_env source_all_bashrcs ebuild_main ebuild_phase ebuild_phase_with_hooks _ebuild_arg_to_phase _ebuild_phase_funcs default _source_ebuild ${QA_INTERCEPTORS};
    unset ACCEPT_LICENSE BAD BRACKET BUILD_PREFIX COLS DISTCC_DIR DISTDIR DOC_SYMLINKS_DIR EBUILD_EXIT_STATUS_FILE EBUILD_FORCE_TEST EBUILD_MASTER_PID ECLASSDIR ECLASS_DEPTH ENDCOL FAKEROOTKEY GOOD HILITE HOME IMAGE LAST_E_CMD LAST_E_LEN LD_PRELOAD MISC_FUNCTIONS_ARGS MOPREFIX NOCOLOR NORMAL PKGDIR PKGUSE PKG_LOGDIR PKG_TMPDIR PORTAGE_ACTUAL_DISTDIR PORTAGE_ARCHLIST PORTAGE_BASHRC PORTAGE_BASHRCS_SOURCED PORTAGE_BINPKG_TAR_OPTS PORTAGE_BINPKG_TMPFILE PORTAGE_BUILDDIR PORTAGE_COLORMAP PORTAGE_CONFIGROOT PORTAGE_DEBUG PORTAGE_DEPCACHEDIR PORTAGE_GID PORTAGE_INST_GID PORTAGE_INST_UID PORTAGE_LOG_FILE PORTAGE_MASTER_PID PORTAGE_QUIET PORTAGE_REPO_NAME PORTAGE_RESTRICT PORTAGE_UPDATE_ENV PORTAGE_VERBOSE PORTAGE_WORKDIR_MODE PORTDIR PORTDIR_OVERLAY ${!PORTAGE_SANDBOX_*} PREROOTPATH PROFILE_PATHS PWORKDIR QA_INTERCEPTORS RC_DEFAULT_INDENT RC_DOT_PATTERN RC_ENDCOL RC_INDENTATION READONLY_EBUILD_METADATA READONLY_PORTAGE_VARS ROOT ROOTPATH RPMDIR STARTDIR TMP TMPDIR USE_EXPAND WARN XARGS _RC_GET_KV_CACHE;
    unset DOC_SYMLINKS_DIR INSTALL_MASK PKG_INSTALL_MASK;
    set;
    export )
}
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
}
set_arch_to_kernel () 
{ 
    export ARCH=$(tc-arch-kernel)
}
set_arch_to_portage () 
{ 
    export ARCH=$(tc-arch)
}
set_colors () 
{ 
    COLS=${COLUMNS:-0};
    (( COLS == 0 )) && COLS=$(set -- $(stty size 2>/dev/null) ; echo $2);
    (( COLS > 0 )) || (( COLS = 80 ));
    COLS=$((${COLS} - 8));
    [[ $TERM = cons25 || $TERM = dumb ]] && ((COLS--));
    ENDCOL='^[[A^[['${COLS}'C';
    if [ -n "${PORTAGE_COLORMAP}" ]; then
        eval ${PORTAGE_COLORMAP};
    else
        GOOD='^[[32;01m';
        WARN='^[[33;01m';
        BAD='^[[31;01m';
        HILITE='^[[36;01m';
        BRACKET='^[[34;01m';
    fi;
    NORMAL='^[[0m'
}
set_kvobj () 
{ 
    debug-print-function ${FUNCNAME} $*;
    if kernel_is 2 6; then
        KV_OBJ="ko";
    else
        KV_OBJ="o";
    fi
}
source_all_bashrcs () 
{ 
    [[ $PORTAGE_BASHRCS_SOURCED = 1 ]] && return 0;
    PORTAGE_BASHRCS_SOURCED=1;
    local x;
    local OCC="${CC}" OCXX="${CXX}";
    if [[ $EBUILD_PHASE != depend ]]; then
        [ "${IFS:-unset}" != "unset" ] && old_IFS="${IFS}";
        IFS='
';
        local path_array=($PROFILE_PATHS);
        if [ "${old_IFS:-unset}" != "unset" ]; then
            IFS="${old_IFS}";
            unset old_IFS;
        else
            unset IFS;
        fi;
        for x in "${path_array[@]}";
        do
            [ -f "$x/profile.bashrc" ] && qa_source "$x/profile.bashrc";
        done;
    fi;
    if [ -f "${PORTAGE_BASHRC}" ]; then
        if [ "$PORTAGE_DEBUG" != "1" ] || [ "${-/x/}" != "$-" ]; then
            source "${PORTAGE_BASHRC}";
        else
            set -x;
            source "${PORTAGE_BASHRC}";
            set +x;
        fi;
    fi;
    [ ! -z "${OCC}" ] && export CC="${OCC}";
    [ ! -z "${OCXX}" ] && export CXX="${OCXX}"
}
src_compile () 
{ 
    linux-mod_src_compile;
    einfo "Building fgl_glxgears";
    cd "${S}"/extra/fgl_glxgears;
    "$(tc-getCC)" -o fgl_glxgears ${CFLAGS} ${LDFLAGS} -DUSE_GLU -I"${S}"/common/usr/include fgl_glxgears.c -lGL -lGLU -lX11 -lm || die "fgl_glxgears build failed";
    einfo "Building fglrx_gamma lib";
    cd "${S}"/extra/lib/fglrx_gamma;
    "$(tc-getCC)" -shared -fpic -o libfglrx_gamma.so.1.0 ${CFLAGS} ${LDFLAGS} -DXF86MISC -Wl,-soname,libfglrx_gamma.so.1.0 fglrx_gamma.c -lXext || die "fglrx_gamma lib build failed";
    ln -s libfglrx_gamma.so.1.0 libfglrx_gamma.so || die "ln failed";
    ln -s libfglrx_gamma.so.1.0 libfglrx_gamma.so.1 || die "ln failed";
    einfo "Building fglrx_gamma util";
    cd "${S}"/extra/programs/fglrx_gamma;
    "$(tc-getCC)" -o fglrx_xgamma ${CFLAGS} ${LDFLAGS} -I../../../common/usr/X11R6/include -L../../lib/fglrx_gamma fglrx_xgamma.c -lm -lfglrx_gamma -lX11 || die "fglrx_gamma util build failed"
}
src_install () 
{ 
    linux-mod_src_install;
    echo "COLON_SEPARATED=LIBGL_DRIVERS_PATH" > "${T}/03ati-colon-sep";
    doenvd "${T}/03ati-colon-sep";
    if has_multilib_profile; then
        local OABI=${ABI};
        for ABI in $(get_install_abis);
        do
            src_install-libs;
        done;
        ABI=${OABI};
        unset OABI;
    else
        src_install-libs;
    fi;
    exeinto /usr/$(get_libdir)/xorg/modules/drivers;
    doexe "${MY_BASE_DIR}"/usr/X11R6/${PKG_LIBDIR}/modules/drivers/fglrx_drv.so;
    exeinto /usr/$(get_libdir)/xorg/modules/linux;
    doexe "${MY_BASE_DIR}"/usr/X11R6/${PKG_LIBDIR}/modules/linux/libfglrxdrm.so;
    exeinto /usr/$(get_libdir)/xorg/modules;
    doexe "${MY_BASE_DIR}"/usr/X11R6/${PKG_LIBDIR}/modules/{esut.a,glesx.so,amdxmm.so};
    into /opt;
    if use acpi; then
        dosbin "${ARCH_DIR}"/usr/sbin/atieventsd;
    fi;
    dobin "${ARCH_DIR}"/usr/X11R6/bin/*;
    exeinto /usr/$(get_libdir);
    doexe $(find "${ARCH_DIR}"/usr/X11R6/${PKG_LIBDIR} 		-maxdepth 1 -type f -name '*.so*' -not -name 'libGL.so*');
    insinto /usr/$(get_libdir);
    doins $(find "${ARCH_DIR}"/usr/X11R6/${PKG_LIBDIR} 		-maxdepth 1 -type f -not -name '*.so*');
    insinto /etc/ati;
    doins common/etc/ati/{logo*,control,atiogl.xml,signature,amdpcsdb.default};
    if use acpi; then
        doins common/etc/ati/authatieventsd.sh;
    fi;
    insinto /usr;
    doins -r common/usr/include;
    insinto /usr/include/X11/extensions;
    doins common/usr/X11R6/include/X11/extensions/fglrx_gamma.h;
    into /usr;
    dosbin common/usr/sbin/*;
    insinto /usr/share;
    doins -r common/usr/share/ati;
    insinto /usr/share/pixmaps;
    doins common/usr/share/icons/ccc_{large,small}.xpm;
    make_desktop_entry amdcccle 'ATI Catalyst Control Center' ccc_large System;
    dohtml -r common/usr/share/doc/fglrx;
    if use acpi; then
        doman common/usr/share/man/man8/atieventsd.8;
        pushd common/usr/share/doc/fglrx/examples/etc/acpi > /dev/null;
        exeinto /etc/acpi;
        doexe ati-powermode.sh;
        insinto /etc/acpi/events;
        doins events/*;
        popd > /dev/null;
    fi;
    dobin extra/fgl_glxgears/fgl_glxgears;
    newdoc extra/fgl_glxgears/README README.fgl_glxgears;
    dolib extra/lib/fglrx_gamma/*so*;
    newdoc extra/lib/fglrx_gamma/README README.libfglrx_gamma;
    dobin extra/programs/fglrx_gamma/fglrx_xgamma;
    doman extra/programs/fglrx_gamma/fglrx_xgamma.1;
    newdoc extra/programs/fglrx_gamma/README README.fglrx_gamma;
    if use acpi; then
        newinitd "${FILESDIR}"/atieventsd.init atieventsd || die "Failed to install atieventsd.init.d";
        echo 'ATIEVENTSDOPTS=""' > "${T}"/atieventsd.conf;
        newconfd "${T}"/atieventsd.conf atieventsd;
    fi
}
src_install-libs () 
{ 
    if [[ "${ABI}" == "amd64" ]]; then
        local EX_BASE_DIR="${BASE_DIR}_64a";
        local pkglibdir=lib64;
        local MY_ARCH_DIR="${S}/arch/x86_64";
    else
        local EX_BASE_DIR="${BASE_DIR}";
        local pkglibdir=lib;
        local MY_ARCH_DIR="${S}/arch/x86";
    fi;
    einfo "ati tree '${pkglibdir}' -> '$(get_libdir)' on system";
    local ATI_ROOT=/usr/$(get_libdir)/opengl/ati;
    local libmajor=1 libminor=2;
    local libver=${libmajor}.${libminor};
    exeinto ${ATI_ROOT}/lib;
    doexe "${MY_ARCH_DIR}"/usr/X11R6/${pkglibdir}/libGL.so.${libver};
    dosym libGL.so.${libver} ${ATI_ROOT}/lib/libGL.so.${libmajor};
    dosym libGL.so.${libver} ${ATI_ROOT}/lib/libGL.so;
    exeinto ${ATI_ROOT}/extensions;
    doexe "${EX_BASE_DIR}"/usr/X11R6/${pkglibdir}/modules/extensions/*;
    exeinto /usr/$(get_libdir)/dri;
    doexe "${MY_ARCH_DIR}"/usr/X11R6/${pkglibdir}/modules/dri/fglrx_dri.so;
    local revision=$(printf '%d%02d%02d' $(get_version_components));
    sed -e "s:\${libmajor}:${libmajor}:g" -e "s:\${libminor}:${libminor}:g" -e "s:\${libdir}:$(get_libdir):g" -e "s:\${revision}:${revision}:g" "${FILESDIR}"/libGL.la.in > "${D}"/${ATI_ROOT}/lib/libGL.la || die "sed failed to make libGL.la";
    local envname="${T}"/04ati-dri-path;
    if [[ -n ${ABI} ]]; then
        envname="${envname}-${ABI}";
    fi;
    echo "LIBGL_DRIVERS_PATH=/usr/$(get_libdir)/dri" > "${envname}";
    doenvd "${envname}"
}
src_test () 
{ 
    _eapi0_src_test "$@"
}
src_unpack () 
{ 
    local src="${DISTDIR}/${A}";
    sh "${src}" --extract "${S}" 2 /dev/null >&1;
    rm "${ARCH_DIR}"/usr/X11R6/bin/{fgl_glxgears,fglrx_xgamma} "${ARCH_DIR}"/usr/X11R6/${PKG_LIBDIR}/libfglrx_gamma* || die "bin rm failed";
    if use debug; then
        sed -i '/^#define DRM_DEBUG_CODE/s/0/1/' "${MODULE_DIR}/firegl_public.c" || die "Failed to enable debug output.";
    fi;
    if use acpi; then
        sed -i -e "s:/var/lib/xdm/authdir/authfiles/:/var/run/xauth/:" -e "s:/var/lib/gdm/:/var/gdm/:" "${S}/common/etc/ati/authatieventsd.sh" || die "sed failed.";
        sed -i -e 's:finger:who:' "${S}/common/usr/share/doc/fglrx/examples/etc/acpi/ati-powermode.sh" || die "Replacing 'finger' with 'who' failed.";
        epatch "${FILESDIR}"/${PV}/ati-powermode-opt-path-2.patch;
    fi;
    pushd ${MODULE_DIR} > /dev/null;
    ln -s "${ARCH_DIR}"/lib/modules/fglrx/build_mod/libfglrx_ip.a.GCC$(gcc-major-version) || die "symlinking precompiled core failed";
    convert_to_m 2.6.x/Makefile || die "convert_to_m failed";
    sed -i -e 's/__SMP__/CONFIG_SMP/' *.c *h || die "SMP sed failed";
    sed -i -e 's/ifdef MODVERSIONS/ifdef CONFIG_MODVERSIONS/' *.c *.h || die "MODVERSIONS sed failed";
    popd > /dev/null;
    mkdir extra || die "mkdir failed";
    cd extra;
    unpack ./../common/usr/src/ati/fglrx_sample_source.tgz;
    sed -i -e 's:include/extensions/extutil.h:X11/extensions/extutil.h:' lib/fglrx_gamma/fglrx_gamma.c || die "include fixup failed";
    mv programs/fglrx_gamma/fglrx_xgamma.{man,1} || die "man mv failed";
    cd ..
}
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_duplicate_slashes () 
{ 
    if [[ -n $1 ]]; then
        local removed=$1;
        while [[ ${removed} == *//* ]]; do
            removed=${removed//\/\///};
        done;
        echo ${removed};
    fi
}
strip_modulenames () 
{ 
    debug-print-function ${FUNCNAME} $*;
    local i;
    for i in ${MODULE_IGNORE};
    do
        MODULE_NAMES=${MODULE_NAMES//${i}(*};
    done
}
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
        [[ $(type -t tc-get${var}) != "function" ]] && die "tc-export: invalid export variable '${var}'";
        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-getFC () 
{ 
    tc-getPROG FC gfortran "$@"
}
tc-getGCJ () 
{ 
    tc-getPROG GCJ gcj "$@"
}
tc-getLD () 
{ 
    tc-getPROG LD ld "$@"
}
tc-getNM () 
{ 
    tc-getPROG NM nm "$@"
}
tc-getOBJCOPY () 
{ 
    tc-getPROG OBJCOPY objcopy "$@"
}
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-is-static-only () 
{ 
    local host=${CTARGET:-${CHOST}};
    return $([[ ${host} == *-mint* ]])
}
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) || ${host} == *freebsd* ]]; 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
}
treecopy () 
{ 
    dest=${!#};
    files_count=$#;
    while (( $# > 1 )); do
        dirstruct=$(dirname "$1");
        mkdir -p "${dest}/${dirstruct}";
        cp -pPR "$1" "${dest}/${dirstruct}";
        shift;
    done
}
unpack () 
{ 
    local srcdir;
    local x;
    local y;
    local myfail;
    local eapi=${EAPI:-0};
    [ -z "$*" ] && die "Nothing passed to the 'unpack' command";
    for x in "$@";
    do
        vecho ">>> Unpacking ${x} to ${PWD}";
        y=${x%.*};
        y=${y##*.};
        if [[ ${x} == "./"* ]]; then
            srcdir="";
        else
            if [[ ${x} == ${DISTDIR%/}/* ]]; then
                die "Arguments to unpack() cannot begin with \${DISTDIR}.";
            else
                if [[ ${x} == "/"* ]]; then
                    die "Arguments to unpack() cannot be absolute";
                else
                    srcdir="${DISTDIR}/";
                fi;
            fi;
        fi;
        [[ ! -s ${srcdir}${x} ]] && die "${x} does not exist";
        function _unpack_tar () 
        { 
            if [ "${y}" == "tar" ]; then
                $1 -dc "$srcdir$x" | tar xof -;
                _pipestatus="${PIPESTATUS[*]}";
                [[ "${_pipestatus// /}" -eq 0 ]] || die "$myfail";
            else
                $1 -dc "${srcdir}${x}" > ${x%.*} || die "$myfail";
            fi
        };
        myfail="failure unpacking ${x}";
        case "${x##*.}" in 
            tar)
                tar xof "$srcdir$x" || die "$myfail"
            ;;
            tgz)
                tar xozf "$srcdir$x" || die "$myfail"
            ;;
            tbz | tbz2)
                bzip2 -dc "$srcdir$x" | tar xof -;
                _pipestatus="${PIPESTATUS[*]}";
                [[ "${_pipestatus// /}" -eq 0 ]] || die "$myfail"
            ;;
            ZIP | zip | jar)
                unzip -qo "${srcdir}${x}" || die "$myfail"
            ;;
            gz | Z | z)
                _unpack_tar gzip
            ;;
            bz2 | bz)
                _unpack_tar bzip2
            ;;
            7Z | 7z)
                local my_output;
                my_output="$(7z x -y "${srcdir}${x}")";
                if [ $? -ne 0 ]; then
                    echo "${my_output}" 1>&2;
                    die "$myfail";
                fi
            ;;
            RAR | rar)
                unrar x -idq -o+ "${srcdir}${x}" || die "$myfail"
            ;;
            LHa | LHA | lha | lzh)
                lha xfq "${srcdir}${x}" || die "$myfail"
            ;;
            a)
                ar x "${srcdir}${x}" || die "$myfail"
            ;;
            deb)
                if type -P deb2targz > /dev/null; then
                    y=${x##*/};
                    local created_symlink=0;
                    if [ ! "$srcdir$x" -ef "$y" ]; then
                        ln -sf "$srcdir$x" "$y" || die "$myfail";
                        created_symlink=1;
                    fi;
                    deb2targz "$y" || die "$myfail";
                    if [ $created_symlink = 1 ]; then
                        rm -f "$y";
                    fi;
                    mv -f "${y%.deb}".tar.gz data.tar.gz || die "$myfail";
                else
                    ar x "$srcdir$x" || die "$myfail";
                fi
            ;;
            lzma)
                _unpack_tar lzma
            ;;
            xz)
                if hasq $eapi 0 1 2; then
                    vecho "unpack ${x}: file format not recognized. Ignoring.";
                else
                    _unpack_tar xz;
                fi
            ;;
            *)
                vecho "unpack ${x}: file format not recognized. Ignoring."
            ;;
        esac;
    done;
    find . -mindepth 1 -maxdepth 1 ! -type l -print0 | ${XARGS} -0 chmod -fR a+rX,u+w,g-w,o-w
}
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
}
unset_colors () 
{ 
    COLS="25 80";
    ENDCOL=;
    GOOD=;
    WARN=;
    BAD=;
    NORMAL=;
    HILITE=;
    BRACKET=
}
update_depmod () 
{ 
    debug-print-function ${FUNCNAME} $*;
    get_version;
    ebegin "Updating module dependencies for ${KV_FULL}";
    if [ -r ${KV_OUT_DIR}/System.map ]; then
        depmod -ae -F ${KV_OUT_DIR}/System.map -b ${ROOT} -r ${KV_FULL};
        eend $?;
    else
        ewarn;
        ewarn "${KV_OUT_DIR}/System.map not found.";
        ewarn "You must manually update the kernel module dependencies using depmod.";
        eend 1;
        ewarn;
    fi
}
update_moduledb () 
{ 
    debug-print-function ${FUNCNAME} $*;
    local MODULEDB_DIR=${ROOT}/var/lib/module-rebuild/;
    move_old_moduledb;
    if [[ ! -f ${MODULEDB_DIR}/moduledb ]]; then
        [[ ! -d ${MODULEDB_DIR} ]] && mkdir -p ${MODULEDB_DIR};
        touch ${MODULEDB_DIR}/moduledb;
    fi;
    if ! grep -qs ${CATEGORY}/${PN}-${PVR} ${MODULEDB_DIR}/moduledb; then
        einfo "Adding module to moduledb.";
        echo "a:1:${CATEGORY}/${PN}-${PVR}" >> ${MODULEDB_DIR}/moduledb;
    fi
}
update_modules () 
{ 
    debug-print-function ${FUNCNAME} $*;
    if [ -x /sbin/update-modules ] && grep -v -e "^#" -e "^$" ${D}/etc/modules.d/* > /dev/null 2>&1; then
        ebegin "Updating modules.conf";
        /sbin/update-modules;
        eend $?;
    else
        if [ -x /sbin/update-modules ] && grep -v -e "^#" -e "^$" ${D}/etc/modules.d/* > /dev/null 2>&1; then
            ebegin "Updating modules.conf";
            /sbin/update-modules;
            eend $?;
        fi;
    fi
}
use () 
{ 
    useq ${1}
}
use_enable () 
{ 
    if [ -z "$1" ]; then
        echo "!!! use_enable() called without a parameter." 1>&2;
        echo "!!! use_enable <USEFLAG> [<flagname> [value]]" 1>&2;
        return 1;
    fi;
    local UE_SUFFIX="";
    if [ ! -z "${3}" ]; then
        UE_SUFFIX="=${3}";
    fi;
    local UWORD="$2";
    if [ -z "${UWORD}" ]; then
        UWORD="$1";
    fi;
    if useq $1; then
        echo "--enable-${UWORD}${UE_SUFFIX}";
    else
        echo "--disable-${UWORD}";
    fi;
    return 0
}
use_m () 
{ 
    debug-print-function ${FUNCNAME} $*;
    get_version;
    [ ${KV_MAJOR} -eq 2 -a ${KV_MINOR} -gt 5 -a ${KV_PATCH} -gt 5 ] && return 0 || return 1
}
use_with () 
{ 
    if [ -z "$1" ]; then
        echo "!!! use_with() called without a parameter." 1>&2;
        echo "!!! use_with <USEFLAG> [<flagname> [value]]" 1>&2;
        return 1;
    fi;
    local UW_SUFFIX="";
    if [ ! -z "${3}" ]; then
        UW_SUFFIX="=${3}";
    fi;
    local UWORD="$2";
    if [ -z "${UWORD}" ]; then
        UWORD="$1";
    fi;
    if useq $1; then
        echo "--with-${UWORD}${UW_SUFFIX}";
    else
        echo "--without-${UWORD}";
    fi;
    return 0
}
useq () 
{ 
    local u=$1;
    local found=0;
    if [[ ${u:0:1} == "!" ]]; then
        u=${u:1};
        found=1;
    fi;
    if [[ $EBUILD_PHASE = depend ]]; then
        if [[ -n $EAPI ]] && ! hasq "$EAPI" 0 1 2; then
            die "use() called during invalid phase: $EBUILD_PHASE";
        fi;
    else
        if [[ -n $PORTAGE_IUSE && -n $EBUILD_PHASE ]]; then
            [[ $u =~ $PORTAGE_IUSE ]] || eqawarn "QA Notice: USE Flag '${u}' not" "in IUSE for ${CATEGORY}/${PF}";
        fi;
    fi;
    if hasq ${u} ${USE}; then
        return ${found};
    else
        return $((!found));
    fi
}
usev () 
{ 
    if useq ${1}; then
        echo "${1}";
        return 0;
    fi;
    return 1
}
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
}
vecho () 
{ 
    quiet_mode || echo "$@"
}
version_compare () 
{ 
    __versionator_shopt_toggle on;
    local ver_a=${1} ver_b=${2} parts_a parts_b cur_idx_a=0 cur_idx_b=0;
    parts_a=($(get_all_version_components "${ver_a}" ));
    parts_b=($(get_all_version_components "${ver_b}" ));
    local inf_loop=0;
    while true; do
        inf_loop=$(( ${inf_loop} + 1 ));
        [[ ${inf_loop} -gt 20 ]] && die "versionator compare bug [numbers, ${ver_a}, ${ver_b}]";
        local cur_tok_a=${parts_a[${cur_idx_a}]};
        local cur_tok_b=${parts_b[${cur_idx_b}]};
        if [[ -n ${cur_tok_a} ]] && [[ -z ${cur_tok_a//[[:digit:]]} ]]; then
            cur_idx_a=$(( ${cur_idx_a} + 1 ));
            [[ ${parts_a[${cur_idx_a}]} == "." ]] && cur_idx_a=$(( ${cur_idx_a} + 1 ));
        else
            cur_tok_a="";
        fi;
        if [[ -n ${cur_tok_b} ]] && [[ -z ${cur_tok_b//[[:digit:]]} ]]; then
            cur_idx_b=$(( ${cur_idx_b} + 1 ));
            [[ ${parts_b[${cur_idx_b}]} == "." ]] && cur_idx_b=$(( ${cur_idx_b} + 1 ));
        else
            cur_tok_b="";
        fi;
        [[ -z ${cur_tok_a} ]] && [[ -z ${cur_tok_b} ]] && break;
        cur_tok_a=${cur_tok_a##+(0)};
        cur_tok_b=${cur_tok_b##+(0)};
        [[ -z ${cur_tok_a} ]] && cur_tok_a=0;
        [[ -z ${cur_tok_b} ]] && cur_tok_b=0;
        [[ ${cur_tok_a} -lt ${cur_tok_b} ]] && __versionator_shopt_toggle off && return 1;
        [[ ${cur_tok_a} -gt ${cur_tok_b} ]] && __versionator_shopt_toggle off && return 3;
    done;
    local letter_a=;
    letter_a=${parts_a[${cur_idx_a}]};
    if [[ ${#letter_a} -eq 1 ]] && [[ -z ${letter_a/[a-z]} ]]; then
        cur_idx_a=$(( ${cur_idx_a} + 1 ));
    else
        letter_a="@";
    fi;
    local letter_b=;
    letter_b=${parts_b[${cur_idx_b}]};
    if [[ ${#letter_b} -eq 1 ]] && [[ -z ${letter_b/[a-z]} ]]; then
        cur_idx_b=$(( ${cur_idx_b} + 1 ));
    else
        letter_b="@";
    fi;
    [[ ${letter_a} < ${letter_b} ]] && __versionator_shopt_toggle off && return 1;
    [[ ${letter_a} > ${letter_b} ]] && __versionator_shopt_toggle off && return 3;
    local suffix rule part r_lt r_gt;
    for rule in "alpha=1" "beta=1" "pre=1" "rc=1" "p=3" "r=3";
    do
        suffix=${rule%%=*};
        r_lt=${rule##*=};
        [[ ${r_lt} -eq 1 ]] && r_gt=3 || r_gt=1;
        local suffix_a=;
        for part in ${parts_a[@]};
        do
            [[ ${part#${suffix}} != ${part} ]] && [[ -z ${part##${suffix}*([[:digit:]])} ]] && suffix_a=${part#${suffix}}0;
        done;
        local suffix_b=;
        for part in ${parts_b[@]};
        do
            [[ ${part#${suffix}} != ${part} ]] && [[ -z ${part##${suffix}*([[:digit:]])} ]] && suffix_b=${part#${suffix}}0;
        done;
        [[ -z ${suffix_a} ]] && [[ -z ${suffix_b} ]] && continue;
        [[ -z ${suffix_a} ]] && __versionator_shopt_toggle off && return ${r_gt};
        [[ -z ${suffix_b} ]] && __versionator_shopt_toggle off && return ${r_lt};
        suffix_a=${suffix_a##+(0)};
        suffix_a=${suffix_a:-0};
        suffix_b=${suffix_b##+(0)};
        suffix_b=${suffix_b:-0};
        [[ ${suffix_a} -lt ${suffix_b} ]] && __versionator_shopt_toggle off && return 1;
        [[ ${suffix_a} -gt ${suffix_b} ]] && __versionator_shopt_toggle off && return 3;
    done;
    __versionator_shopt_toggle off;
    return 2
}
version_is_at_least () 
{ 
    __versionator_shopt_toggle on;
    local want_s="$1" have_s="${2:-${PVR}}" r;
    version_compare "${want_s}" "${have_s}";
    r=$?;
    case $r in 
        1 | 2)
            __versionator_shopt_toggle off;
            return 0
        ;;
        3)
            __versionator_shopt_toggle off;
            return 1
        ;;
        *)
            __versionator_shopt_toggle off;
            die "versionator compare bug [atleast, ${want_s}, ${have_s}, ${r}]"
        ;;
    esac;
    __versionator_shopt_toggle off
}
version_sort () 
{ 
    __versionator_shopt_toggle on;
    local items= left=0;
    items=($@);
    while [[ ${left} -lt ${#items[@]} ]]; do
        local lowest_idx=${left};
        local idx=$(( ${lowest_idx} + 1 ));
        while [[ ${idx} -lt ${#items[@]} ]]; do
            version_compare "${items[${lowest_idx}]}" "${items[${idx}]}";
            [[ $? -eq 3 ]] && lowest_idx=${idx};
            idx=$(( ${idx} + 1 ));
        done;
        local tmp=${items[${lowest_idx}]};
        items[${lowest_idx}]=${items[${left}]};
        items[${left}]=${tmp};
        left=$(( ${left} + 1 ));
    done;
    echo ${items[@]};
    __versionator_shopt_toggle off
}
declare -x ABI="amd64"
declare -x ALSA_CARDS=""
declare -x ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol"
declare -x ANT_HOME="/usr/share/ant"
declare -x APACHE2_MODULES="actions alias auth_basic auth_digest authn_anon authn_dbd 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 dbd deflate dir disk_cache env expires ext_filter file_cache filter headers ident imagemap include info log_config logio mem_cache mime mime_magic negotiation proxy proxy_ajp proxy_balancer proxy_connect proxy_http rewrite setenvif so speling status unique_id userdir usertrack vhost_alias"
declare -x ARCH="amd64"
declare -x ASFLAGS_x86="--32"
declare -x BUILD_PREFIX="/var/tmp/portage"
declare -x CATEGORY="x11-drivers"
declare -x CBUILD="x86_64-pc-linux-gnu"
declare -x CCACHE_DIR="/var/tmp/ccache"
declare -x CDEFINE_amd64="__x86_64__"
declare -x CDEFINE_default="__unix__"
declare -x CDEFINE_x86="__i386__"
declare -x CFLAGS="-Os -march=opteron -mtune=opteron -fomit-frame-pointer -ggdb"
declare -x CFLAGS_default
declare -x CFLAGS_x86="-m32"
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 CROSSCOMPILE_OPTS=""
declare -x CTARGET_default="x86_64-pc-linux-gnu"
declare -x CVS_RSH="ssh"
declare -x CXXFLAGS="-Os -march=opteron -mtune=opteron -fomit-frame-pointer -ggdb"
declare -rx D="/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/image/"
declare -x DCCC_PATH="/usr/lib64/distcc/bin"
declare -x DEFAULT_ABI="amd64"
declare -x DESTTREE="/usr"
declare -x DIROPTIONS="-m0755"
declare -x DISPLAY=":0.0"
declare -x DISTCC_LOG=""
declare -x DISTCC_VERBOSE="0"
declare -x DISTDIR="/usr/portage/distfiles"
declare -rx EAPI="0"
declare -rx EBUILD="/usr/portage/x11-drivers/ati-drivers/ati-drivers-8.552-r2.ebuild"
declare -x EBUILD_EXIT_STATUS_FILE="/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/.exit_status"
declare -x EBUILD_MASTER_PID="14247"
declare -rx EBUILD_PHASE="setup"
declare -x ECLASSDIR="/usr/portage/eclass"
declare -ix ECLASS_DEPTH="0"
declare -x EDITOR="/bin/nano"
declare -x ELIBC="glibc"
declare -rx EMERGE_FROM="ebuild"
declare -x EXEOPTIONS="-m0755"
declare -x FEATURES="ccache distlocks fixpackages parallel-fetch protect-owned sandbox sfperms strict unmerge-orphans userfetch"
declare -rx FILESDIR="/usr/portage/x11-drivers/ati-drivers/files"
declare -x GCC_SPECS=""
declare -x GDK_USE_XFT="1"
declare -x GUILE_LOAD_PATH="/usr/share/guile/1.8"
declare -x G_FILENAME_ENCODING="@locale"
declare -x HOME="/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/homedir"
declare -rx INHERITED="toolchain-funcs portability versionator multilib linux-info linux-mod eutils"
declare -x INPUT_DEVICES="keyboard mouse"
declare -x INSDESTTREE=""
declare -x INSOPTIONS="-m0644"
declare -x JAVAC="/etc/java-config-2/current-system-vm/bin/javac"
declare -x JAVACC_HOME="/usr/share/javacc/"
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"
declare -x KERNEL="linux"
declare -x KERNEL_ABI="amd64"
declare -rx KEYWORDS="amd64 x86"
declare -x KV="2.6.22-gentoo-r2-osmp"
declare -x LANG="en_US.utf-8"
declare -x LCD_DEVICES=""
declare -x LC_ALL="C"
declare -x LDFLAGS="-Wl,-O1"
declare -x LDFLAGS_default
declare -x LDFLAGS_x86="-m elf_i386"
declare -x LESS="-R -M --shift 5"
declare -x LESSOPEN="|lesspipe.sh %s"
declare -x LIBDIR_amd64="lib64"
declare -x LIBDIR_amd64_fbsd="lib64"
declare -x LIBDIR_default="lib"
declare -x LIBDIR_ppc="lib32"
declare -x LIBDIR_ppc64="lib64"
declare -x LIBDIR_sparc32="lib32"
declare -x LIBDIR_sparc64="lib64"
declare -x LIBDIR_x86="lib32"
declare -x LIBDIR_x86_fbsd="lib32"
declare -x LIBGL_DRIVERS_PATH="/usr/lib64/dri:/usr/lib32/dri"
declare -x LIBOPTIONS="-m0644"
declare -rx LICENSE="AMD GPL-2 QPL-1.0 as-is"
declare -x LOGNAME="root"
declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:hl=44;37:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.pdf=00;32:*.ps=00;32:*.txt=00;32:*.patch=00;32:*.diff=00;32:*.log=00;32:*.tex=00;32:*.doc=00;32:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:"
declare -x MAKEOPTS="-j5"
declare -x MOPREFIX="ati-drivers"
declare -x MULTILIB_ABIS="amd64 x86"
declare -x MULTILIB_STRICT_DENY="64-bit.*shared object"
declare -x MULTILIB_STRICT_DIRS="/lib32 /lib /usr/lib32 /usr/lib /usr/kde/*/lib32 /usr/kde/*/lib /usr/qt/*/lib32 /usr/qt/*/lib /usr/X11R6/lib32 /usr/X11R6/lib"
declare -x MULTILIB_STRICT_EXEMPT="(perl5|gcc|gcc-lib|binutils|eclipse-3|debug|portage)"
declare -x NETBEANS="apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml"
declare -x OLDPWD="/usr/src/linux-2.6.22-gentoo-r2"
declare -x OPENGL_PROFILE="xorg-x11"
declare -x P="ati-drivers-8.552"
declare -x PAGER="/usr/bin/less"
declare -x PATH="/usr/lib/ccache/bin:/usr/lib64/portage/bin/ebuild-helpers:/usr/local/sbin:/sbin:/usr/sbin:/usr/local/bin:/bin:/usr/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.3.2:/usr/kde/3.5/sbin:/usr/kde/3.5/bin:/usr/qt/3/bin"
declare -x PF="ati-drivers-8.552-r2"
declare -x PKGDIR="/usr/portage/packages"
declare -x PKGUSE=""
declare -x PKG_CONFIG_PATH="/usr/qt/3/lib64/pkgconfig"
declare -x PKG_LOGDIR="/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/temp/logging"
declare -x PKG_TMPDIR="/var/tmp/binpkgs"
declare -x PN="ati-drivers"
declare -x PORTAGE_ARCHLIST="ppc x86-openbsd ppc-openbsd ppc64 x86-winnt x86-fbsd ppc-aix alpha arm x86-freebsd s390 amd64 x86-macos x64-openbsd ia64-hpux hppa x86-netbsd amd64-linux ia64-linux x86 sparc-solaris x64-freebsd sparc64-solaris x86-linux x64-macos sparc m68k-mint ia64 mips ppc-macos x86-interix x64-solaris amd64-fbsd mips-irix m68k sh x86-solaris sparc-fbsd"
declare -x PORTAGE_BASHRC="/etc/portage/bashrc"
declare -rx PORTAGE_BIN_PATH="/usr/lib64/portage/bin"
declare -x PORTAGE_BUILDDIR="/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2"
declare -x PORTAGE_COLORMAP="GOOD=\$'^[[32;01m'
WARN=\$'^[[33;01m'
BAD=\$'^[[31;01m'
HILITE=\$'^[[36m'
BRACKET=\$'^[[34;01m'"
declare -x PORTAGE_COMPRESS_EXCLUDE_SUFFIXES="css gif htm[l]? jp[e]?g js pdf png"
declare -x PORTAGE_CONFIGROOT="/"
declare -x PORTAGE_DEBUG="0"
declare -x PORTAGE_DEPCACHEDIR="/var/cache/edb/dep"
declare -x PORTAGE_GID="250"
declare -x PORTAGE_INST_GID="0"
declare -x PORTAGE_INST_UID="0"
declare -rx PORTAGE_IUSE="^(3dfx|acpi|adabas|alpha|alsa\\_cards\\_aoa|alsa\\_cards\\_aoa\\-fabric\\-layout|alsa\\_cards\\_aoa\\-onyx|alsa\\_cards\\_aoa\\-soundbus|alsa\\_cards\\_aoa\\-soundbus\\-i2s|alsa\\_cards\\_aoa\\-tas|alsa\\_cards\\_aoa\\-toonie|alsa\\_cards\\_armaaci|alsa\\_cards\\_at91\\-soc|alsa\\_cards\\_at91\\-soc\\-eti\\-b1\\-wm8731|alsa\\_cards\\_au1x00|alsa\\_cards\\_cs5535audio|alsa\\_cards\\_harmony|alsa\\_cards\\_powermac|alsa\\_cards\\_pxa2xx\\-i2sound|alsa\\_cards\\_pxa2xx\\-soc|alsa\\_cards\\_pxa2xx\\-soc\\-corgi|alsa\\_cards\\_pxa2xx\\-soc\\-poodle|alsa\\_cards\\_pxa2xx\\-soc\\-spitz|alsa\\_cards\\_pxa2xx\\-soc\\-tosa|alsa\\_cards\\_sa11xx\\-uda1341ts|alsa\\_cards\\_sun\\-amd7930|alsa\\_cards\\_sun\\-cs4231|alsa\\_cards\\_sun\\-dbri|altivec|amd64|amd64\\-fbsd|amd64\\-linux|aqua|arm|asm|birdstep|bmp|bmpx|bootstrap|build|capslib|clvm|cman|cmucl|coreaudio|crosscompile\\_opts\\_.*|dbmaker|debug|doomsday|drac|elibc\\_AIX|elibc\\_Darwin|elibc\\_DragonFly|elibc\\_FreeBSD|elibc\\_HPUX|elibc\\_IRIX|elibc\\_Interix|elibc\\_NetBSD|elibc\\_OpenBSD|elibc\\_SunOS|elibc\\_.*|elibc\\_glibc|elibc\\_mintlib|elibc\\_uclibc|emf|empress|empress\\-bcs|esoob|fdftk|filepro|firebird|fixed\\-point|frontbase|gamess|gcc64|gulm|hppa|ia64|ia64\\-hpux|ia64\\-linux|ibm|infopipe|informix|ingres|kdeprefix|kernel\\_AIX|kernel\\_Darwin|kernel\\_FreeBSD|kernel\\_HPUX|kernel\\_IRIX|kernel\\_Interix|kernel\\_NetBSD|kernel\\_OpenBSD|kernel\\_SunOS|kernel\\_.*|kernel\\_freemint|kernel\\_linux|lcd\\_devices\\_svga|m68k|m68k\\-mint|macbook|mips|mips\\-irix|multilib|n32|n64|osp|pam\\_console|pbbuttonsd|pfpro|plugin|ppc|ppc64|ppc\\-aix|ppc\\-macos|ppc\\-openbsd|ppcsha1|prefix|psyco|pvm|real|realcodecs|s390|selinux|sh|solid|sparc|sparc64\\-solaris|sparc\\-fbsd|sparc\\-solaris|svga|sybase|sybase\\-ct|tcc|uclibc|ultra1|userland\\_BSD|userland\\_GNU|userland\\_.*|video\\_cards\\_geode|video\\_cards\\_i740|video\\_cards\\_impact|video\\_cards\\_imstt|video\\_cards\\_newport|video\\_cards\\_nsc|video\\_cards\\_sunbw2|video\\_cards\\_suncg14|video\\_cards\\_suncg3|video\\_cards\\_suncg6|video\\_cards\\_sunffb|video\\_cards\\_sunleo|video\\_cards\\_suntcx|video\\_cards\\_vermilion|video\\_cards\\_xgi|vidix|vis|win32codecs|x64\\-freebsd|x64\\-macos|x64\\-openbsd|x64\\-solaris|x86|x86\\-fbsd|x86\\-freebsd|x86\\-interix|x86\\-linux|x86\\-macos|x86\\-netbsd|x86\\-openbsd|x86\\-solaris|x86\\-winnt|xmms|yellownet)\$"
declare -x PORTAGE_LOG_FILE="/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/temp/build.log"
declare -x PORTAGE_MASTER_PID="14209"
declare -rx PORTAGE_PYM_PATH="/usr/lib64/portage/pym"
declare -x PORTAGE_REPO_NAME="gentoo"
declare -x PORTAGE_RESTRICT=""
declare -rx PORTAGE_TMPDIR="/var/tmp"
declare -x PORTAGE_WORKDIR_MODE="0700"
declare -x PORTDIR="/usr/portage"
declare -x PORTDIR_OVERLAY=""
declare -x PR="r2"
declare -x PROFILE_ONLY_VARIABLES="ARCH ELIBC KERNEL USERLAND"
declare -x PROFILE_PATHS="/usr/portage/profiles/base
/usr/portage/profiles/default/linux
/usr/portage/profiles/arch/base
/usr/portage/profiles/features/multilib
/usr/portage/profiles/arch/amd64
/usr/portage/profiles/default/linux/amd64
/usr/portage/profiles/releases
/usr/portage/profiles/releases/2008.0
/usr/portage/profiles/default/linux/amd64/2008.0
/etc/portage/profile"
declare -x PROPERTIES=""
declare -rx PROVIDE=""
declare -x PV="8.552"
declare -x PVR="8.552-r2"
declare -x PWD="/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2"
declare -x QMAKESPEC="linux-g++"
declare -x QTDIR="/usr/qt/3"
declare -rx RESTRICT=""
declare -x ROOT="/"
declare -x ROOTPATH="/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.3.2:/usr/kde/3.5/sbin:/usr/kde/3.5/bin:/usr/qt/3/bin"
declare -x RPMDIR="/usr/portage/rpm"
declare -x RSYNC_EXCLUDEFROM="/etc/portage/rsync_excludes"
declare -x R_HOME="/usr/lib64/R"
declare -x S="/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/work"
declare -x SAGE_ROOT="/usr/local/sage-2.8.2-debian32-i686-Linux"
declare -x SANDBOX_LOG="x11-drivers_-_ati-drivers-8.552-r2"
declare -x SANDBOX_ON="0"
declare -x SANDBOX_PREDICT="/proc/self/maps:/dev/console:/dev/random"
declare -x SANDBOX_READ="/:/dev/shm:/dev/stdin:/var/tmp:/var/tmp/ccache"
declare -x SANDBOX_WRITE="/dev/shm:/dev/stdout:/dev/stderr:/var/tmp:/var/tmp/ccache"
declare -x SCHEME_LIBRARY_PATH="/usr/share/slib/"
declare -x SGML_CATALOG_FILES="/etc/sgml/sgml-docbook.cat:/etc/sgml/openjade-1.3.2.cat:/etc/sgml/xml-docbook-4.4.cat:/etc/sgml/xml-docbook-4.1.2.cat:/etc/sgml/sgml-docbook-3.1.cat:/etc/sgml/sgml-lite.cat:/etc/sgml/dsssl-docbook-stylesheets.cat"
declare -x SHELL="/bin/bash"
declare -x SHLVL="3"
declare -rx SLOT="0"
declare -x STAGE1_USE="multilib nptl nptlonly unicode"
declare -x STARTDIR="/usr/src/linux-2.6.22-gentoo-r2"
declare -x SYMLINK_LIB="yes"
declare -rx T="/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/temp"
declare -x TERM="xterm"
declare -x TMP="/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/temp"
declare -x TMPDIR="/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/temp"
declare -x USE="acpi amd64 elibc_glibc kernel_linux multilib userland_GNU"
declare -x USER="root"
declare -x USERLAND="GNU"
declare -x USE_EXPAND="ALSA_CARDS ALSA_PCM_PLUGINS APACHE2_MODULES APACHE2_MPMS CAMERAS CROSSCOMPILE_OPTS DVB_CARDS ELIBC FCDSL_CARDS FOO2ZJS_DEVICES FRITZCAPI_CARDS INPUT_DEVICES KERNEL LCD_DEVICES LINGUAS LIRC_DEVICES MISDN_CARDS NETBEANS_MODULES QEMU_SOFTMMU_TARGETS QEMU_USER_TARGETS USERLAND VIDEO_CARDS"
declare -x VIDEO_CARDS=""
declare -rx WORKDIR="/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/work"
declare -x XARGS="xargs -r"
declare -x XAUTHORITY="/root/.xauthgpNGVW"
declare -x XDG_CONFIG_DIRS="/etc/xdg"
declare -x XDG_DATA_DIRS="/usr/local/share:/usr/kde/3.5/share:/usr/share"
declare -x _E_DOCDESTTREE_=""
declare -x _E_EXEDESTTREE_=""

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [gentoo-amd64] emerge -eav system failed with ati-drivers
  2009-06-21 23:58                 ` John P. Burkett
@ 2009-06-22 14:19                   ` David Fellows
  2009-06-22 15:49                     ` John P. Burkett
  0 siblings, 1 reply; 24+ messages in thread
From: David Fellows @ 2009-06-22 14:19 UTC (permalink / raw
  To: gentoo-amd64

On Sun, 21 Jun 2009 19:58:59 -0400 
"John P. Burkett" wrote -
> Thank you, David.
> 
> David Fellows wrote:
> > On Sun, 21 Jun 2009 17:55:15 -0400 
> > "John P. Burkett" wrote -
> >> Drake Donahue wrote:
> >>> Burkett asked: 
> >>>
> > 
> > 2) find someone who still has the top level Makefile from 2.6.22-r2 who wil
> l 
> >    send it to you. And hope that that is all you are missing.
> This appears to be the easiest short term solution.  In looking for the
> top level Makefile from 2.6.22-r2, do I need to specify that it is to be
> used on an amd64 machine or should I expect that any such file might
> work on amd64 architecture?

The Makefile should be architecture independent. I guess you can download one 
of the 2.6.22 series of kerenl sources from  
  http://www.kernel.org/pub/linux/kernel/v2.6/
unpack it somewhere and copy the Makefile.


There is a sequence of 2.6.22 kernels starting with 2.6.22 and proceeding
2.6.22.1, 2.6.22.2, ...
Which one of those correspods most closely to gentoo 2.6.22-r2 I don't know.
Obviously those that come after the date (uname -a) that your kerenl was built
are not of interest.

Hmm. Just looked at my own Makefile again. It begins:

VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 27
EXTRAVERSION = -gentoo-r8
NAME = Rotary Wombat

my uname -a gives
 Linux kanga 2.6.27-gentoo-r8     ......
It is remotely possible that the driver install is just using the Makefile
for the version info to compare it against the currently running kernel 
version. in which case you could try creating a Makefile that just contains
the first four lines above that match your kerenl version. Probably you would drop the -osmp since that is "EXTRAEXTRAVERSION". 

The NAME value is likely irrelevant.

It would be easy to try. And should do no harm if it fails.

But you are using chewing gum and baling wire to fix this.

Dave F



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [gentoo-amd64] emerge -eav system failed with ati-drivers
  2009-06-22 14:19                   ` David Fellows
@ 2009-06-22 15:49                     ` John P. Burkett
  2009-06-22 17:54                       ` David Fellows
  0 siblings, 1 reply; 24+ messages in thread
From: John P. Burkett @ 2009-06-22 15:49 UTC (permalink / raw
  To: gentoo-amd64

David Fellows wrote:
> On Sun, 21 Jun 2009 19:58:59 -0400 
> "John P. Burkett" wrote -
>> Thank you, David.
>>
>> David Fellows wrote:
>>> On Sun, 21 Jun 2009 17:55:15 -0400 
>>> "John P. Burkett" wrote -
>>>> Drake Donahue wrote:
>>>>> Burkett asked: 
>>>>>
>>> 2) find someone who still has the top level Makefile from 2.6.22-r2 who wil
>> l 
>>>    send it to you. And hope that that is all you are missing.
>> This appears to be the easiest short term solution.  In looking for the
>> top level Makefile from 2.6.22-r2, do I need to specify that it is to be
>> used on an amd64 machine or should I expect that any such file might
>> work on amd64 architecture?
> 
> The Makefile should be architecture independent. I guess you can download one 
> of the 2.6.22 series of kerenl sources from  
>   http://www.kernel.org/pub/linux/kernel/v2.6/
> unpack it somewhere and copy the Makefile.
> 
> 
> There is a sequence of 2.6.22 kernels starting with 2.6.22 and proceeding
> 2.6.22.1, 2.6.22.2, ...
> Which one of those correspods most closely to gentoo 2.6.22-r2 I don't know.
> Obviously those that come after the date (uname -a) that your kerenl was built
> are not of interest.
> 
> Hmm. Just looked at my own Makefile again. It begins:
> 
> VERSION = 2
> PATCHLEVEL = 6
> SUBLEVEL = 27
> EXTRAVERSION = -gentoo-r8
> NAME = Rotary Wombat
> 
> my uname -a gives
>  Linux kanga 2.6.27-gentoo-r8     ......
> It is remotely possible that the driver install is just using the Makefile
> for the version info to compare it against the currently running kernel 
> version. in which case you could try creating a Makefile that just contains
> the first four lines above that match your kerenl version. Probably you would drop the -osmp since that is "EXTRAEXTRAVERSION". 
> 
> The NAME value is likely irrelevant.
> 
> It would be easy to try. And should do no harm if it fails.
> 
> But you are using chewing gum and baling wire to fix this.

Thank you, David.  The 2.6.22 Makefile I copied from another machine (as
described in my previous note) starts as follows:
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 22
EXTRAVERSION = -gentoo-r2
NAME = Holy Dancing Manatees, Batman!

As reported in my last note, putting that in my linux-2.6.22-gentoo-r2
directory does not suffice to let "emerge ati-drivers" succeed.

My latest experiment was editing the Makefile, changing the fourth line
from EXTRAVERSION = -gentoo-r2
to
EXTRAVERSION = -gentoo-r2-osmp

After making that change, I again tried
emerge ati-drivers

The response was the familiar
 * Found kernel source directory:
 *     /usr/src/linux
 * Could not detect kernel version.
 * Please ensure that /usr/src/linux points to a complete set of Linux
sources.
 *
 * ERROR: x11-drivers/ati-drivers-8.552-r2 failed.

I wonder why "emerge ati-drivers" still does not detect the kernel version.

Best regards,
John


-- 
John P. Burkett
Department of Economics
University of Rhode Island
Kingston, RI 02881-0808
USA

phone (401) 874-9195



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [gentoo-amd64] emerge -eav system failed with ati-drivers
  2009-06-22 15:49                     ` John P. Burkett
@ 2009-06-22 17:54                       ` David Fellows
  2009-06-22 22:59                         ` John P. Burkett
  2009-06-23  3:25                         ` [gentoo-amd64] " Duncan
  0 siblings, 2 replies; 24+ messages in thread
From: David Fellows @ 2009-06-22 17:54 UTC (permalink / raw
  To: gentoo-amd64, John P. Burkett

On Mon, 22 Jun 2009 11:49:15 -0400 
"John P. Burkett" wrote -
> 
> Thank you, David.  The 2.6.22 Makefile I copied from another machine (as
> described in my previous note) starts as follows:
> VERSION = 2
> PATCHLEVEL = 6
> SUBLEVEL = 22
> EXTRAVERSION = -gentoo-r2
> NAME = Holy Dancing Manatees, Batman!
> 
> As reported in my last note, putting that in my linux-2.6.22-gentoo-r2
> directory does not suffice to let "emerge ati-drivers" succeed.
> 
> My latest experiment was editing the Makefile, changing the fourth line
> from EXTRAVERSION = -gentoo-r2
> to
> EXTRAVERSION = -gentoo-r2-osmp
> 
> After making that change, I again tried
> emerge ati-drivers
> 
> The response was the familiar
>  * Found kernel source directory:
>  *     /usr/src/linux
>  * Could not detect kernel version.
>  * Please ensure that /usr/src/linux points to a complete set of Linux
> sources.
>  *
>  * ERROR: x11-drivers/ati-drivers-8.552-r2 failed.
> 
> I wonder why "emerge ati-drivers" still does not detect the kernel version.
> 
Don't really know.

You have verified that /usr/src/linux is a symlink to linux-2.6.22-gentoo-r2
haven't you?

If the top level MAkefile is missing, there could be any number of other files 
missing.


You might look in /usr/portage/distfiles to see if you still have the 
distributioon files
ls linux* and look for 2.6.22    and ls genpat* and likewise.
If you do at least you could recreate the patched source tree manually.
First rename your existing linux-2.6.22-gentoo-r2 to something else.

After you unpack and apply patches, copy your .config file into the new.
make oldconfig,
make and so on. 
Install this kernel into /boot and update grub accordingly. Boot into it.
emerge your ati driver.

I am afreaid I have runn out of advice.

Dave F



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [gentoo-amd64] emerge -eav system failed with ati-drivers
  2009-06-22 17:54                       ` David Fellows
@ 2009-06-22 22:59                         ` John P. Burkett
  2009-06-23  3:25                         ` [gentoo-amd64] " Duncan
  1 sibling, 0 replies; 24+ messages in thread
From: John P. Burkett @ 2009-06-22 22:59 UTC (permalink / raw
  To: gentoo-amd64

David Fellows wrote:
> On Mon, 22 Jun 2009 11:49:15 -0400 
> "John P. Burkett" wrote -
>> Thank you, David.  The 2.6.22 Makefile I copied from another machine (as
>> described in my previous note) starts as follows:
>> VERSION = 2
>> PATCHLEVEL = 6
>> SUBLEVEL = 22
>> EXTRAVERSION = -gentoo-r2
>> NAME = Holy Dancing Manatees, Batman!
>>
>> As reported in my last note, putting that in my linux-2.6.22-gentoo-r2
>> directory does not suffice to let "emerge ati-drivers" succeed.
>>
>> My latest experiment was editing the Makefile, changing the fourth line
>> from EXTRAVERSION = -gentoo-r2
>> to
>> EXTRAVERSION = -gentoo-r2-osmp
>>
>> After making that change, I again tried
>> emerge ati-drivers
>>
>> The response was the familiar
>>  * Found kernel source directory:
>>  *     /usr/src/linux
>>  * Could not detect kernel version.
>>  * Please ensure that /usr/src/linux points to a complete set of Linux
>> sources.
>>  *
>>  * ERROR: x11-drivers/ati-drivers-8.552-r2 failed.
>>
>> I wonder why "emerge ati-drivers" still does not detect the kernel version.
>>
> Don't really know.
> 
> You have verified that /usr/src/linux is a symlink to linux-2.6.22-gentoo-r2
> haven't you?
Thank you, David.  Yes, I've verified that.
> 
> If the top level MAkefile is missing, there could be any number of other files 
> missing.
> 
> 
> You might look in /usr/portage/distfiles to see if you still have the 
> distributioon files
> ls linux* and look for 2.6.22    and ls genpat* and likewise.
Those steps did not reveal any files or directories with names involving
2.6.22.


> If you do at least you could recreate the patched source tree manually.
> First rename your existing linux-2.6.22-gentoo-r2 to something else.
> 
> After you unpack and apply patches, copy your .config file into the new.
> make oldconfig,
> make and so on. 
> Install this kernel into /boot and update grub accordingly. Boot into it.
> emerge your ati driver.
> 
> I am afreaid I have runn out of advice.

Thanks, it was good advice. I understand the problem better now.

> 
> Dave F
> 
> 


-- 
John P. Burkett
Department of Economics
University of Rhode Island
Kingston, RI 02881-0808
USA

phone (401) 874-9195



^ permalink raw reply	[flat|nested] 24+ messages in thread

* [gentoo-amd64]  Re: emerge -eav system failed with ati-drivers
  2009-06-22 17:54                       ` David Fellows
  2009-06-22 22:59                         ` John P. Burkett
@ 2009-06-23  3:25                         ` Duncan
  1 sibling, 0 replies; 24+ messages in thread
From: Duncan @ 2009-06-23  3:25 UTC (permalink / raw
  To: gentoo-amd64

David Fellows <fellows@unb.ca> posted
200906221754.n5MHsr1q010698@mailserv.unb.ca, excerpted below, on  Mon, 22
Jun 2009 14:54:52 -0300:

> If you do at least you could recreate the patched source tree manually.
> First rename your existing linux-2.6.22-gentoo-r2 to something else.
> 
> After you unpack and apply patches, copy your .config file into the new.
> make oldconfig, make and so on. Install this kernel into /boot and
> update grub accordingly. Boot into it. emerge your ati driver.

The mainline/Linus/kernel.org 2.6.22 kernel is always available from 
kernel.org.  Gentoo's gentoo-sources kernel is described as "lightly 
patched", so the unpatched kernel.org kernel would probably work.  I've 
always used mainline, here, and always handled the kernel myself as well, 
since I knew how to do it already in Mandrake, when I switched.

If the Gentoo patches are needed or you want to use the ebuild, both it 
and the Gentoo patches should be available from the Gentoo source 
repository.

-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman




^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2009-06-23  3:25 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-06-21 17:47 [gentoo-amd64] emerge -eav system failed with ati-drivers John P. Burkett
2009-06-21 17:55 ` Drake Donahue
2009-06-21 18:17   ` David Relson
2009-06-21 18:54     ` John P. Burkett
2009-06-21 19:10       ` David Relson
2009-06-21 19:19         ` John P. Burkett
2009-06-21 20:10           ` David Relson
2009-06-21 20:48           ` Drake Donahue
2009-06-21 21:55             ` John P. Burkett
2009-06-21 23:05               ` David Fellows
2009-06-21 23:13                 ` Mark Knecht
2009-06-21 23:58                 ` John P. Burkett
2009-06-22 14:19                   ` David Fellows
2009-06-22 15:49                     ` John P. Burkett
2009-06-22 17:54                       ` David Fellows
2009-06-22 22:59                         ` John P. Burkett
2009-06-23  3:25                         ` [gentoo-amd64] " Duncan
2009-06-22 14:00                 ` [gentoo-amd64] " John P. Burkett
2009-06-21 23:19               ` [gentoo-amd64] " Duncan
2009-06-22  0:02                 ` John P. Burkett
2009-06-22  0:46                   ` David Relson
2009-06-21 18:40   ` [gentoo-amd64] " John P. Burkett
  -- strict thread matches above, loose matches on Subject: below --
2009-06-20 23:01 John P. Burkett
2009-06-20 23:17 ` [gentoo-amd64] " Nikos Chantziaras
2009-06-21  1:26   ` Duncan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox