Re: windows resource files, bugs and what do we actually want

From: Magnus Hagander <magnus(at)hagander(dot)net>
To: Andres Freund <andres(at)anarazel(dot)de>
Cc: pgsql-hackers(at)postgresql(dot)org, Andrew Dunstan <andrew(at)dunslane(dot)net>, Peter Eisentraut <peter(at)eisentraut(dot)org>, Kyotaro HORIGUCHI <horiguchi(dot)kyotaro(at)lab(dot)ntt(dot)co(dot)jp>
Subject: Re: windows resource files, bugs and what do we actually want
Date: 2022-09-01 20:34:07
Message-ID: CABUevEy68yx5svHLtqnjxiXBw1yj99EoQo78uTM4QC-Fu7_VoA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, Aug 30, 2022 at 12:13 AM Andres Freund <andres(at)anarazel(dot)de> wrote:

> Hi,
>
> A few things about the windows resource files we generate
>
> 1) For make based builds, all libraries that are built with MODULES rather
> than MODULES_big have the wrong "FILETYPE", because Makefile.win32
> checks
> $(shlib), which is only set for MODULES_big.
>
> This used to be even more widely wrong until recently:
>
> commit 16a4a3d59cd5574fdc697ea16ef5692ce34c54d5
> Author: Peter Eisentraut <peter(at)eisentraut(dot)org>
> Date: 2020-01-15 10:15:06 +0100
>
> Remove libpq.rc, use win32ver.rc for libpq
>
> Afaict before that we only set it correctly for pgevent.
>
>
> 2) For make base builds, We only set InternalName, OriginalFileName when
> $shlib is set, but InternalName, OriginalFilename are required.
>
>
> https://docs.microsoft.com/en-us/windows/win32/menurc/versioninfo-resource
>
>
> 3) We don't add an icon to postgres ("This is a daemon process, which is
> why
> it is not labeled as an executable"), but we do add icons to several
> libraries, at least snowball, pgevent, libpq.
>
> We should probably just remove the icon from the libraries?
>

Agreed, adding it to libraries seems plain wrong.

4) We include the date, excluding 0 for some mysterious reason, in the
> version
> number. This seems to unnecessarily contribute to making the build not
> reproducible. Hails from long ago:
>
> commit 9af932075098bd3c143993386288a634d518713c
> Author: Bruce Momjian <bruce(at)momjian(dot)us>
> Date: 2004-12-19 02:16:31 +0000
>
> Add Win32 version stamps that increment each day for proper SYSTEM32
> DLL pginstaller installs.
>

This is obviously far too long ago for me to *actually* remember, but I
think the idea was to make it work with snapshot installers. As they would
only replace the binary if the version number was newer, so for snapshots
it would be useful to have it always upgrade.

Doing it for release builds seem a lot less useful.

5) We have a PGFILEDESC for (nearly?) every binary/library. They largely
> don't
> seem more useful descriptions than the binary's name. Why don't we just
> drop most of them and just set the description as something like
> "PostgreSQL $name (binary|library)"? I doubt anybody ever looks into
> these
> details except to perhaps check the version number or such.
>

At least back in the days, a lot of software inventory programs would
scrape this information into corporate-wide databases to keep track of what
was in use across enterprises. I have no idea if people still do that or if
it's all just checksums+databases now, but that was one reason back in the
days to put it there.

But yes, setting the description per your suggestion would work equally
well for that, and would make things more consistent.

--
Magnus Hagander
Me: https://www.hagander.net/ <http://www.hagander.net/>
Work: https://www.redpill-linpro.com/ <http://www.redpill-linpro.com/>

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Nathan Bossart 2022-09-01 20:57:29 Re: allowing for control over SET ROLE
Previous Message Jeff Davis 2022-09-01 20:34:06 Re: pg_auth_members.grantor is bunk