public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-dev] Even More Portage Bashrc Fun
@ 2005-06-12 14:51 Michael Tindal
  2005-06-14  5:09 ` Rumen Yotov
  0 siblings, 1 reply; 3+ messages in thread
From: Michael Tindal @ 2005-06-12 14:51 UTC (permalink / raw
  To: gentoo-dev

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

Hello,

So a long time ago solar wrote a bashrc for portage, and posted it on
this mailing list for everyone to see.  I took it, and started extending
it with various things of my own design, and some contributions from
others.  I've since updated it with the things solar's been adding to
his bashrc, plus adding the functionality from ChrisWhites bashrc.
Well, adding all of that stuff made the bashrc quite large.  In addition
I was using CVS for a while, and wrote a lot of hooks to work with CVS,
when I went back to 2.0.51, I didnt want to lose all of those, so I
backported in a way the hooks from CVS (I mean in a way because the post
hooks arent really post hooks, they just run before the pre hook of the
next phase), but that meant the bashrc was huge.

So, sometime last night or this morning I set out to create a modular
portage bashrc [1], and I have done so.  I'll admit, the code is ugly,
and it probably could've been done better.  But it does lay a good
framework for future extensions.

The bashrc file is just a skeleton that loads the modules, and handles
the pseudo-hook implementation.  The real magic happens in the
bashrc-modules subdirectory.  core-functions.bmod contains the basic
functions and handles loading other modules.  hooks.bmod defines the
hooks used and defines functions used to add new function calls to the
hooks.  The other bmod files define some sort of library for other
modules (like an eclass) or functions that get loaded into the hooks.  I
don't have any documentation written up for that, so read through the
source and you should get an idea of how it all works.

The BASHRC_DYN_MODULES variable can be defined in make.conf to limit the
modules that are loaded by the bashrc.  This is useful if you only want
to use a subset of the functionality available in the modules, and dont
want to load them all.  The default behavior is to load all of the
modules under ${ROOT}/etc/portage/bashrc-modules/.  To extend the
bashrc, for example, to add another feature, you simply create a new
bmod following the examples given, then either let it load automatically
or add it to BASHRC_DYN_MODULES.

I've done some thorough testing and beu did some testing as well, so
there shouldnt be any major bugs, but if you find some, please e-mail me
with them.  I'm especially interested in command not found errors.  This
is some really ugly bash code, so if you run into obscure errors, dont
freak out, theyre a result of how I deal with the infrastructure.
Overall though, it appears to be stable, and I'm currently using it on
my system.

Finally, I'd like to thank the people who directly or indirectly helped
with this bashrc and the bashrc system:  solar, ChrisWhite, beu,
bluefoxicy, and anyone else who I forgot to name.  Enjoy everyone!

Mike Tindal

PS:  Heed the warning given in the setup phase, you *cannot* modify
variables that affect depends because the environment the bashrc
modifies isnt picked up by depends.  Be very careful with what you do
with category.use, since that can very easily break builds.

[1]
http://dev.gentoo.org/~urilith/portage-tools/bashrc-2.0.51-modular-20050612.tar.bz2

I've got some sample files in that dir for the random files the bashrc
supports.

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 256 bytes --]

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

* Re: [gentoo-dev] Even More Portage Bashrc Fun
  2005-06-12 14:51 [gentoo-dev] Even More Portage Bashrc Fun Michael Tindal
@ 2005-06-14  5:09 ` Rumen Yotov
  2005-06-14 16:22   ` Michael Tindal
  0 siblings, 1 reply; 3+ messages in thread
From: Rumen Yotov @ 2005-06-14  5:09 UTC (permalink / raw
  To: gentoo-dev

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

Michael Tindal wrote:

>Hello,
>
>So a long time ago solar wrote a bashrc for portage, and posted it on
>this mailing list for everyone to see.  I took it, and started extending
>it with various things of my own design, and some contributions from
>others.  I've since updated it with the things solar's been adding to
>his bashrc, plus adding the functionality from ChrisWhites bashrc.
>Well, adding all of that stuff made the bashrc quite large.  In addition
>I was using CVS for a while, and wrote a lot of hooks to work with CVS,
>when I went back to 2.0.51, I didnt want to lose all of those, so I
>backported in a way the hooks from CVS (I mean in a way because the post
>hooks arent really post hooks, they just run before the pre hook of the
>next phase), but that meant the bashrc was huge.
>
>So, sometime last night or this morning I set out to create a modular
>portage bashrc [1], and I have done so.  I'll admit, the code is ugly,
>and it probably could've been done better.  But it does lay a good
>framework for future extensions.
>
>The bashrc file is just a skeleton that loads the modules, and handles
>the pseudo-hook implementation.  The real magic happens in the
>bashrc-modules subdirectory.  core-functions.bmod contains the basic
>functions and handles loading other modules.  hooks.bmod defines the
>hooks used and defines functions used to add new function calls to the
>hooks.  The other bmod files define some sort of library for other
>modules (like an eclass) or functions that get loaded into the hooks.  I
>don't have any documentation written up for that, so read through the
>source and you should get an idea of how it all works.
>
>The BASHRC_DYN_MODULES variable can be defined in make.conf to limit the
>modules that are loaded by the bashrc.  This is useful if you only want
>to use a subset of the functionality available in the modules, and dont
>want to load them all.  The default behavior is to load all of the
>modules under ${ROOT}/etc/portage/bashrc-modules/.  To extend the
>bashrc, for example, to add another feature, you simply create a new
>bmod following the examples given, then either let it load automatically
>or add it to BASHRC_DYN_MODULES.
>
>I've done some thorough testing and beu did some testing as well, so
>there shouldnt be any major bugs, but if you find some, please e-mail me
>with them.  I'm especially interested in command not found errors.  This
>is some really ugly bash code, so if you run into obscure errors, dont
>freak out, theyre a result of how I deal with the infrastructure.
>Overall though, it appears to be stable, and I'm currently using it on
>my system.
>
>Finally, I'd like to thank the people who directly or indirectly helped
>with this bashrc and the bashrc system:  solar, ChrisWhite, beu,
>bluefoxicy, and anyone else who I forgot to name.  Enjoy everyone!
>
>Mike Tindal
>
>PS:  Heed the warning given in the setup phase, you *cannot* modify
>variables that affect depends because the environment the bashrc
>modifies isnt picked up by depends.  Be very careful with what you do
>with category.use, since that can very easily break builds.
>
>[1]
>http://dev.gentoo.org/~urilith/portage-tools/bashrc-2.0.51-modular-20050612.tar.bz2
>
>I've got some sample files in that dir for the random files the bashrc
>supports.
>  
>
Hi,
Till now used the old/org bashrc-script plus package.* files.
Now when replaced them with the new one get some errors, seems just
syntax ones.
Here's the log when using it:
...
>>> Loading module hooks.bmod...
>>> Loading module string-utils.bmod...
>>> Loading module audit.bmod...
>>> Loading module autooverlay.bmod...
>>> Loading module autopatch.bmod...
>>> Loading module conf.bmod...
>>> Loading module distdir-clean.bmod...
>>> Loading module enotice.bmod...
>>> Loading module etc-portage.bmod...
//etc/portage/bashrc-modules/core-functions.bmod: eval: line 103:
unexpected EOF while looking for matching `''
//etc/portage/bashrc-modules/core-functions.bmod: eval: line 104: syntax
error: unexpected end of file
//etc/portage/bashrc-modules/core-functions.bmod: eval: line 108:
unexpected EOF while looking for matching `''
//etc/portage/bashrc-modules/core-functions.bmod: eval: line 109: syntax
error: unexpected end of file
//etc/portage/bashrc-modules/core-functions.bmod: eval: line 103:
unexpected EOF while looking for matching `''
//etc/portage/bashrc-modules/core-functions.bmod: eval: line 104: syntax
error: unexpected end of file
//etc/portage/bashrc-modules/core-functions.bmod: eval: line 108:
unexpected EOF while looking for matching `''
//etc/portage/bashrc-modules/core-functions.bmod: eval: line 109: syntax
error: unexpected end of file
//etc/portage/bashrc-modules/core-functions.bmod: eval: line 103:
unexpected EOF while looking for matching `''
//etc/portage/bashrc-modules/core-functions.bmod: eval: line 104: syntax
error: unexpected end of file
//etc/portage/bashrc-modules/core-functions.bmod: eval: line 108:
unexpected EOF while looking for matching `''
//etc/portage/bashrc-modules/core-functions.bmod: eval: line 109: syntax
error: unexpected end of file
>>> Loading module eutils.bmod...
>>> Loading module optipng.bmod...
>>> Loading module pathchk.bmod...
>>> Loading module prelink.bmod...
>>> Loading module setup.bmod...
>>> Loading module whatis.bmod...
>>> root -sandbox(setup) [Enter]
                                                      !!!!!!  !!!!!! Do
!!NOT!! use these files to modify variables
that would        !!!!!! alter the dependencies of the package.  If you
do, things        !!!!!! WILL break.  This
bashrc has no control before the               !!!!!! depend phase, so
the files cannot be used to modify             
!!!!!! dependency-related variables.  These files are mostly           
!!!!!! used to enable features and/or
variables on a per-package        !!!!!! basis without having to
cluttler /etc/make.conf      !!!!!! -------- WARNING
ON PER-PACKAGE FEATURES IN THIS BASHRC --------
!!!//etc/portage/bashrc-modules/core-functions.bmod: eval: line 103:
unexpected EOF while looking for matching `''
//etc/portage/bashrc-modules/core-functions.bmod: eval: line 104: syntax
error: unexpected end of file
//etc/portage/bashrc-modules/core-functions.bmod: eval: line 108:
unexpected EOF while looking for matching `''
//etc/portage/bashrc-modules/core-functions.bmod: eval: line 109: syntax
error: unexpected end of file
>>> Using package.cflags entry for target sys-devel for sys-devel/gettext
>>> root +sandbox(setup) [Leave]
>>> root +sandbox(unpack) [Enter]
/var/tmp/portage/gettext-0.14.4/temp/environment: eval: line 2942:
unexpected EOF while looking for matching `''
/var/tmp/portage/gettext-0.14.4/temp/environment: eval: line 2943:
syntax error: unexpected end of file
/var/tmp/portage/gettext-0.14.4/temp/environment: eval: line 2946:
unexpected EOF while looking for matching `''
/var/tmp/portage/gettext-0.14.4/temp/environment: eval: line 2947:
syntax error: unexpected end of file
>>> Using package.cflags entry for target sys-devel for sys-devel/gettext
>>> Unpacking source...
...
PS: will also look into it but not now, later. Will report anything new.
Thanks for your work. Rumen

[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/x-pkcs7-signature, Size: 3397 bytes --]

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

* Re: [gentoo-dev] Even More Portage Bashrc Fun
  2005-06-14  5:09 ` Rumen Yotov
