{"thread":{"id":"63341","subject":"[PATCH] meson: allow customize perl installation path","startedAt":"2025-04-24T15:16:25Z","lastAt":"2025-05-08T14:34:32Z","messageCount":4,"participants":["Đoàn Trần Công Danh","Patrick Steinhardt","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"516676","messageId":"80a2a6ce7c6b05323cf931cdc20d4decb6270002.1745507677.git.congdanhqx@gmail.com","threadId":"63341","inReplyTo":null,"subject":"[PATCH] meson: allow customize perl installation path","fromName":"Đoàn Trần Công Danh","fromEmail":"congdanhqx@gmail.com","sentAt":"2025-04-24T15:16:18Z","receivedAt":"2025-04-24T15:16:25Z","isPatch":true,"sender":{"key":"congdanhqx@gmail.com","avatar":"https://avatars.githubusercontent.com/u/42673067?v=4"},"body":"Some distros, notably Fedora, want to install non-core Perl libraries\ninto specific directory, namely /usr/share/perl5/vendor_perl.\n\nThe Makefile build system allows this by overriding perllibdir variable,\nlet's make meson works on par with our Makefile.\n\nSigned-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>\n---\n meson.build                        | 9 +++++++--\n meson_options.txt                  | 5 +++++\n perl/FromCPAN/Mail/meson.build     | 2 +-\n perl/FromCPAN/meson.build          | 2 +-\n perl/Git/LoadCPAN/Mail/meson.build | 2 +-\n perl/Git/LoadCPAN/meson.build      | 2 +-\n perl/Git/SVN/Memoize/meson.build   | 2 +-\n perl/Git/SVN/meson.build           | 2 +-\n perl/Git/meson.build               | 2 +-\n perl/meson.build                   | 2 +-\n 10 files changed, 20 insertions(+), 10 deletions(-)\n\ndiff --git a/meson.build b/meson.build\nindex 223384b130b62..830deb9a069a6 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -1826,14 +1826,19 @@ if perl_features_enabled\n     perl_header_template = 'perl/header_templates/runtime_prefix.template.pl'\n   endif\n \n+  perllibdir = get_option('perllibdir')\n+  if perllibdir == ''\n+    perllibdir = get_option('datadir') / 'perl5'\n+  endif\n+\n   perl_header = configure_file(\n     input: perl_header_template,\n     output: 'GIT-PERL-HEADER',\n     configuration: {\n       'GITEXECDIR_REL': get_option('libexecdir') / 'git-core',\n-      'PERLLIBDIR_REL': get_option('datadir') / 'perl5',\n+      'PERLLIBDIR_REL': perllibdir,\n       'LOCALEDIR_REL': get_option('datadir') / 'locale',\n-      'INSTLIBDIR': get_option('datadir') / 'perl5',\n+      'INSTLIBDIR': perllibdir,\n       'PATHSEP': pathsep,\n     },\n   )\ndiff --git a/meson_options.txt b/meson_options.txt\nindex 78d172a74019a..43f3f2d234a8e 100644\n--- a/meson_options.txt\n+++ b/meson_options.txt\n@@ -1,3 +1,8 @@\n+# Configuration for Git installation\n+\n+option('perllibdir', type: 'string', value: '',\n+  description: 'Directory to install perl lib to. Default to <datadir>/perl5')\n+\n # Configuration for how Git behaves at runtime.\n option('default_pager', type: 'string', value: 'less',\n   description: 'Fall-back pager.')\ndiff --git a/perl/FromCPAN/Mail/meson.build b/perl/FromCPAN/Mail/meson.build\nindex b4ff2fc0b24c9..467507c5e690e 100644\n--- a/perl/FromCPAN/Mail/meson.build\n+++ b/perl/FromCPAN/Mail/meson.build\n@@ -3,6 +3,6 @@ test_dependencies += custom_target(\n   output: 'Address.pm',\n   command: generate_perl_command,\n   install: true,\n-  install_dir: get_option('datadir') / 'perl5/FromCPAN/Mail',\n+  install_dir: perllibdir / 'FromCPAN/Mail',\n   depends: [git_version_file],\n )\ndiff --git a/perl/FromCPAN/meson.build b/perl/FromCPAN/meson.build\nindex 1f9ea6ce8e844..720c60283d89b 100644\n--- a/perl/FromCPAN/meson.build\n+++ b/perl/FromCPAN/meson.build\n@@ -3,7 +3,7 @@ test_dependencies += custom_target(\n   output: 'Error.pm',\n   command: generate_perl_command,\n   install: true,\n-  install_dir: get_option('datadir') / 'perl5/FromCPAN',\n+  install_dir: perllibdir / 'FromCPAN',\n   depends: [git_version_file],\n )\n \ndiff --git a/perl/Git/LoadCPAN/Mail/meson.build b/perl/Git/LoadCPAN/Mail/meson.build\nindex 89cde56be8491..05a5770560d3d 100644\n--- a/perl/Git/LoadCPAN/Mail/meson.build\n+++ b/perl/Git/LoadCPAN/Mail/meson.build\n@@ -3,6 +3,6 @@ test_dependencies += custom_target(\n   output: 'Address.pm',\n   command: generate_perl_command,\n   install: true,\n-  install_dir: get_option('datadir') / 'perl5/Git/LoadCPAN/Mail',\n+  install_dir: perllibdir / 'Git/LoadCPAN/Mail',\n   depends: [git_version_file],\n )\ndiff --git a/perl/Git/LoadCPAN/meson.build b/perl/Git/LoadCPAN/meson.build\nindex 1ee915c650517..b975d4972631d 100644\n--- a/perl/Git/LoadCPAN/meson.build\n+++ b/perl/Git/LoadCPAN/meson.build\n@@ -3,7 +3,7 @@ test_dependencies += custom_target(\n   output: 'Error.pm',\n   command: generate_perl_command,\n   install: true,\n-  install_dir: get_option('datadir') / 'perl5/Git/LoadCPAN',\n+  install_dir: perllibdir / 'Git/LoadCPAN',\n   depends: [git_version_file],\n )\n \ndiff --git a/perl/Git/SVN/Memoize/meson.build b/perl/Git/SVN/Memoize/meson.build\nindex 233ec670d7de9..4c589b30c387a 100644\n--- a/perl/Git/SVN/Memoize/meson.build\n+++ b/perl/Git/SVN/Memoize/meson.build\n@@ -3,6 +3,6 @@ test_dependencies += custom_target(\n   output: 'YAML.pm',\n   command: generate_perl_command,\n   install: true,\n-  install_dir: get_option('datadir') / 'perl5/Git/SVN',\n+  install_dir: perllibdir / 'Git/SVN',\n   depends: [git_version_file],\n )\ndiff --git a/perl/Git/SVN/meson.build b/perl/Git/SVN/meson.build\nindex 44abaf42b7cea..8858985fe8660 100644\n--- a/perl/Git/SVN/meson.build\n+++ b/perl/Git/SVN/meson.build\n@@ -13,7 +13,7 @@ foreach source : [\n     output: source,\n     command: generate_perl_command,\n     install: true,\n-    install_dir: get_option('datadir') / 'perl5/Git/SVN',\n+    install_dir: perllibdir / 'Git/SVN',\n     depends: [git_version_file],\n   )\n endforeach\ndiff --git a/perl/Git/meson.build b/perl/Git/meson.build\nindex b21fa5591e7e7..a61b7b1f4abf2 100644\n--- a/perl/Git/meson.build\n+++ b/perl/Git/meson.build\n@@ -10,7 +10,7 @@ foreach source : [\n     output: source,\n     command: generate_perl_command,\n     install: true,\n-    install_dir: get_option('datadir') / 'perl5/Git',\n+    install_dir: perllibdir / 'Git',\n     depends: [git_version_file],\n   )\n endforeach\ndiff --git a/perl/meson.build b/perl/meson.build\nindex 2d4ab1c4a986f..3c66b007eaad9 100644\n--- a/perl/meson.build\n+++ b/perl/meson.build\n@@ -3,7 +3,7 @@ test_dependencies += custom_target(\n   output: 'Git.pm',\n   command: generate_perl_command,\n   install: true,\n-  install_dir: get_option('datadir') / 'perl5',\n+  install_dir: perllibdir,\n   depends: [git_version_file],\n )\n \n-- \n2.49.0.395.g12beb8f557ceb\n\n"},{"id":"516733","messageId":"aAsq4g_ddLZlKpVg@pks.im","threadId":"63341","inReplyTo":"80a2a6ce7c6b05323cf931cdc20d4decb6270002.1745507677.git.congdanhqx@gmail.com","subject":"Re: [PATCH] meson: allow customize perl installation path","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2025-04-25T06:25:38Z","receivedAt":"2025-04-25T06:25:48Z","isPatch":true,"sender":{"key":"ps@pks.im","avatar":"https://avatars.githubusercontent.com/u/4056630?v=4"},"body":"On Thu, Apr 24, 2025 at 10:16:18PM +0700, Đoàn Trần Công Danh wrote:\n> diff --git a/meson.build b/meson.build\n> index 223384b130b62..830deb9a069a6 100644\n> --- a/meson.build\n> +++ b/meson.build\n> @@ -1826,14 +1826,19 @@ if perl_features_enabled\n>      perl_header_template = 'perl/header_templates/runtime_prefix.template.pl'\n>    endif\n>  \n> +  perllibdir = get_option('perllibdir')\n> +  if perllibdir == ''\n> +    perllibdir = get_option('datadir') / 'perl5'\n> +  endif\n\nMakes sense. We try to do the \"right thing\" by default, but let the\nusers override the location.\n\n>    perl_header = configure_file(\n>      input: perl_header_template,\n>      output: 'GIT-PERL-HEADER',\n>      configuration: {\n>        'GITEXECDIR_REL': get_option('libexecdir') / 'git-core',\n> -      'PERLLIBDIR_REL': get_option('datadir') / 'perl5',\n> +      'PERLLIBDIR_REL': perllibdir,\n>        'LOCALEDIR_REL': get_option('datadir') / 'locale',\n> -      'INSTLIBDIR': get_option('datadir') / 'perl5',\n> +      'INSTLIBDIR': perllibdir,\n>        'PATHSEP': pathsep,\n>      },\n>    )\n> diff --git a/meson_options.txt b/meson_options.txt\n> index 78d172a74019a..43f3f2d234a8e 100644\n> --- a/meson_options.txt\n> +++ b/meson_options.txt\n> @@ -1,3 +1,8 @@\n> +# Configuration for Git installation\n> +\n\nPedantic nit: let's drop this empty newline, we don't have it for any of\nthe other sections, either.\n\n> +option('perllibdir', type: 'string', value: '',\n> +  description: 'Directory to install perl lib to. Default to <datadir>/perl5')\n\ns/perl lib/the Perl library/\ns/Default/Defaults/\n\nThe remainder of this patch looks good to me, thanks!\n\nPatrick\n"},{"id":"517536","messageId":"a9d431944b6d94e0eb25535c061fc226a7fefa9e.1746692662.git.congdanhqx@gmail.com","threadId":"63341","inReplyTo":"80a2a6ce7c6b05323cf931cdc20d4decb6270002.1745507677.git.congdanhqx@gmail.com","subject":"[PATCH v2] meson: allow customize perl installation path","fromName":"Đoàn Trần Công Danh","fromEmail":"congdanhqx@gmail.com","sentAt":"2025-05-08T08:24:40Z","receivedAt":"2025-05-08T08:24:48Z","isPatch":true,"sender":{"key":"congdanhqx@gmail.com","avatar":"https://avatars.githubusercontent.com/u/42673067?v=4"},"body":"Some distros, notably Fedora, want to install non-core Perl libraries\ninto specific directory, namely /usr/share/perl5/vendor_perl.\n\nThe Makefile build system allows this by overriding perllibdir variable,\nlet's make meson works on par with our Makefile.\n\nSigned-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>\n---\n meson.build                        | 9 +++++++--\n meson_options.txt                  | 4 ++++\n perl/FromCPAN/Mail/meson.build     | 2 +-\n perl/FromCPAN/meson.build          | 2 +-\n perl/Git/LoadCPAN/Mail/meson.build | 2 +-\n perl/Git/LoadCPAN/meson.build      | 2 +-\n perl/Git/SVN/Memoize/meson.build   | 2 +-\n perl/Git/SVN/meson.build           | 2 +-\n perl/Git/meson.build               | 2 +-\n perl/meson.build                   | 2 +-\n 10 files changed, 19 insertions(+), 10 deletions(-)\n\ndiff --git a/meson.build b/meson.build\nindex efe2871c9dba1..5155aa726b20e 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -1825,14 +1825,19 @@ if perl_features_enabled\n     perl_header_template = 'perl/header_templates/runtime_prefix.template.pl'\n   endif\n \n+  perllibdir = get_option('perllibdir')\n+  if perllibdir == ''\n+    perllibdir = get_option('datadir') / 'perl5'\n+  endif\n+\n   perl_header = configure_file(\n     input: perl_header_template,\n     output: 'GIT-PERL-HEADER',\n     configuration: {\n       'GITEXECDIR_REL': get_option('libexecdir') / 'git-core',\n-      'PERLLIBDIR_REL': get_option('datadir') / 'perl5',\n+      'PERLLIBDIR_REL': perllibdir,\n       'LOCALEDIR_REL': get_option('datadir') / 'locale',\n-      'INSTLIBDIR': get_option('datadir') / 'perl5',\n+      'INSTLIBDIR': perllibdir,\n       'PATHSEP': pathsep,\n     },\n   )\ndiff --git a/meson_options.txt b/meson_options.txt\nindex 78d172a74019a..cc19918a7ccfa 100644\n--- a/meson_options.txt\n+++ b/meson_options.txt\n@@ -1,3 +1,7 @@\n+# Configuration for Git installation\n+option('perllibdir', type: 'string', value: '',\n+  description: 'Directory to install perl lib to. Defaults to <datadir>/perl5')\n+\n # Configuration for how Git behaves at runtime.\n option('default_pager', type: 'string', value: 'less',\n   description: 'Fall-back pager.')\ndiff --git a/perl/FromCPAN/Mail/meson.build b/perl/FromCPAN/Mail/meson.build\nindex b4ff2fc0b24c9..467507c5e690e 100644\n--- a/perl/FromCPAN/Mail/meson.build\n+++ b/perl/FromCPAN/Mail/meson.build\n@@ -3,6 +3,6 @@ test_dependencies += custom_target(\n   output: 'Address.pm',\n   command: generate_perl_command,\n   install: true,\n-  install_dir: get_option('datadir') / 'perl5/FromCPAN/Mail',\n+  install_dir: perllibdir / 'FromCPAN/Mail',\n   depends: [git_version_file],\n )\ndiff --git a/perl/FromCPAN/meson.build b/perl/FromCPAN/meson.build\nindex 1f9ea6ce8e844..720c60283d89b 100644\n--- a/perl/FromCPAN/meson.build\n+++ b/perl/FromCPAN/meson.build\n@@ -3,7 +3,7 @@ test_dependencies += custom_target(\n   output: 'Error.pm',\n   command: generate_perl_command,\n   install: true,\n-  install_dir: get_option('datadir') / 'perl5/FromCPAN',\n+  install_dir: perllibdir / 'FromCPAN',\n   depends: [git_version_file],\n )\n \ndiff --git a/perl/Git/LoadCPAN/Mail/meson.build b/perl/Git/LoadCPAN/Mail/meson.build\nindex 89cde56be8491..05a5770560d3d 100644\n--- a/perl/Git/LoadCPAN/Mail/meson.build\n+++ b/perl/Git/LoadCPAN/Mail/meson.build\n@@ -3,6 +3,6 @@ test_dependencies += custom_target(\n   output: 'Address.pm',\n   command: generate_perl_command,\n   install: true,\n-  install_dir: get_option('datadir') / 'perl5/Git/LoadCPAN/Mail',\n+  install_dir: perllibdir / 'Git/LoadCPAN/Mail',\n   depends: [git_version_file],\n )\ndiff --git a/perl/Git/LoadCPAN/meson.build b/perl/Git/LoadCPAN/meson.build\nindex 1ee915c650517..b975d4972631d 100644\n--- a/perl/Git/LoadCPAN/meson.build\n+++ b/perl/Git/LoadCPAN/meson.build\n@@ -3,7 +3,7 @@ test_dependencies += custom_target(\n   output: 'Error.pm',\n   command: generate_perl_command,\n   install: true,\n-  install_dir: get_option('datadir') / 'perl5/Git/LoadCPAN',\n+  install_dir: perllibdir / 'Git/LoadCPAN',\n   depends: [git_version_file],\n )\n \ndiff --git a/perl/Git/SVN/Memoize/meson.build b/perl/Git/SVN/Memoize/meson.build\nindex 233ec670d7de9..4c589b30c387a 100644\n--- a/perl/Git/SVN/Memoize/meson.build\n+++ b/perl/Git/SVN/Memoize/meson.build\n@@ -3,6 +3,6 @@ test_dependencies += custom_target(\n   output: 'YAML.pm',\n   command: generate_perl_command,\n   install: true,\n-  install_dir: get_option('datadir') / 'perl5/Git/SVN',\n+  install_dir: perllibdir / 'Git/SVN',\n   depends: [git_version_file],\n )\ndiff --git a/perl/Git/SVN/meson.build b/perl/Git/SVN/meson.build\nindex 44abaf42b7cea..8858985fe8660 100644\n--- a/perl/Git/SVN/meson.build\n+++ b/perl/Git/SVN/meson.build\n@@ -13,7 +13,7 @@ foreach source : [\n     output: source,\n     command: generate_perl_command,\n     install: true,\n-    install_dir: get_option('datadir') / 'perl5/Git/SVN',\n+    install_dir: perllibdir / 'Git/SVN',\n     depends: [git_version_file],\n   )\n endforeach\ndiff --git a/perl/Git/meson.build b/perl/Git/meson.build\nindex b21fa5591e7e7..a61b7b1f4abf2 100644\n--- a/perl/Git/meson.build\n+++ b/perl/Git/meson.build\n@@ -10,7 +10,7 @@ foreach source : [\n     output: source,\n     command: generate_perl_command,\n     install: true,\n-    install_dir: get_option('datadir') / 'perl5/Git',\n+    install_dir: perllibdir / 'Git',\n     depends: [git_version_file],\n   )\n endforeach\ndiff --git a/perl/meson.build b/perl/meson.build\nindex 2d4ab1c4a986f..3c66b007eaad9 100644\n--- a/perl/meson.build\n+++ b/perl/meson.build\n@@ -3,7 +3,7 @@ test_dependencies += custom_target(\n   output: 'Git.pm',\n   command: generate_perl_command,\n   install: true,\n-  install_dir: get_option('datadir') / 'perl5',\n+  install_dir: perllibdir,\n   depends: [git_version_file],\n )\n \n\nRange-diff against v1:\n1:  14e38695adbd6 ! 1:  a9d431944b6d9 meson: allow customize perl installation path\n    @@ meson.build: if perl_features_enabled\n      ## meson_options.txt ##\n     @@\n     +# Configuration for Git installation\n    -+\n     +option('perllibdir', type: 'string', value: '',\n    -+  description: 'Directory to install perl lib to. Default to <datadir>/perl5')\n    ++  description: 'Directory to install perl lib to. Defaults to <datadir>/perl5')\n     +\n      # Configuration for how Git behaves at runtime.\n      option('default_pager', type: 'string', value: 'less',\n"},{"id":"517556","messageId":"xmqqh61v893e.fsf@gitster.g","threadId":"63341","inReplyTo":"a9d431944b6d94e0eb25535c061fc226a7fefa9e.1746692662.git.congdanhqx@gmail.com","subject":"Re: [PATCH v2] meson: allow customize perl installation path","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-05-08T14:34:29Z","receivedAt":"2025-05-08T14:34:32Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Đoàn Trần Công Danh <congdanhqx@gmail.com> writes:\n\n> Some distros, notably Fedora, want to install non-core Perl libraries\n> into specific directory, namely /usr/share/perl5/vendor_perl.\n>\n> The Makefile build system allows this by overriding perllibdir variable,\n> let's make meson works on par with our Makefile.\n>\n> Signed-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>\n> ---\n\nWill queue.  The incremental since the previous iteration looks\nexactly as Patrick suggested, which looks good to me, too.\n\nThanks.\n\n> Range-diff against v1:\n> 1:  14e38695adbd6 ! 1:  a9d431944b6d9 meson: allow customize perl installation path\n>     @@ meson.build: if perl_features_enabled\n>       ## meson_options.txt ##\n>      @@\n>      +# Configuration for Git installation\n>     -+\n>      +option('perllibdir', type: 'string', value: '',\n>     -+  description: 'Directory to install perl lib to. Default to <datadir>/perl5')\n>     ++  description: 'Directory to install perl lib to. Defaults to <datadir>/perl5')\n>      +\n>       # Configuration for how Git behaves at runtime.\n>       option('default_pager', type: 'string', value: 'less',\n"}]}