public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-dev] [fyi] lddtree magic
@ 2013-04-09 19:31 Mike Frysinger
  2013-04-09 20:30 ` Diego Elio Pettenò
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Mike Frysinger @ 2013-04-09 19:31 UTC (permalink / raw
  To: gentoo-dev

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

i doubt few people have noticed, but i've rewritten lddtree recently in 
python.  i did for speed, for fun, and to add a lot more functionality that 
would have driven the bash code base to new perverse levels.

i've randomly stumbled across places in our code base (beyond ebuilds) where 
the new python version would be useful.  rather than try and ferret out those 
myself, i'll just announce here and people can sort it out.

if you guys think this can satisfy most of your needs but there's like a small 
edge case that isn't quite handled, let me know.  i can always add another 
option :).

specifically, lddtree (both the shell & python variants) support a --list:
$ lddtree -l /bin/bash
/bin/bash
/lib64/ld-linux-x86-64.so.2
/lib64/libreadline.so.6
/lib64/libhistory.so.6
/lib64/libncurses.so.5
/lib64/libdl.so.2
/lib64/libc.so.6
this way you don't have to resort to grep/awk/sed on the output to try and get 
the names out of `lddtree` (or heaven forbid, `ldd`).

it also supports --root just like you'd expect:
$ lddtree -l /bin/bash --root /mnt/space/distros/x86
/mnt/space/distros/x86/bin/bash
/mnt/space/distros/x86/lib/ld-linux.so.2
/mnt/space/distros/x86/lib/libreadline.so.6
/mnt/space/distros/x86/lib/libncurses.so.5
/mnt/space/distros/x86/lib/libdl.so.2
/mnt/space/distros/x86/lib/libc.so.6

but things get even crazier with the new --copy-to-tree option (python version 
only).  this is useful for scenarios like kernel initramfs where you want to 
copy over one or two ELFs and their dependencies w/out resorting to statically 
linking them.  check out the --help text for more details.
-mike

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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

* Re: [gentoo-dev] [fyi] lddtree magic
  2013-04-09 19:31 [gentoo-dev] [fyi] lddtree magic Mike Frysinger
@ 2013-04-09 20:30 ` Diego Elio Pettenò
  2013-04-10  3:10   ` Mike Frysinger
  2013-04-09 20:41 ` Samuli Suominen
  2013-04-09 22:22 ` Samuli Suominen
  2 siblings, 1 reply; 13+ messages in thread
From: Diego Elio Pettenò @ 2013-04-09 20:30 UTC (permalink / raw
  To: gentoo-dev

On 09/04/2013 20:31, Mike Frysinger wrote:
> but things get even crazier with the new --copy-to-tree option (python version 
> only).  this is useful for scenarios like kernel initramfs where you want to 
> copy over one or two ELFs and their dependencies w/out resorting to statically 
> linking them.  check out the --help text for more details.

Would you mind a "hardlink to tree"? Would be lovely for chroot
environments as well...

-- 
Diego Elio Pettenò — Flameeyes
flameeyes@flameeyes.eu — http://blog.flameeyes.eu/


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

* Re: [gentoo-dev] [fyi] lddtree magic
  2013-04-09 19:31 [gentoo-dev] [fyi] lddtree magic Mike Frysinger
  2013-04-09 20:30 ` Diego Elio Pettenò
