summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2006-04-18 14:30:56 (GMT)
committerBrad King <brad.king@kitware.com>2006-04-18 14:30:56 (GMT)
commit84f672155c7c63ca613fd03cfab0811d9dfd5449 (patch)
tree1922d6643d1d0608968b999c804b1a54ab672f95
parent016e689f57f2161df4601a5077c4ac56d6a237c5 (diff)
downloadCMake-84f672155c7c63ca613fd03cfab0811d9dfd5449.zip
CMake-84f672155c7c63ca613fd03cfab0811d9dfd5449.tar.gz
CMake-84f672155c7c63ca613fd03cfab0811d9dfd5449.tar.bz2
BUG: Using the source-file permissions by default for installation is somewhat unpredictable because users can extract source code with almost any permissions (umask). Changing the default to use 644 for files and 755 for programs. No release has documented the old behavior so we do not need compatibility.
-rw-r--r--Source/cmFileCommand.cxx25
-rw-r--r--Source/cmInstallCommand.h6
2 files changed, 10 insertions, 21 deletions
diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx
index 68bc52d..9ca4f19 100644
--- a/Source/cmFileCommand.cxx
+++ b/Source/cmFileCommand.cxx
@@ -649,7 +649,6 @@ bool cmFileCommand::HandleInstallCommand(
// If permissions were not specified set default permissions for
// this target type.
- bool use_source_permissions = false;
if(!use_given_permissions)
{
switch(itype)
@@ -658,7 +657,6 @@ bool cmFileCommand::HandleInstallCommand(
case cmTarget::MODULE_LIBRARY:
#if defined(__linux__)
// Use read/write permissions.
- use_given_permissions = true;
permissions = 0;
permissions |= mode_owner_read;
permissions |= mode_owner_write;
@@ -669,7 +667,6 @@ bool cmFileCommand::HandleInstallCommand(
case cmTarget::EXECUTABLE:
case cmTarget::INSTALL_PROGRAMS:
// Use read/write/executable permissions.
- use_given_permissions = true;
permissions = 0;
permissions |= mode_owner_read;
permissions |= mode_owner_write;
@@ -680,8 +677,12 @@ bool cmFileCommand::HandleInstallCommand(
permissions |= mode_world_execute;
break;
default:
- // Use the permissions of the file being copied.
- use_source_permissions = true;
+ // Use read/write permissions.
+ permissions = 0;
+ permissions |= mode_owner_read;
+ permissions |= mode_owner_write;
+ permissions |= mode_group_read;
+ permissions |= mode_world_read;
break;
}
}
@@ -840,20 +841,6 @@ bool cmFileCommand::HandleInstallCommand(
message += toFile.c_str();
this->Makefile->DisplayStatus(message.c_str(), -1);
- // If no permissions were already given use the permissions of
- // the file being copied.
- if(!use_given_permissions &&
- (!use_source_permissions ||
- !cmSystemTools::GetPermissions(fromFile.c_str(), permissions)))
- {
- // Set default permissions.
- permissions = 0;
- permissions |= mode_owner_read;
- permissions |= mode_owner_write;
- permissions |= mode_group_read;
- permissions |= mode_world_read;
- }
-
// Copy the file, but only if it has changed.
if(!cmSystemTools::CopyFileIfDifferent(fromFile.c_str(),
toFile.c_str()))
diff --git a/Source/cmInstallCommand.h b/Source/cmInstallCommand.h
index 4907b91..3c10e5a 100644
--- a/Source/cmInstallCommand.h
+++ b/Source/cmInstallCommand.h
@@ -143,7 +143,8 @@ public:
"The FILES form specifies rules for installing files for a "
"project. File names given as relative paths are interpreted with "
"respect to the current source directory. Files installed by this "
- "form are given the same permissions as the original file by default."
+ "form are by default given permissions OWNER_WRITE, OWNER_READ, "
+ "GROUP_READ, and WORLD_READ if no PERMISSIONS argument is given."
"\n"
"The PROGRAMS signature:\n"
" INSTALL(PROGRAMS files... DESTINATION <dir>\n"
@@ -151,7 +152,8 @@ public:
" [COMPONENT <component>]\n"
" [RENAME <name>])\n"
"The PROGRAMS form is identical to the FILES form except that the "
- "default permissions for the installed file mark it as executable. "
+ "default permissions for the installed file also include "
+ "OWNER_EXECUTE, GROUP_EXECUTE, and WORLD_EXECUTE. "
"This form is intended to install programs that are not targets, "
"such as shell scripts. Use the TARGETS form to install targets "
"built within the project."