@ 2005-06-14 16:22   ` Michael Tindal
  0 siblings, 0 replies; 3+ messages in thread
From: Michael Tindal @ 2005-06-14 16:22 UTC (permalink / raw
  To: gentoo-dev

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

Rumen Yotov wrote:
> Michael Tindal wrote:
> 
> 
>>Hello,
>>
>>So a long time ago solar wrote a bashrc for portage, and posted it on
>>this mailing list for everyone to see.  I took it, and started extending
>>it with various things of my own design, and some contributions from
>>others.  I've since updated it with the things solar's been adding to
>>his bashrc, plus adding the functionality from ChrisWhites bashrc.
>>Well, adding all of that stuff made the bashrc quite large.  In addition
>>I was using CVS for a while, and wrote a lot of hooks to work with CVS,
>>when I went back to 2.0.51, I didnt want to lose all of those, so I
>>backported in a way the hooks from CVS (I mean in a way because the post
>>hooks arent really post hooks, they just run before the pre hook of the
>>next phase), but that meant the bashrc was huge.
>>
>>So, sometime last night or this morning I set out to create a modular
>>portage bashrc [1], and I have done so.  I'll admit, the code is ugly,
>>and it probably could've been done better.  But it does lay a good
>>framework for future extensions.
>>
>>The bashrc file is just a skeleton that loads the modules, and handles
>>the pseudo-hook implementation.  The real magic happens in the
>>bashrc-modules subdirectory.  core-functions.bmod contains the basic
>>functions and handles loading other modules.  hooks.bmod defines the
>>hooks used and defines functions used to add new function calls to the
>>hooks.  The other bmod files define some sort of library for other
>>modules (like an eclass) or functions that get loaded into the hooks.  I
>>don't have any documentation written up for that, so read through the
>>source and you should get an idea of how it all works.
>>
>>The BASHRC_DYN_MODULES variable can be defined in make.conf to limit the
>>modules that are loaded by the bashrc.  This is useful if you only want
>>to use a subset of the functionality available in the modules, and dont
>>want to load them all.  The default behavior is to load all of the
>>modules under ${ROOT}/etc/portage/bashrc-modules/.  To extend the
>>bashrc, for example, to add another feature, you simply create a new
>>bmod following the examples given, then either let it load automatically
>>or add it to BASHRC_DYN_MODULES.
>>
>>I've done some thorough testing and beu did some testing as well, so
>>there shouldnt be any major bugs, but if you find some, please e-mail me
>>with them.  I'm especially interested in command not found errors.  This
>>is some really ugly bash code, so if you run into obscure errors, dont
>>freak out, theyre a result of how I deal with the infrastructure.
>>Overall though, it appears to be stable, and I'm currently using it on
>>my system.
>>
>>Finally, I'd like to thank the people who directly or indirectly helped
>>with this bashrc and the bashrc system:  solar, ChrisWhite, beu,
>>bluefoxicy, and anyone else who I forgot to name.  Enjoy everyone!
>>
>>Mike Tindal
>>
>>PS:  Heed the warning given in the setup phase, you *cannot* modify
>>variables that affect depends because the environment the bashrc
>>modifies isnt picked up by depends.  Be very careful with what you do
>>with category.use, since that can very easily break builds.
>>
>>[1]
>>http://dev.gentoo.org/~urilith/portage-tools/bashrc-2.0.51-modular-20050612.tar.bz2
>>
>>I've got some sample files in that dir for the random files the bashrc
>>supports.
>> 
>>
> 
> Hi,
> Till now used the old/org bashrc-script plus package.* files.
> Now when replaced them with the new one get some errors, seems just
> syntax ones.
> Here's the log when using it:
> ...
> 
>>>>Loading module hooks.bmod...
>>>>Loading module string-utils.bmod...
>>>>Loading module audit.bmod...
>>>>Loading module autooverlay.bmod...
>>>>Loading module autopatch.bmod...
>>>>Loading module conf.bmod...
>>>>Loading module distdir-clean.bmod...
>>>>Loading module enotice.bmod...
>>>>Loading module etc-portage.bmod...
> 
> //etc/portage/bashrc-modules/core-functions.bmod: eval: line 103:
> unexpected EOF while looking for matching `''
> //etc/portage/bashrc-modules/core-functions.bmod: eval: line 104: syntax
> error: unexpected end of file
> //etc/portage/bashrc-modules/core-functions.bmod: eval: line 108:
> unexpected EOF while looking for matching `''
> //etc/portage/bashrc-modules/core-functions.bmod: eval: line 109: syntax
> error: unexpected end of file
> //etc/portage/bashrc-modules/core-functions.bmod: eval: line 103:
> unexpected EOF while looking for matching `''
> //etc/portage/bashrc-modules/core-functions.bmod: eval: line 104: syntax
> error: unexpected end of file
> //etc/portage/bashrc-modules/core-functions.bmod: eval: line 108:
> unexpected EOF while looking for matching `''
> //etc/portage/bashrc-modules/core-functions.bmod: eval: line 109: syntax
> error: unexpected end of file
> //etc/portage/bashrc-modules/core-functions.bmod: eval: line 103:
> unexpected EOF while looking for matching `''
> //etc/portage/bashrc-modules/core-functions.bmod: eval: line 104: syntax
> error: unexpected end of file
> //etc/portage/bashrc-modules/core-functions.bmod: eval: line 108:
> unexpected EOF while looking for matching `''
> //etc/portage/bashrc-modules/core-functions.bmod: eval: line 109: syntax
> error: unexpected end of file
> 
>>>>Loading module eutils.bmod...
>>>>Loading module optipng.bmod...
>>>>Loading module pathchk.bmod...
>>>>Loading module prelink.bmod...
>>>>Loading module setup.bmod...
>>>>Loading module whatis.bmod...
>>>>root -sandbox(setup) [Enter]
> 
>                                                       !!!!!!  !!!!!! Do
> !!NOT!! use these files to modify variables
> that would        !!!!!! alter the dependencies of the package.  If you
> do, things        !!!!!! WILL break.  This
> bashrc has no control before the               !!!!!! depend phase, so
> the files cannot be used to modify             
> !!!!!! dependency-related variables.  These files are mostly           
> !!!!!! used to enable features and/or
> variables on a per-package        !!!!!! basis without having to
> cluttler /etc/make.conf      !!!!!! -------- WARNING
> ON PER-PACKAGE FEATURES IN THIS BASHRC --------
> !!!//etc/portage/bashrc-modules/core-functions.bmod: eval: line 103:
> unexpected EOF while looking for matching `''
> //etc/portage/bashrc-modules/core-functions.bmod: eval: line 104: syntax
> error: unexpected end of file
> //etc/portage/bashrc-modules/core-functions.bmod: eval: line 108:
> unexpected EOF while looking for matching `''
> //etc/portage/bashrc-modules/core-functions.bmod: eval: line 109: syntax
> error: unexpected end of file
> 
>>>>Using package.cflags entry for target sys-devel for sys-devel/gettext
>>>>root +sandbox(setup) [Leave]
>>>>root +sandbox(unpack) [Enter]
> 
> /var/tmp/portage/gettext-0.14.4/temp/environment: eval: line 2942:
> unexpected EOF while looking for matching `''
> /var/tmp/portage/gettext-0.14.4/temp/environment: eval: line 2943:
> syntax error: unexpected end of file
> /var/tmp/portage/gettext-0.14.4/temp/environment: eval: line 2946:
> unexpected EOF while looking for matching `''
> /var/tmp/portage/gettext-0.14.4/temp/environment: eval: line 2947:
> syntax error: unexpected end of file
> 
>>>>Using package.cflags entry for target sys-devel for sys-devel/gettext
>>>>Unpacking source...
> 
> ...
> PS: will also look into it but not now, later. Will report anything new.
> Thanks for your work. Rumen

There have been some new releases lately.  Look in the portage-tools
directory and try again.  Also, mail these to me, not the list, since
the bugs are my reponsibility :).

Mike

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 256 bytes --]

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

end of thread, other threads:[~2005-06-14 21:37 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-06-12 14:51 [gentoo-dev] Even More Portage Bashrc Fun Michael Tindal
2005-06-14  5:09 ` Rumen Yotov
2005-06-14 16:22   ` Michael Tindal

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