@ 2013-04-09 20:41 ` Samuli Suominen
  2013-04-09 20:45   ` Samuli Suominen
  2013-04-09 22:22 ` Samuli Suominen
  2 siblings, 1 reply; 13+ messages in thread
From: Samuli Suominen @ 2013-04-09 20:41 UTC (permalink / raw
  To: gentoo-dev

On 09/04/13 22:31, Mike Frysinger wrote:
> i doubt few people have noticed, but i've rewritten lddtree recently in
> python.  i did for speed, for fun, and to add a lot more functionality that
> would have driven the bash code base to new perverse levels.
>
> i've randomly stumbled across places in our code base (beyond ebuilds) where
> the new python version would be useful.  rather than try and ferret out those
> myself, i'll just announce here and people can sort it out.
>
> if you guys think this can satisfy most of your needs but there's like a small
> edge case that isn't quite handled, let me know.  i can always add another
> option :).
>
> specifically, lddtree (both the shell & python variants) support a --list:
> $ lddtree -l /bin/bash

$ qfile -v /usr/bin/lddtree
app-misc/pax-utils-0.6 (/usr/bin/lddtree)

$ python --version
Python 3.2.3

$ lddtree -l /bin/bash
Traceback (most recent call last):
   File "/usr/bin/lddtree", line 450, in <module>
     sys.exit(main(sys.argv))
   File "/usr/bin/lddtree", line 437, in main
     elf = ParseELF(path, options.root, ldpaths)
   File "/usr/bin/lddtree", line 235, in ParseELF
     elf = ELFFile(f)
   File "/usr/lib64/python3.2/site-packages/elftools/elf/elffile.py", 
line 47, in __init__
     self._identify_file()
   File "/usr/lib64/python3.2/site-packages/elftools/elf/elffile.py", 
line 177, in _identify_file
     magic = self.stream.read(4)
   File "/usr/lib64/python3.2/codecs.py", line 300, in decode
     (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 25: 
invalid start byte

$ locale
LANG=en_US.UTF-8
LC_CTYPE=fi_FI.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_GB.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

- Samuli


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

* Re: [gentoo-dev] [fyi] lddtree magic
  2013-04-09 20:41 ` Samuli Suominen
@ 2013-04-09 20:45   ` Samuli Suominen
  2013-04-10  2:30     ` Mike Frysinger
  0 siblings, 1 reply; 13+ messages in thread
From: Samuli Suominen @ 2013-04-09 20:45 UTC (permalink / raw
  To: gentoo-dev

On 09/04/13 23:41, Samuli Suominen wrote:
> On 09/04/13 22:31, Mike Frysinger wrote:
>> i doubt few people have noticed, but i've rewritten lddtree recently in
>> python.  i did for speed, for fun, and to add a lot more functionality
>> that
>> would have driven the bash code base to new perverse levels.
>>
>> i've randomly stumbled across places in our code base (beyond ebuilds)
>> where
>> the new python version would be useful.  rather than try and ferret
>> out those
>> myself, i'll just announce here and people can sort it out.
>>
>> if you guys think this can satisfy most of your needs but there's like
>> a small
>> edge case that isn't quite handled, let me know.  i can always add
>> another
>> option :).
>>
>> specifically, lddtree (both the shell & python variants) support a
>> --list:
>> $ lddtree -l /bin/bash
>
> $ qfile -v /usr/bin/lddtree
> app-misc/pax-utils-0.6 (/usr/bin/lddtree)
>
> $ python --version
> Python 3.2.3
>
> $ lddtree -l /bin/bash
> Traceback (most recent call last):
>    File "/usr/bin/lddtree", line 450, in <module>
>      sys.exit(main(sys.argv))
>    File "/usr/bin/lddtree", line 437, in main
>      elf = ParseELF(path, options.root, ldpaths)
>    File "/usr/bin/lddtree", line 235, in ParseELF
>      elf = ELFFile(f)
>    File "/usr/lib64/python3.2/site-packages/elftools/elf/elffile.py",
> line 47, in __init__
>      self._identify_file()
>    File "/usr/lib64/python3.2/site-packages/elftools/elf/elffile.py",
> line 177, in _identify_file
>      magic = self.stream.read(4)
>    File "/usr/lib64/python3.2/codecs.py", line 300, in decode
>      (result, consumed) = self._buffer_decode(data, self.errors, final)
> UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 25:
> invalid start byte
>
> $ locale
> LANG=en_US.UTF-8
> LC_CTYPE=fi_FI.UTF-8
> LC_NUMERIC="en_US.UTF-8"
> LC_TIME=en_GB.UTF-8
> LC_COLLATE="en_US.UTF-8"
> LC_MONETARY="en_US.UTF-8"
> LC_MESSAGES="en_US.UTF-8"
> LC_PAPER="en_US.UTF-8"
> LC_NAME="en_US.UTF-8"
> LC_ADDRESS="en_US.UTF-8"
> LC_TELEPHONE="en_US.UTF-8"
> LC_MEASUREMENT="en_US.UTF-8"
> LC_IDENTIFICATION="en_US.UTF-8"
> LC_ALL=

