From 03ad0e61c19304ae145cfa0683b43d9756d37ff5 Mon Sep 17 00:00:00 2001 From: Asit Dhal Date: Sun, 4 Oct 2020 19:44:31 +0200 Subject: configure_file: Add option for user defined permissions User defined permissions and options to copy permissions are implemented. Fixes: #20866 --- Help/command/configure_file.rst | 9 +- .../dev/configure_file-user-permissions.rst | 6 ++ Source/CPack/cmCPackGenerator.cxx | 2 +- Source/cmConfigureFileCommand.cxx | 109 ++++++++++++++++++++- Source/cmCreateTestSourceList.cxx | 2 +- Source/cmLocalGenerator.cxx | 4 +- Source/cmMakefile.cxx | 20 +--- Source/cmMakefile.h | 5 +- Source/cmVisualStudio10TargetGenerator.cxx | 2 +- Tests/RunCMake/configure_file/RunCMakeTest.cmake | 7 ++ .../configure_file/SourcePermissions-result.txt | 0 .../configure_file/SourcePermissions-stderr.txt | 0 .../configure_file/SourcePermissions.cmake | 34 +++++++ .../SourcePermissionsInvalidArg-1-result.txt | 1 + .../SourcePermissionsInvalidArg-1-stderr.txt | 5 + .../SourcePermissionsInvalidArg-1.cmake | 5 + .../SourcePermissionsInvalidArg-2-result.txt | 1 + .../SourcePermissionsInvalidArg-2-stderr.txt | 5 + .../SourcePermissionsInvalidArg-2.cmake | 5 + .../SourcePermissionsInvalidArg-3-result.txt | 1 + .../SourcePermissionsInvalidArg-3-stderr.txt | 5 + .../SourcePermissionsInvalidArg-3.cmake | 5 + .../SourcePermissionsInvalidArg-4-result.txt | 1 + .../SourcePermissionsInvalidArg-4-stderr.txt | 4 + .../SourcePermissionsInvalidArg-4.cmake | 4 + .../SourcePermissionsInvalidArg-5-result.txt | 1 + .../SourcePermissionsInvalidArg-5-stderr.txt | 4 + .../SourcePermissionsInvalidArg-5.cmake | 6 ++ .../configure_file/UseSourcePermissions.cmake | 40 ++++++++ Tests/RunCMake/configure_file/sourcefile.txt | 1 + 30 files changed, 266 insertions(+), 28 deletions(-) create mode 100644 Help/release/dev/configure_file-user-permissions.rst create mode 100644 Tests/RunCMake/configure_file/SourcePermissions-result.txt create mode 100644 Tests/RunCMake/configure_file/SourcePermissions-stderr.txt create mode 100644 Tests/RunCMake/configure_file/SourcePermissions.cmake create mode 100644 Tests/RunCMake/configure_file/SourcePermissionsInvalidArg-1-result.txt create mode 100644 Tests/RunCMake/configure_file/SourcePermissionsInvalidArg-1-stderr.txt create mode 100644 Tests/RunCMake/configure_file/SourcePermissionsInvalidArg-1.cmake create mode 100644 Tests/RunCMake/configure_file/SourcePermissionsInvalidArg-2-result.txt create mode 100644 Tests/RunCMake/configure_file/SourcePermissionsInvalidArg-2-stderr.txt create mode 100644 Tests/RunCMake/configure_file/SourcePermissionsInvalidArg-2.cmake create mode 100644 Tests/RunCMake/configure_file/SourcePermissionsInvalidArg-3-result.txt create mode 100644 Tests/RunCMake/configure_file/SourcePermissionsInvalidArg-3-stderr.txt create mode 100644 Tests/RunCMake/configure_file/SourcePermissionsInvalidArg-3.cmake create mode 100644 Tests/RunCMake/configure_file/SourcePermissionsInvalidArg-4-result.txt create mode 100644 Tests/RunCMake/configure_file/SourcePermissionsInvalidArg-4-stderr.txt create mode 100644 Tests/RunCMake/configure_file/SourcePermissionsInvalidArg-4.cmake create mode 100644 Tests/RunCMake/configure_file/SourcePermissionsInvalidArg-5-result.txt create mode 100644 Tests/RunCMake/configure_file/SourcePermissionsInvalidArg-5-stderr.txt create mode 100644 Tests/RunCMake/configure_file/SourcePermissionsInvalidArg-5.cmake create mode 100644 Tests/RunCMake/configure_file/UseSourcePermissions.cmake create mode 100644 Tests/RunCMake/configure_file/sourcefile.txt diff --git a/Help/command/configure_file.rst b/Help/command/configure_file.rst index 46d1a05..5d55626 100644 --- a/Help/command/configure_file.rst +++ b/Help/command/configure_file.rst @@ -6,8 +6,9 @@ Copy a file to another location and modify its contents. .. code-block:: cmake configure_file( + [FILE_PERMISSIONS ...] [COPYONLY] [ESCAPE_QUOTES] [@ONLY] - [NO_SOURCE_PERMISSIONS] + [NO_SOURCE_PERMISSIONS] [USE_SOURCE_PERMISSIONS] [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ]) Copies an ```` file to an ```` file and substitutes @@ -72,6 +73,9 @@ The arguments are: If the path names an existing directory the output file is placed in that directory with the same file name as the input file. +``FILE_PERMISSIONS ...`` + Use user provided permissions for the output file. + ``COPYONLY`` Copy the file without replacing any variable references or other content. This option may not be used with ``NEWLINE_STYLE``. @@ -88,6 +92,9 @@ The arguments are: The copied file permissions default to the standard 644 value (-rw-r--r--). +``USE_SOURCE_PERMISSIONS`` + Transfer the file permissions of the original file to the output file. + ``NEWLINE_STYLE