Commit Graph

176 Commits

Author SHA1 Message Date
Brad King 03077c9cbc Merge topic 'file-DOWNLOAD-user-agent'
14aff4d file(DOWNLOAD): Add HTTP User-Agent string
2012-09-19 13:58:01 -04:00
Brad King 14aff4daf4 file(DOWNLOAD): Add HTTP User-Agent string
Some servers require a User-Agent string.  The curl command-line tool
just sends "curl/$curlver", so do the same.

Suggested-by: Fredrik Ehnbom <fehnbom@nvidia.com>
2012-09-18 14:53:07 -04:00
Brad King 7369a8faee file(DOWNLOAD): Make TLS options behave as documented
The logic added in commit e1c89f08 (file(DOWNLOAD): Add options for SSL,
2012-08-21) did not actually provide the documented behavior.  Simplify
the implementation to read the variable values first and then replace
them with the explicit argument values if encountered.  Always set the
curl option CURLOPT_SSL_VERIFYPEER to either on or off explicitly
instead of depending on the curl default behavior.
2012-09-17 09:03:45 -04:00
Brad King 131d91a1f9 Rename SSL terminology to TLS
TLS has superseded SSL so rename the recently added file(DOWNLOAD) and
ExternalProject options using the newer terminology.  Drop "CURLOPT"
from names because curl is an implementation detail.
2012-09-14 15:40:09 -04:00
Bill Hoffman e1c89f08bb file(DOWNLOAD): Add options for SSL
Add the ability to request that downloads disable or enable Certificate
Authority checking with https ssl downloads.  When the option to verify
the servers CA is disabled, one may verify download contents with SHA
hashes.
2012-09-11 15:34:54 -04:00
Bill Hoffman 34567dfc0d file(DOWNLOAD): Generalize EXPECTED_MD5 to EXPECTED_HASH
Add support for SHA algorithms.
2012-09-11 08:58:29 -04:00
Kitware Robot 7bbaa4283d Remove trailing whitespace from most CMake and C/C++ code
Our Git commit hooks disallow modification or addition of lines with
trailing whitespace.  Wipe out all remnants of trailing whitespace
everywhere except third-party code.

Run the following shell code:

git ls-files -z -- \
 bootstrap doxygen.config '*.readme' \
 '*.c' '*.cmake' '*.cpp' '*.cxx' \
 '*.el' '*.f' '*.f90' '*.h' '*.in' '*.in.l' '*.java' \
 '*.mm' '*.pike' '*.py' '*.txt' '*.vim' |