$ LC_ALL=C lddtree -l /bin/bash
Traceback (most recent call last):
   File "/usr/bin/lddtree", line 450, in <module>
     sys.exit(main(sys.argv))
   File "/usr/bin/lddtree", line 437, in main
     elf = ParseELF(path, options.root, ldpaths)
   File "/usr/bin/lddtree", line 235, in ParseELF
     elf = ELFFile(f)
   File "/usr/lib64/python3.2/site-packages/elftools/elf/elffile.py", 
line 47, in __init__
     self._identify_file()
   File "/usr/lib64/python3.2/site-packages/elftools/elf/elffile.py", 
line 177, in _identify_file
     magic = self.stream.read(4)
   File "/usr/lib64/python3.2/encodings/ascii.py", line 26, in decode
     return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0x83 in position 25: 
ordinal not in range(128)



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

* Re: [gentoo-dev] [fyi] lddtree magic
  2013-04-09 19:31 [gentoo-dev] [fyi] lddtree magic Mike Frysinger
  2013-04-09 20:30 ` Diego Elio Pettenò
  2013-04-09 20:41 ` Samuli Suominen
@ 2013-04-09 22:22 ` Samuli Suominen
  2 siblings, 0 replies; 13+ messages in thread
From: Samuli Suominen @ 2013-04-09 22:22 UTC (permalink / raw
  To: gentoo-dev

On 09/04/13 22:31, Mike Frysinger wrote:
> i doubt few people have noticed, but i've rewritten lddtree recently in
> python.

I've opened http://bugs.gentoo.org/465310 for the failing new lddtree.



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

* Re: [gentoo-dev] [fyi] lddtree magic
  2013-04-09 20:45   ` Samuli Suominen
@ 2013-04-10  2:30     ` Mike Frysinger
  0 siblings, 0 replies; 13+ messages in thread
From: Mike Frysinger @ 2013-04-10  2:30 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: Text/Plain, Size: 1068 bytes --]

On Tuesday 09 April 2013 16:45:36 Samuli Suominen wrote:
> $ LC_ALL=C lddtree -l /bin/bash
> Traceback (most recent call last):
>    File "/usr/bin/lddtree", line 450, in <module>
>      sys.exit(main(sys.argv))
>    File "/usr/bin/lddtree", line 437, in main
>      elf = ParseELF(path, options.root, ldpaths)
>    File "/usr/bin/lddtree", line 235, in ParseELF
>      elf = ELFFile(f)
>    File "/usr/lib64/python3.2/site-packages/elftools/elf/elffile.py",
> line 47, in __init__
>      self._identify_file()
>    File "/usr/lib64/python3.2/site-packages/elftools/elf/elffile.py",
> line 177, in _identify_file
>      magic = self.stream.read(4)
>    File "/usr/lib64/python3.2/encodings/ascii.py", line 26, in decode
>      return codecs.ascii_decode(input, self.errors)[0]
> UnicodeDecodeError: 'ascii' codec can't decode byte 0x83 in position 25:
> ordinal not in range(128)

make sure you're using pax-utils-0.7 and pyelftools-0.20-r2.  there were known 
python-3 issues in earlier versions.

if it still fails, post a bug please.
-mike

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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

* Re: [gentoo-dev] [fyi] lddtree magic
  2013-04-09 20:30 ` Diego Elio Pettenò
@ 2013-04-10  3:10   ` Mike Frysinger
  2013-04-10 10:04     ` Fabio Erculiani
  0 siblings, 1 reply; 13+ messages in thread
From: Mike Frysinger @ 2013-04-10  3:10 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: Text/Plain, Size: 843 bytes --]

