Bug: The "directory" control parameter does not work

Started by David E. Wheeleralmost 2 years ago3 messages
#1David E. Wheeler
david@justatheory.com

Hackers,

I wanted to try to customize the subdirectory for an extension. The docs[1]https://www.postgresql.org/docs/16/extend-extensions.html say:

directory (string)

The directory containing the extension's SQL script file(s). Unless an absolute path is given, the name is relative to the installation's SHAREDIR directory. The default behavior is equivalent to specifying directory = 'extension'.

[1]: https://www.postgresql.org/docs/16/extend-extensions.html

But it doesn’t seem to work. I tried this experiment:

❯ pg_config --version
PostgreSQL 16.1

❯ git clone git@github.com:theory/kv-pair.git
❯ cd kv-pair
❯ echo directory = 'blah' >> pair.control
❯ cat pair.control
# pair extension
comment = 'A key/value pair data type'
default_version = '0.1.2'
module_pathname = '$libdir/pair'
relocatable = true
directory = blah

❯ make install
cp sql/pair.sql sql/pair--0.1.2.sql
/opt/homebrew/bin/gmkdir -p '/Users/david/.pgenv/pgsql-16.1/share/extension'
/opt/homebrew/bin/gmkdir -p '/Users/david/.pgenv/pgsql-16.1/share/extension'
/opt/homebrew/bin/gmkdir -p '/Users/david/.pgenv/pgsql-16.1/share/doc/extension'
/opt/homebrew/bin/ginstall -c -m 644 .//pair.control '/Users/david/.pgenv/pgsql-16.1/share/extension/'
/opt/homebrew/bin/ginstall -c -m 644 .//sql/pair--unpackaged--0.1.2.sql '/Users/david/.pgenv/pgsql-16.1/share/extension/'
/opt/homebrew/bin/ginstall -c -m 644 .//doc/pair.md '/Users/david/.pgenv/pgsql-16.1/share/doc/extension/‘

❯ find ~/.pgenv/pgsql-16.1/ -name '*pair*.*'
/Users/david/.pgenv/pgsql-16.1//include/server/lib/pairingheap.h
/Users/david/.pgenv/pgsql-16.1//share/extension/pair--unpackaged--0.1.2.sql
/Users/david/.pgenv/pgsql-16.1//share/extension/pair.control
/Users/david/.pgenv/pgsql-16.1//share/doc/extension/pair.md

I see two problems:

1. pair--0.1.2.sql is not installed. It does install without `directory` set.
2. pair--unpackaged--0.1.2.sql is installed, but not in a `blah` directory. Shouldn’t it be?

Am I missing something?

Best,

David

#2David E. Wheeler
david@justatheory.com
In reply to: David E. Wheeler (#1)
Re: Bug: The "directory" control parameter does not work

On Jan 26, 2024, at 4:40 PM, David E. Wheeler <david@justatheory.com> wrote:

But it doesn’t seem to work. I tried this experiment:

I made a simpler test case here:

https://github.com/theory/test-extension-directory

Not the difference between actual and expected output.

Best,

David

#3David E. Wheeler
david@justatheory.com
In reply to: David E. Wheeler (#2)
Re: Bug: The "directory" control parameter does not work

On Jan 26, 2024, at 5:05 PM, David E. Wheeler <david@justatheory.com> wrote:

I made a simpler test case here:

https://github.com/theory/test-extension-directory

Not the difference between actual and expected output.

Bah! Need to also set `MODULEDIR = extension/click` and then it works.

D