egrep -z -v '^(Utilities/cm|Source/(kwsys|CursesDialog/form)/)' |
egrep -z -v '^(Modules/CPack\..*\.in)' |
xargs -0 sed -i 's/ \+$//'
2012-08-13 14:18:39 -04:00
David Cole 2d1c25d179 Merge topic 'install-case-sensitive-mac'
a41557a install: Fix FILES_MATCHING on case-sensitive Mac filesystems (#13177)
2012-06-14 16:28:54 -04:00
Brad King a41557a2c8 install: Fix FILES_MATCHING on case-sensitive Mac filesystems (#13177)
Windows and Apple machines have predominantly used case-insensitive
filesystems so our file(INSTALL) command uses case-insensitive pattern
matching.  It is implemented by converting the pattern and file path to
lower case before matching.  The FILES_MATCHING option is implemented by
excluding a path that does not match any pattern unless it is a
directory that must be searched recursively.  However, the test that an
excluded path is a directory is executed on the lower-case path and
therefore fails on mixed-case input paths on case-sensitive filesystems.
Fix the file(INSTALL) implementation to use the lower-case path only for
pattern matching and preserve the original path for tests against the
real filesystem.
2012-06-13 08:50:44 -04:00
Jim Hague b3c77889e4 Workaround IBM XL v6 streams seekg bug (#13149)
It seems that file.seekg(0) will, in some circumstances, cause the next
file.getline() to omit the first character it reads.  Workaround the
bug by seeking from ios::beg explicitly.
2012-04-19 14:27:43 -04:00
Brad King 573fa3bf13 Factor cmInstallType out of cmTarget::TargetType
The purpose of the TargetType enumeration was overloaded for install
type because install rules were once recorded as targets.  Factor the
install types out into their own enumeration.
2012-02-27 13:19:57 -05:00
Brad King b0853b5fae Disable file() and string() hash commands during bootstrap
We do not compile support for the cryptographic hashes during bootstrap.
Disable the APIs that use them.
2011-11-16 11:03:30 -05:00
Brad King 293a7f4e2a cmCryptoHash: Provide factory "New" method
Construct a cmCryptoHash subclass instance based on the name of the
desired hash algorithm.
2011-11-16 10:15:44 -05:00
Brad King 38771d3bdf Add file(SHA*) commands to compute cryptographic hashes
Add a file() command API for SHA1, SHA224, SHA256, SHA384, and SHA512.
2011-11-16 10:15:44 -05:00
Brad King 042f7965c3 Add file(MD5) command to compute cryptographic hash
Provide a CMake-language binding to the md5sum function previously
available only by "cmake -E md5sum".
2011-11-16 10:15:01 -05:00
Brad King 09817e91f9 Make file(DOWNLOAD) fail on http error
If a http server responds with a result code greater than 400 then the
data returned from the download probably do not match that expected.
Teach file(DOWNLOAD) to fail with an error in this case instead of
silently pretending that the download worked.  The file(UPLOAD) command
already does this.
2011-09-19 17:41:48 -04:00
Thomas Jarosch 4868921bc2 Fix file() command descriptor leak on error
Credit goes to "cppcheck".

Signed-off-by: Thomas Jarosch <thomas.jarosch@intra2net.com>
2011-09-02 11:15:26 -04:00
Brad King faa7ec6e18 Teach file(DOWNLOAD|UPLOAD) to timeout after inactivity
Add option INACTIVITY_TIMEOUT to terminate the operation if there is no
progress for more than a given amount of time.
2011-06-01 09:55:42 -04:00
Brad King 9a7c6a3cc4 Merge topic 'require-cmake-2.6.3'
c3e452e Require at least CMake 2.6.3 to build current CMake
2011-03-01 15:30:38 -05:00
David Cole 61a83f955a Fix KWStyle line too long error (#11286) 2011-02-28 10:47:23 -05:00
David Cole 963bebcc17 Implement file(UPLOAD (#11286)
Including documentation and testing, of course.
2011-02-25 17:26:34 -05:00
Brad King c3e452e944 Require at least CMake 2.6.3 to build current CMake
Remove some cruft left for supporting builds with CMake 2.4.
2011-02-24 15:14:08 -05:00
David Cole 667cf5b963 Make file DOWNLOAD less noisy (#11761)
Thanks to Daniel Nelson for the suggestion and the patch.
2011-02-09 13:22:32 -05:00
Brad King 86025d3a38 file(DOWNLOAD): Fix error message formatting
The SetError method automatically starts the message with the name of
the command.  Fix up calls to it so that we get "file DOWNLOAD..."
instead of "file FILE(DOWNLOAD ...".  Also reduce length of long lines
containing these calls.
2010-09-10 14:35:07 -04:00
Brad King efffb7b979 Merge branch 'file-write-umask' 2010-06-07 14:30:33 -04:00
Brad King 0d07e4379e Merge branch 'improve-file-download'
Conflicts:
	Modules/ExternalProject.cmake
2010-06-07 14:26:24 -04:00
David Cole ef491f7821 Allow redirects: set CURLOPT_FOLLOWLOCATION to 1
Enable file(DOWNLOAD ...) to follow redirects. Thanks to
Michael Wild for requesting the addition and providing
the majority of the patch.
2010-06-04 13:38:07 -04:00
Brad King b8a1319c35 Avoid use of CopyAFile "copyPermissions" parameter
Commit 0fafdb7e (Do not copy permissions of files when making the copy
in an install rule, 2008-12-18) added special behavior to KWSys file
copy methods for this special case.  Use a local solution to avoid use
of the special behavior so it can be removed later.
2010-06-03 11:57:02 -04:00
Brad King cae85c9f65 Borland: No S_IWGRP is available 2010-06-03 11:18:39 -04:00
Brad King 85cbdaade2 Really trust umask in file(WRITE) command (#10789, #10126)
Commit 8d0161c8 (Trust umask for file permissions, 2010-01-12) taught
these commands to set permissions to 0666 explicitly.  The intention was
to let the open() call inside ofstream handle permsisions so that umask
would be honored.  Now we set permissions only when we need to preserve
those on an existing file.  New files will be created with umask-based
permissions.
2010-06-03 10:50:30 -04:00
David Cole 0efa5f3747 Fix unused variable warning in new code. 2010-05-27 14:49:38 -04:00
David Cole f67139ae6f Improve FILE(DOWNLOAD) and ExternalProject.
Improve FILE(DOWNLOAD ...):

- Add percent complete progress output to the FILE DOWNLOAD
  command. This progress output is off by default to
  preserve existing behavior. To turn it on, pass
  SHOW_PROGRESS as an argument.

- Add EXPECTED_MD5 argument. Verify that the downloaded
  file has the expected md5 sum after download is complete.

- Add documentation for SHOW_PROGRESS and EXPECTED_MD5.

  When the destination file exists already and has the
  expected md5 sum, then do not bother re-downloading
  the file. ("Short circuit" return.)

  Also, add a test that checks for the status output
  indicating that the short circuit behavior is actually
  occurring. Use a binary file for the test so that the
  md5 sum is guaranteed to be the same on all platforms
  regardless of "shifting text file line ending" issues.

Improve ExternalProject:

- Add argument URL_MD5.

- Add verify step that compares md5 sum of .tar.gz file
  before extracting it.

- Add md5 check to download step, too, to prevent
  unnecessary downloads.

- Emit a warning message when a file is not verified.
  Indicate that the file may be corrupt or that no
  checksum was specified.
2010-05-27 12:21:56 -04:00
Brad King 33ddb23e67 Handle non-ASCII terminators in file(STRINGS)
Commit "Support more special characters in file(STRINGS)" (2009-10-06)
attempted to support parsing strings from binaries produced by the
Portland Group Fortran compiler.  The compiler seems to put an extra
byte just at the end of its string literals.  Previously we dealt with
this by explicitly enumerating bytes known to occur, but it seems that
many such possibilities exist.  Now we support extraction of strings
that end in any non-ASCII character.
2010-04-14 11:44:43 -04:00
Brad King 8d0161c8ff Trust umask for file permissions
Open output files with mode 0666 so that permissions are not more strict
than umask permits.  See issue #10126.
2010-01-12 11:57:01 -05:00
Bill Hoffman 44c4600ae5 Fix up download a bit, better error checking and uses of long not double for timeout as curl needs, bug# 9748 2009-10-22 09:44:58 -04:00
David Cole 16d995d728 Fixed issues with message text in FILE command error situations. Added many new test cases to increase the coverage of the FILE command even further. 2009-10-17 11:43:15 -04:00
Brad King ca95b339fb Use integer literal instead of character
The commit "Support more special characters in file(STRINGS)" added code
using a 'char' literal as an array index.  Some compilers warn about
this because char might be a signed type, leading to negative indices.
We replace the literal with an integer to avoid the warning.
2009-10-06 17:51:34 -04:00
Brad King c6fdff2b22 Support more special characters in file(STRINGS)
The commits "Teach Fortran compiler identification about the Portland
Group compiler" and "Fix previous change to file(STRINGS) command"
taught file(STRINGS) to recognize the form-feed '\f' character as part
of string literals.  The Portland Group Fortran compiler also puts 0x14
bytes at the end of string literals in some cases.  We generalize the
previous solution and add the new character in this commit.
2009-10-06 16:33:15 -04:00
David Cole a9dcc7fd47 Fix warnings in CMake source code. Suppress warnings in Lexer and Parser files that are 'too hard' to fix. 2009-09-30 11:41:34 -04:00
Brad King 96afb12087 Convert CMake to OSI-approved BSD License
This converts the CMake license to a pure 3-clause OSI-approved BSD
License.  We drop the previous license clause requiring modified
versions to be plainly marked.  We also update the CMake copyright to
cover the full development time range.
2009-09-28 11:43:28 -04:00
Brad King b41a548d86 Add parentheses around '&&' between '||' for gcc
The GNU compiler warns about possible operator precedence mistakes and
asks for explicit parentheses (-Wparentheses).  We add the parentheses
to silence the warning.  This also fixes one real logic error in the
find_package() implementation by correcting expression evaluation order.
2009-09-11 08:18:15 -04:00
Alexander Neundorf 21179a2ade Try to fix the failing new StringFileTest on HP-UX
It seems that
while(i=file.get(), file)
iterates one character too much on HP-UX, let's see whether
while(file.get(c))
works, at least this is given as example on http://h30097.www3.hp.com/cplus/ifstream_3c__std.htm

Alex
2009-09-06 13:24:56 -04:00
Alexander Neundorf 91fec6d89c fix #9316: when converting binary data to hex, also print the leading 0's
Alex
2009-09-06 09:49:58 -04:00
Brad King 01c669e643 COMP: Avoid unused arg warnings in cmFileCommand
The default cmFileCopier::ReportCopy implementation is empty, so we
should leave out the argument names.
2009-04-29 14:50:28 -04:00
Brad King d91c5b1a07 COMP: Fix nested class member access
Nested classes have no special access to other members of their
enclosing class.  In cmFileCopier the nested class MatchRule must use
MatchProperties, so we grant friendship to it.
2009-04-29 13:57:19 -04:00
Brad King 222abaad5b COMP: Fix non-virtual destructor warning
This gives cmFileCopier a virtual destructor since it has virtual
methods.  While we never actually delete through a base pointer (or
dynamically at all), the compiler doesn't know and warns anyway.
2009-04-29 13:33:05 -04:00
Brad King c58ca24286 ENH: Create file(COPY) command signature
The file(INSTALL) command has long been undocumented and used only to
implement install() scripts.  We now document it and provide a similar
file(COPY) signature which is useful in general-purpose scripts.  It
provides the capabilities of install(DIRECTORY) and install(FILES) but
operates immediately instead of contributing to install scripts.
2009-04-29 13:13:29 -04:00
Brad King b6cb117346 ENH: Teach file(INSTALL) relative paths
This teaches the undocumented file(INSTALL) command to deal with
relative paths.  Relative input file paths are evaluated with respect to
the current source directory.  Relative output file paths are evaluated
with respect to the current binary directory.

While this command is currently used only in cmake_install.cmake scripts
(in -P script mode), this cleans up its interface in preparation for a
documented signature.
2009-04-29 13:13:08 -04:00
Brad King 6aaa7d45bf ENH: Refactor file(INSTALL) implementation
The undocumented file(INSTALL) is implemented by a cmFileInstaller class
inside cmFileCommand.  This refactors the class to split out code not
specific to installation into a cmFileCopier base class.
2009-04-29 13:12:58 -04:00
Brad King 97263b6cdd ENH: Send all file installations through one path
This creates a single cmFileInstaller method to dispatch installation of
symlinks, directories, and files.  The change removes duplicate tests of
input file type and makes the decision more consistent.
2009-04-29 08:47:13 -04:00