Skip to content

Commit 141c448

Browse files
committed
Fix some runstatedir/localstatedir issues in generated files
Autoconf before 2.70 doesn't have the --runstatedir configure option yet so this is installation consistency adjustment for the future to have the proper paths set. Here still the CMake GNUInstallDirs special cases adjustments need to be done to have this working properly.
1 parent 103d059 commit 141c448

File tree

5 files changed

+84
-44
lines changed

5 files changed

+84
-44
lines changed

bin/check-cmake.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -708,7 +708,7 @@ function checkAll(array $options): int
708708
{
709709
$status = 0;
710710

711-
output($options['script'] . ': Working tree ' . $options['path']);
711+
output($options['script'] . ': Working tree ' . realpath($options['path']));
712712

713713
output($options['script'] . ': Checking CMake modules');
714714
$allCMakeFiles = getAllCMakeFiles($options['path']);

cmake/cmake/modules/PHP/ConfigureFile.cmake

Lines changed: 32 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ The following function is exposed:
1212
1313
```cmake
1414
php_configure_file(
15-
<template-file>
16-
<output-file>
15+
<INPUT <template-file>|CONTENT <template-content>>
16+
OUTPUT <output-file>
1717
[VARIABLES [<variable> <value>] ...]
1818
)
1919
```
@@ -138,23 +138,31 @@ endfunction()
138138
function(php_configure_file)
139139
cmake_parse_arguments(
140140
PARSE_ARGV
141-
2
142-
parsed # prefix
143-
"" # options
144-
"" # one-value keywords
145-
"VARIABLES" # multi-value keywords
141+
0
142+
parsed # prefix
143+
"" # options
144+
"INPUT;CONTENT;OUTPUT" # one-value keywords
145+
"VARIABLES" # multi-value keywords
146146
)
147147

148148
if(parsed_UNPARSED_ARGUMENTS)
149149
message(FATAL_ERROR "Bad arguments: ${parsed_UNPARSED_ARGUMENTS}")
150150
endif()
151151

152-
if(NOT ARGV0)
153-
message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} expects a template filename")
152+
if(NOT parsed_INPUT AND NOT parsed_CONTENT)
153+
message(
154+
FATAL_ERROR
155+
"${CMAKE_CURRENT_FUNCTION} expects either INPUT or CONTENT keyword to "
156+
"specify template."
157+
)
154158
endif()
155159

156-
if(NOT ARGV1)
157-
message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} expects an output filename")
160+
if(NOT parsed_OUTPUT)
161+
message(
162+
FATAL_ERROR
163+
"${CMAKE_CURRENT_FUNCTION} expects OUTPUT keyword to specify output "
164+
"filename."
165+
)
158166
endif()
159167

160168
# Check for even number of keyword values.
@@ -168,15 +176,24 @@ function(php_configure_file)
168176
)
169177
endif()
170178

171-
set(___phpConfigureFileTemplate "${ARGV0}")
172-
if(NOT IS_ABSOLUTE "${___phpConfigureFileTemplate}")
179+
if(parsed_INPUT)
180+
set(___phpConfigureFileTemplate "${parsed_INPUT}")
181+
if(NOT IS_ABSOLUTE "${___phpConfigureFileTemplate}")
182+
set(
183+
___phpConfigureFileTemplate
184+
"${CMAKE_CURRENT_SOURCE_DIR}/${___phpConfigureFileTemplate}"
185+
)
186+
endif()
187+
else()
188+
cmake_path(GET parsed_OUTPUT FILENAME ___phpConfigureFileTemplate)
173189
set(
174190
___phpConfigureFileTemplate
175-
"${CMAKE_CURRENT_SOURCE_DIR}/${___phpConfigureFileTemplate}"
191+
"${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${___phpConfigureFileTemplate}.in"
176192
)
193+
file(WRITE ${___phpConfigureFileTemplate} "${parsed_CONTENT}")
177194
endif()
178195

