* [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 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
* 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] 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
* 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
* [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] 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 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
* [gentoo-amd64] emerge -eav system failed with ati-drivers
@ 2009-06-20 23:01 John P. Burkett
2009-06-20 23:17 ` [gentoo-amd64] " Nikos Chantziaras
0 siblings, 1 reply; 24+ messages in thread
From: John P. Burkett @ 2009-06-20 23:01 UTC (permalink / raw
To: gentoo-amd64
[-- Attachment #1: Type: text/plain, Size: 1834 bytes --]
Today on an amd64 machine I tried "emerge -eav system". The process
ended with the following message:
>>> Emerging (267 of 281) x11-drivers/ati-drivers-8.552-r2
* ati-driver-installer-8-11-x86.x86_64.run RMD160 SHA1 SHA256 size ;-)
...
[ ok ]
* checking ebuild checksums ;-) ...
[ ok ]
* checking auxfile checksums ;-) ...
[ ok ]
* checking miscfile checksums ;-) ...
[ ok ]
* Determining the location of the kernel source code
* 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
Doing "ls -lad /usr/src/linux" elicits
lrwxrwxrwx 1 root root 22 Sep 3 2007 /usr/src/linux ->
linux-2.6.22-gentoo-r2
Doing "uname -r" elicits
2.6.22-gentoo-r2-osmp
My build log and ebuild environment file are attached.
I would be very grateful for ideas about how to fix this problem with
ati-drivers and finish the "emerge -eav system" process.
-John
--
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: 1318 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 find a Makefile in the kernel source directory.
^[[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: 220280 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=197
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=12754
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[197C'
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=
KV_DIR=/usr/src/linux
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=/root
OPENGL_PROFILE=xorg-x11
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
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 s390 amd64 x86 ppc64 x86-fbsd m68k arm sparc sh mips ia64 alpha hppa amd64-fbsd 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|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|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|macbook|mips|multilib|n32|n64|osp|pam\_console|pbbuttonsd|pfpro|plugin|ppc|ppc64|ppcsha1|prefix|psyco|pvm|real|realcodecs|s390|selinux|sh|solid|sparc|sparc\-fbsd|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|x86|x86\-fbsd|xmms|yellownet)$'
PORTAGE_LOG_FILE=/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/temp/build.log
PORTAGE_MASTER_PID=25750
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_UPDATE_ENV=/var/db/pkg/x11-drivers/xf86-input-keyboard-1.3.2/environment.bz2
PORTAGE_VERBOSE=1
PORTAGE_WORKDIR_MODE=0700
PORTDIR=/usr/portage
PORTDIR_OVERLAY=
PPID=25750
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=/root
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/.xauthEmg9wZ
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="12754"
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=""
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="/root"
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 s390 amd64 x86 ppc64 x86-fbsd m68k arm sparc sh mips ia64 alpha hppa amd64-fbsd 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|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|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|macbook|mips|multilib|n32|n64|osp|pam\\_console|pbbuttonsd|pfpro|plugin|ppc|ppc64|ppcsha1|prefix|psyco|pvm|real|realcodecs|s390|selinux|sh|solid|sparc|sparc\\-fbsd|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|x86|x86\\-fbsd|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="25750"
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_UPDATE_ENV="/var/db/pkg/x11-drivers/xf86-input-keyboard-1.3.2/environment.bz2"
declare -x PORTAGE_VERBOSE="1"
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="/root"
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/.xauthEmg9wZ"
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
* [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
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