Re: Lessons from commit fest - Mailing list pgsql-hackers
From | Andrew Dunstan |
---|---|
Subject | Re: Lessons from commit fest |
Date | |
Msg-id | 4808CACB.7040108@dunslane.net Whole thread Raw |
In response to | Re: Lessons from commit fest (Tom Lane <tgl@sss.pgh.pa.us>) |
Responses |
Re: Lessons from commit fest
|
List | pgsql-hackers |
Tom Lane wrote: > Alvaro Herrera <alvherre@alvh.no-ip.org> writes: > >> Greg Smith wrote: >> >>> Scraping that HTML seems like it would be pretty straightforward. >>> > > >> It's awfully incomplete. Bruce said to me the other day on IM that the >> list he was getting with the Linux version of find_typedef was something >> like 2800 symbols. I checked the doxygen list and I only see about a >> dozen for each letter, so there's a whole lot missing here. >> > > [ click click... ] A quick grep counts 2154 occurrences of the word > 'typedef' in our tree. Some of them are no doubt false hits > (documentation etc), but on the other hand you need to add typedefs > coming from system headers. > > doxygen's 200-some is clearly an order of magnitude too low, but I > wonder whether Bruce's list hasn't got some false hits ... > > > 2800 does seem a bit high. My buildfarm member dungbeetle just found 2482 on a build that is only missing the optional pam, bonjour and gssapi config options. Here's the list already loaded to the server: http://www.pgbuildfarm.org/cgi-bin/show_stage_log.pl?nm=dungbeetle&dt=2008-04-18%20160103&stg=typedefs I had to change the logic some - the stuff in the find_typedefs script seemed to be quite broken on my Linux box (fairly vanilla fc6). The relevant perl code is below. I'll see about running this with Windows and Cygwin and I can even try OSX. cheers andrew sub find_typedefs { my @err = `objdump -W 2>&1`; my %syms; my @dumpout; my @flds; foreach my $bin (glob("$installdir/bin/*"), glob("$installdir/lib/*"), glob("$installdir/lib/postgresql/*")) { next if $bin=~ m!bin/(ipcclean|pltcl_)!; next unless -f $bin; if (@err == 1) # Linux { @dumpout = `objdump-W $bin 2>/dev/null | egrep -A3 '(DW_TAG_typedef|DW_TAG_structure_type|DW_TAG_union_type)' 2>/dev/null`; foreach (@dumpout) { @flds = split; next if ($flds[0] ne 'DW_AT_name' || $flds[-1] =~ /^DW_FORM_str/); $syms{$flds[-1]} =1; } } else { @dumpout = `objdump--stabs $bin 2>/dev/null`; foreach (@dumpout) { @flds = split; nextif ($flds[1] ne 'LSYM' || $flds[6] !~ /([^:]+):[tT]/); $syms{$1} =1; } } } my @badsyms = grep { /\s/ } keys %syms; push(@badsyms,'date','interval','timestamp','ANY'); delete @syms{@badsyms}; my @goodsyms = sort keys %syms; map { s/$/\n/; } @goodsyms; writelog('typedefs',\@goodsyms); }
pgsql-hackers by date: