Re: [GENERAL] Symbols and versioning of binary releases; running a symbol server - Mailing list pgsql-hackers

From Craig Ringer
Subject Re: [GENERAL] Symbols and versioning of binary releases; running a symbol server
Date
Msg-id 4DF9DB6C.7000603@postnewspapers.com.au
Whole thread Raw
In response to Re: [GENERAL] Symbols and versioning of binary releases; running a symbol server  (Magnus Hagander <magnus@hagander.net>)
Responses Re: Re: [GENERAL] Symbols and versioning of binary releases; running a symbol server
List pgsql-hackers
On 16/06/2011 2:47 PM, Magnus Hagander wrote:

> We could (once we've figured out why it's wrong) put that number in
> the version string as well. Or some other number - if we can pick a
> good one.
>
> I don't think the EDB installers should have a *different* string than
> what you'd get if you built the same thing manually...

In this case a different (or additional) string for EDB releases is 
exactly what I'm after - a string that uniquely identifies a release 
made with an EDB installer, so that "8.4.2-1" can be reliably identified 
as separate from "8.4.2-2" and separate again from a hand-built Pg or a 
.zip release.

Maybe an attribute other than File Version can be used, as custom 
attributes can IIRC be defined easily.

That said, it turns out it doesn't matter much if you have a proper 
symbols cache maintained by symstore.exe . It just figures it out based 
on the hash of the binary, so you don't need to know exactly what 
release you're using.

>> Even better would be to put zipped symbols directories onto the EDB download
>> site, arranged by Pg version. Bonus points for having symlinks from the
>
> Or right alongside the downloads themselves.

Well, they're already in the installer bundles. It'd just be nice to 
have an easily browsed directory of all the old versions, one that 
didn't require downloading and unpacking the installer for that version.

To download 8.4.2-2 at all I had to go to download the latest EDB 
release, note the URL and play substitution games. Maybe I just didn't 
find the "old versions" link that'll turn out to be lurking somewhere.

Again, though, a proper symbols server would pretty much take care of 
this problem.

> Hmm. That site talks about sharing them over a windows fileshar,e I
> doubt anybody wants to do that publically.

Oops.

The Microsoft symbol server serves over HTTP and I hadn't noticed that 
the proposed method in that article was SMB as I was rushing off to work 
when I finished that post.

It looks like running your own symbol over http is simple, though. Just 
expose the directory tree created by symstore.exe over http. No 
Windows-specific stuff required. I just tested it out with a local 
Apache instance and it works fine.

Most instructions talk about symproxy.exe but it turns out you don't 
need that unless you want to run a proxy for Microsoft's symbol server. 
That's is undesirable and unnecessary in a public symbol server.

It'd be pretty trivial to rsync a copy of the symbols directory created 
by symstore.exe from the build host over to a public web server, so 
offering an http symbol server looks quite painless.

As for adding the symbols, that just needs to be part of the release 
process, such that an EDB release can't get to the download page without 
first having had its symbols added to the store.

The Windows "symstore" command from Debugging Tools for Windows is 
requried to update the symbol store. It's invoked as:

C:\Program Files\PostgreSQL\8.4>symstore add /s 
"C:\Users\Craig\Developer\PgSymbols" /t PostgreSQL /v "9.0.0-1" 
/compress /r /f "C:\Program Files\PostgreSQL\9.0"

to store to a local symbol store C:\Users\Craig\Developer\PgSymbols . If 
used for a public server that would be a local or UNC path to a 
directory that was getting rsync'd to a public web server instead.

-- 
Craig Ringer

Tech-related writing at http://soapyfrogs.blogspot.com/


pgsql-hackers by date:

Previous
From: Alexander Korotkov
Date:
Subject: Re: WIP: Fast GiST index build
Next
From: Peter Eisentraut
Date:
Subject: Re: .gitignore for some of cygwin files