On Tuesday 09 April 2013 16:30:26 Diego Elio Pettenò wrote:
> On 09/04/2013 20:31, Mike Frysinger wrote:
> > but things get even crazier with the new --copy-to-tree option (python
> > version only).  this is useful for scenarios like kernel initramfs where
> > you want to copy over one or two ELFs and their dependencies w/out
> > resorting to statically linking them.  check out the --help text for
> > more details.
> 
> Would you mind a "hardlink to tree"? Would be lovely for chroot
> environments as well...

sure, that should be easy to add.  i'll add an obligatory warning about the 
accidental modification scenario.  i know some newer kernel systems (like 
yama?) have started disallowing hardlinks to files you don't own (even ones 
that aren't setuid).  the resulting error is fun & obtuse too like "EPERM".
-mike

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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

* Re: [gentoo-dev] [fyi] lddtree magic
  2013-04-10  3:10   ` Mike Frysinger
@ 2013-04-10 10:04     ` Fabio Erculiani
  2013-04-10 16:33       ` Mike Frysinger
  0 siblings, 1 reply; 13+ messages in thread
From: Fabio Erculiani @ 2013-04-10 10:04 UTC (permalink / raw
  To: gentoo-dev

It looks like you're not using a standard style guide for Python but
rather this one [1].
I suggest you to use something closer to PEP8.

[1] https://code.google.com/p/google-styleguide/

-- 
Fabio Erculiani


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

* Re: [gentoo-dev] [fyi] lddtree magic
  2013-04-10 10:04     ` Fabio Erculiani
@ 2013-04-10 16:33       ` Mike Frysinger
  2013-04-10 16:42         ` Fabio Erculiani
  0 siblings, 1 reply; 13+ messages in thread
From: Mike Frysinger @ 2013-04-10 16:33 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: Text/Plain, Size: 212 bytes --]

On Wednesday 10 April 2013 06:04:00 Fabio Erculiani wrote:
> It looks like you're not using a standard style guide for Python but
> rather this one [1].
> I suggest you to use something closer to PEP8.

no
-mike

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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

* Re: [gentoo-dev] [fyi] lddtree magic
  2013-04-10 16:33       ` Mike Frysinger
@ 2013-04-10 16:42         ` Fabio Erculiani
  2013-04-10 17:32           ` Mike Frysinger
  0 siblings, 1 reply; 13+ messages in thread
From: Fabio Erculiani @ 2013-04-10 16:42 UTC (permalink / raw
  To: gentoo-dev

On Wed, Apr 10, 2013 at 5:33 PM, Mike Frysinger <vapier@gentoo.org> wrote:
> On Wednesday 10 April 2013 06:04:00 Fabio Erculiani wrote:
>> It looks like you're not using a standard style guide for Python but
>> rather this one [1].
>> I suggest you to use something closer to PEP8.
>
> no

Good arguments! As usual I'd say.

> -mike



-- 
Fabio Erculiani


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

* Re: [gentoo-dev] [fyi] lddtree magic
  2013-04-10 16:42         ` Fabio Erculiani
@ 2013-04-10 17:32           ` Mike Frysinger
  2013-04-10 17:40             ` Fabio Erculiani
  0 siblings, 1 reply; 13+ messages in thread
From: Mike Frysinger @ 2013-04-10 17:32 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: Text/Plain, Size: 828 bytes --]

On Wednesday 10 April 2013 12:42:14 Fabio Erculiani wrote:
> On Wed, Apr 10, 2013 at 5:33 PM, Mike Frysinger wrote:
> > On Wednesday 10 April 2013 06:04:00 Fabio Erculiani wrote:
> >> It looks like you're not using a standard style guide for Python but
> >> rather this one [1].
> >> I suggest you to use something closer to PEP8.
> > 
> > no
> 
> Good arguments! As usual I'd say.

sorry, but i didn't think stating the obvious was necessary.  i authored the 
entire tool, and the one maintaining the code, so yes, i get the liberty to 
use whatever coding style pleases me.  you provide no reasoning whatsoever as 
to why PEP8 is "better".  i doubt the style choice is going make any difference 
whatsoever to contributions for people including yourself.

don't like it ?  fork it and write your own.
-mike

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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