179-
set(___phpConfigureFileOutput "${ARGV1}")
196+
set(___phpConfigureFileOutput "${parsed_OUTPUT}")
180197
if(NOT IS_ABSOLUTE "${___phpConfigureFileOutput}")
181198
set(
182199
___phpConfigureFileOutput

cmake/main/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -351,8 +351,8 @@ function(_php_main_create_files)
351351
phase. Needs to be adjusted further to rebuild PHP at such case.
352352
include(PHP/ConfigureFile)
353353
php_configure_file(
354-
${PHP_SOURCE_DIR}/main/build-defs.h.in
355-
${PHP_BINARY_DIR}/main/build-defs.h
354+
INPUT ${PHP_SOURCE_DIR}/main/build-defs.h.in
355+
OUTPUT ${PHP_BINARY_DIR}/main/build-defs.h
356356
VARIABLES
357357
CONFIGURE_COMMAND "cmake"
358358
ODBC_CFLAGS "${ODBC_CFLAGS}"

cmake/sapi/fpm/CMakeLists.txt

Lines changed: 45 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -417,11 +417,23 @@ endif()
417417
################################################################################
418418

419419
# Man documentation.
420+
421+
# Replace the hardcoded runstatedir with a template placeholder.
422+
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/php-fpm.8.in" content)
423+
string(
424+
REPLACE
425+
[[@php_fpm_localstatedir@/run/php-fpm.pid]]
426+
[[@php_fpm_runstatedir@/php-fpm.pid]]
427+
content
428+
"${content}"
429+
)
420430
php_configure_file(
421-
php-fpm.8.in
422-
php-fpm.8
431+
CONTENT "${content}"
432+
OUTPUT php-fpm.8
423433
VARIABLES
424434
php_fpm_localstatedir "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_LOCALSTATEDIR},$<INSTALL_PREFIX>>"
435+
# TODO: Fix the GNU standard adjustment issue with /etc, /var, and /var/run.
436+
php_fpm_runstatedir "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_RUNSTATEDIR},$<INSTALL_PREFIX>>"
425437
php_fpm_sysconfdir "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_SYSCONFDIR},$<INSTALL_PREFIX>>"
426438
php_fpm_prefix "$<INSTALL_PREFIX>"
427439
PHP_VERSION "${PHP_VERSION}"
@@ -433,17 +445,17 @@ install(
433445
)
434446

435447
php_configure_file(
436-
php-fpm.conf.in
437-
php-fpm.conf
448+
INPUT php-fpm.conf.in
449+
OUTPUT php-fpm.conf
438450
VARIABLES
439451
prefix "$<INSTALL_PREFIX>"
440452
EXPANDED_LOCALSTATEDIR "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_LOCALSTATEDIR},$<INSTALL_PREFIX>>"
441453
php_fpm_sysconfdir "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_SYSCONFDIR},$<INSTALL_PREFIX>>"
442454
)
443455

444456
php_configure_file(
445-
www.conf.in
446-
www.conf
457+
INPUT www.conf.in
458+
OUTPUT www.conf
447459
VARIABLES
448460
prefix "$<INSTALL_PREFIX>"
449461
php_fpm_prefix "$<INSTALL_PREFIX>"
@@ -452,23 +464,44 @@ php_configure_file(
452464
EXPANDED_DATADIR "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_DATADIR},$<INSTALL_PREFIX>>"
453465
)
454466

467+
# Replace the hardcoded runstatedir with a template placeholder.
468+
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/init.d.php-fpm.in" content)
469+
string(
470+
REPLACE
471+
[[php_fpm_PID=@localstatedir@/run/php-fpm.pid]]
472+
[[php_fpm_PID=@runstatedir@/php-fpm.pid]]
473+
content
474+
"${content}"
475+
)
476+
455477
php_configure_file(
456-
init.d.php-fpm.in
457-
init.d.php-fpm
478+
CONTENT "${content}"
479+
OUTPUT init.d.php-fpm
458480
VARIABLES
459481
prefix "$<INSTALL_PREFIX>"
460482
exec_prefix "$<INSTALL_PREFIX>"
461483
sbindir "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_SBINDIR},$<INSTALL_PREFIX>>"
484+
# TODO: Fix the GNU standard adjustment issue with /etc, /var, and /var/run.
462485
sysconfdir "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_SYSCONFDIR},$<INSTALL_PREFIX>>"
463-
localstatedir "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_LOCALSTATEDIR},$<INSTALL_PREFIX>>"
486+
runstatedir "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_RUNSTATEDIR},$<INSTALL_PREFIX>>"
487+
)
488+
489+
# Replace the hardcoded runstatedir with a template placeholder.
490+
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/php-fpm.service.in" content)
491+
string(
492+
REPLACE
493+
[[PIDFile=@EXPANDED_LOCALSTATEDIR@/run/php-fpm.pid]]
494+
[[PIDFile=@EXPANDED_RUNSTATEDIR@/php-fpm.pid]]
495+
content
496+
"${content}"
464497
)
465498

466499
php_configure_file(
467-
php-fpm.service.in
468-
php-fpm.service
500+
CONTENT "${content}"
501+
OUTPUT php-fpm.service
469502
VARIABLES
470503
php_fpm_systemd "${PHP_FPM_SYSTEMD}"
471-
EXPANDED_LOCALSTATEDIR "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_LOCALSTATEDIR},$<INSTALL_PREFIX>>"
504+
EXPANDED_RUNSTATEDIR "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_RUNSTATEDIR},$<INSTALL_PREFIX>>"
472505
EXPANDED_SBINDIR "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_SBINDIR},$<INSTALL_PREFIX>>"
473506
EXPANDED_SYSCONFDIR "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_SYSCONFDIR},$<INSTALL_PREFIX>>"
474507
)

cmake/scripts/CMakeLists.txt

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,10 @@ block()
5050
content
5151
"${content}"
5252
)
53-
file(
54-
WRITE
55-
"${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/php-config.cmake.in"
56-
"${content}"
57-
)
5853

5954
php_configure_file(
60-
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/php-config.cmake.in
61-
php-config
55+
CONTENT "${content}"
56+
OUTPUT php-config
6257
VARIABLES
6358
SED "${SED}"
6459
prefix "$<INSTALL_PREFIX>"
@@ -105,15 +100,10 @@ block()
105100
content
106101
"${content}"
107102
)
108-
file(
109-
WRITE
110-
"${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/phpize.cmake.in"
111-
"${content}"
112-
)
113103

114104
php_configure_file(
115-
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/phpize.cmake.in
116-
phpize
105+
CONTENT "${content}"
106+
OUTPUT phpize
117107
VARIABLES
118108
prefix "$<INSTALL_PREFIX>"
119109
datarootdir "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_DATAROOTDIR},$<INSTALL_PREFIX>>"

0 commit comments

Comments
 (0)