windows resource files, bugs and what do we actually want

From: Andres Freund <andres(at)anarazel(dot)de>
To: pgsql-hackers(at)postgresql(dot)org, Magnus Hagander <magnus(at)hagander(dot)net>, 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: windows resource files, bugs and what do we actually want
Date: 2022-08-29 22:13:14
Message-ID: 20220829221314.pepagj3i5mj43niy@awork3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

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?

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.

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.

Greetings,

Andres Freund

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Nathan Bossart 2022-08-29 22:24:49 introduce bufmgr hooks
Previous Message Nathan Bossart 2022-08-29 22:04:19 Re: replacing role-level NOINHERIT with a grant-level option