* Re: [gentoo-dev] [fyi] lddtree magic
  2013-04-10 17:32           ` Mike Frysinger
@ 2013-04-10 17:40             ` Fabio Erculiani
  2013-04-10 17:56               ` Mike Frysinger
  0 siblings, 1 reply; 13+ messages in thread
From: Fabio Erculiani @ 2013-04-10 17:40 UTC (permalink / raw
  To: gentoo-dev

On Wed, Apr 10, 2013 at 6:32 PM, Mike Frysinger <vapier@gentoo.org> wrote:
> On Wednesday 10 April 2013 12:42:14 Fabio Erculiani wrote:
>> On Wed, Apr 10, 2013 at 5:33 PM, Mike Frysinger wrote:
>> > On Wednesday 10 April 2013 06:04:00 Fabio Erculiani wrote:
>> >> It looks like you're not using a standard style guide for Python but
>> >> rather this one [1].
>> >> I suggest you to use something closer to PEP8.
>> >
>> > no
>>
>> Good arguments! As usual I'd say.
>
> sorry, but i didn't think stating the obvious was necessary.  i authored the
> entire tool, and the one maintaining the code, so yes, i get the liberty to
> use whatever coding style pleases me.  you provide no reasoning whatsoever as
> to why PEP8 is "better".  i doubt the style choice is going make any difference
> whatsoever to contributions for people including yourself.

I guess that you're new to Python then. Anyway, mine was just an
advice, yours was just the same old rude answer.

>
> don't like it ?  fork it and write your own.
> -mike



-- 
Fabio Erculiani


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

* Re: [gentoo-dev] [fyi] lddtree magic
  2013-04-10 17:40             ` Fabio Erculiani
@ 2013-04-10 17:56               ` Mike Frysinger
  0 siblings, 0 replies; 13+ messages in thread
From: Mike Frysinger @ 2013-04-10 17:56 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: Text/Plain, Size: 1415 bytes --]

On Wednesday 10 April 2013 13:40:17 Fabio Erculiani wrote:
> On Wed, Apr 10, 2013 at 6:32 PM, Mike Frysinger wrote:
> > On Wednesday 10 April 2013 12:42:14 Fabio Erculiani wrote:
> >> On Wed, Apr 10, 2013 at 5:33 PM, Mike Frysinger wrote:
> >> > On Wednesday 10 April 2013 06:04:00 Fabio Erculiani wrote:
> >> >> It looks like you're not using a standard style guide for Python but
> >> >> rather this one [1].
> >> >> I suggest you to use something closer to PEP8.
> >> > 
> >> > no
> >> 
> >> Good arguments! As usual I'd say.
> > 
> > sorry, but i didn't think stating the obvious was necessary.  i authored
> > the entire tool, and the one maintaining the code, so yes, i get the
> > liberty to use whatever coding style pleases me.  you provide no
> > reasoning whatsoever as to why PEP8 is "better".  i doubt the style
> > choice is going make any difference whatsoever to contributions for
> > people including yourself.
> 
> I guess that you're new to Python then. Anyway, mine was just an
> advice, yours was just the same old rude answer.

i guess you haven't actually read the style guides.  the differences between 
PEP8 and the Google style guide are minor.  anyone who is dissuaded from 
making changes because of those differences most likely isn't going to 
contribute anything useful in the first place.

people who do the actual work get a say in these things.
-mike

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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

end of thread, other threads:[~2013-04-10 17:54 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-09 19:31 [gentoo-dev] [fyi] lddtree magic Mike Frysinger
2013-04-09 20:30 ` Diego Elio Pettenò
2013-04-10  3:10   ` Mike Frysinger
2013-04-10 10:04     ` Fabio Erculiani
2013-04-10 16:33       ` Mike Frysinger
2013-04-10 16:42         ` Fabio Erculiani
2013-04-10 17:32           ` Mike Frysinger
2013-04-10 17:40             ` Fabio Erculiani
2013-04-10 17:56               ` Mike Frysinger
2013-04-09 20:41 ` Samuli Suominen
2013-04-09 20:45   ` Samuli Suominen
2013-04-10  2:30     ` Mike Frysinger
2013-04-09 22:22 ` Samuli Suominen

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