microsoft / winget-pkgs

The Microsoft community Windows Package Manager manifest repository
MIT License
8.74k stars 4.56k forks source link

[Package Request]: PostgREST #189017

Open develop7 opened 2 weeks ago

develop7 commented 2 weeks ago

How can we help?

I would like someone else to build the manifest.

Please read and ensure the following

Please provide the following information

Download Page Url: https://github.com/PostgREST/postgrest/releases/latest Publisher: PostgREST.org Package Name: PostgREST Description: PostgREST is a standalone web server that turns your PostgreSQL database directly into a RESTful API. The structural constraints and permissions in the database determine the API endpoints and operations. Package Version: 12.2.3 Installer Url: https://github.com/PostgREST/postgrest/releases/download/v12.2.3/postgrest-v12.2.3-windows-x64.zip

stephengillie commented 2 weeks ago

When many dependencies could meet the need, we've been adding a note in the PR and then omitting a dependency. Should the same be done here?

develop7 commented 2 weeks ago

The ODBC provider is small enough to stick to it though. This way you'll have functioning postgrest out of the box every time, unlike, say, chocolatey (and scoop, until recently)

On Wed, Nov 6, 2024, 19:44 Stephen Gillie @.***> wrote:

When many dependencies could meet the need, we've been adding a note in the PR and then omitting a dependency. Should the same be done here?

β€” Reply to this email directly, view it on GitHub https://github.com/microsoft/winget-pkgs/issues/189017#issuecomment-2460520948, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAV6INPJUAL25MZUKVWTATZ7JPSFAVCNFSM6AAAAABRIV3G4SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINRQGUZDAOJUHA . You are receiving this because you authored the thread.Message ID: @.***>

Dragon1573 commented 2 weeks ago

Test with PostgreSQL.psqlODBC@17.00.0002 and PostgreSQL.PostgreSQL.17@17.0-1. Both of them can't provide required LIBPQ.dll for postgrest.exe. 😞

Image

develop7 commented 2 weeks ago

@Dragon1573 no idea why, but scoop makes it work somehow https://github.com/ScoopInstaller/Main/blob/master/bucket/postgrest.json#L9 (via https://github.com/ScoopInstaller/Main/pull/6212)

Dragon1573 commented 2 weeks ago

Scoop is "script-based" package manager. It can perform "black magic" with pre/post-install scripts. WinGet and Chocolatey can't perform this behavior.

Although adding PostgreSQL.psqlodbc as dependency, it still not work. 😞

Image

develop7 commented 2 weeks ago

it could indeed, but it doesn't β€”Β it just extracts files from .msi installer and, I assume, puts them aside to postgrest.exe. Is there some well-known directory in Windows to put DLLs in, so they will be available for random executables to import when required?

Dragon1573 commented 2 weeks ago

There contains a special property as follows:

// https://github.com/ScoopInstaller/Main/blob/d8813f59adf972a9f39c50f99fa666f7bdeacf0d/bucket/psqlodbc.json#L17
{
    "env_add_path": "bin"
}

This configuration instruct Scoop adding the bin/ directory into $env:PATH variable during "post-install" scenario.

According to Komac, manifest of PostgreSQL.psqlODBC uses Burn EXE and WiX MSI installer type. All "system modifications" are done by the installer file itself. WinGet will do nothing with the installer. The bin/ directory of PostgreSQL.psqlODBC should be added to $env:PATH environment variable by installer file itself.

Image

develop7 commented 2 weeks ago

I see. Thank you for the clarification.

Dragon1573 commented 2 weeks ago

[!TIP]

If I manually add $env:PROGRAMFILES\psqlODBC\1700\bin to $env:PATH, then postgrest.exe can be launched as expected.

I didn't install and run PostgreSQL server in the Windows Sandbox instance, so it can't connect to localhost:5432. It's expected.

Image