Re: [cmake-developers] Export files in the build tree have a total path length which is unnecessarily long

2016-08-09 Thread Alan W. Irwin

On 2016-08-09 10:11-0400 Brad King wrote:


On 08/08/2016 02:54 PM, Alan W. Irwin wrote:

For all such staging areas, would it be straightforward to hash the
paths for the cmake-generated EXPORT files in the build tree to
substantially reduce their pathlengths for the absolute install
location case while still avoiding name collisions?


Actually it looks like we already do this, but the logic forgot
to account for the length of the file name.  Please try this fix:

install(EXPORT): Fix support for mid-length install destinations on Windows
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c7a319ab



Hi Brad:

I don't have access to Windows, but I tried this fix on Linux with a
very long CMAKE_INSTALL_PREFIX (to trigger the hashing), and all seems
to be well.

software@raven> ~/cmake/install-c7a319a/bin/cmake 
-DCMAKE_INSTALL_PREFIX=$(pwd)/42397430947234398793874973983732987249739347293472938729487239472439782394723492374294847234927423497971498749237349723958749473934873497235987549023475/92752349572349053475945729729527234957349735209573999725497834957249524752904573975295742957349857934539709925294754973957493720274903485230252239/42397430947234398793874973983732987249739347293472938729487239472439782394723492374294847234927423497971498749237349723958749473934873497235987549023475/92752349572349053475945729729527234957349735209573999725497834957249524752904573975295742957349857934539709925294754973957493720274903485230252239/42397430947234398793874973983732987249739347293472938729487239472439782394723492374294847234927423497971498749237349723958749473934873497235987549023475/92752349572349053475945729729527234957349735209573999725497834957249524752904573975295742957349857934539709925294754973957493720274903485230252239/423974309472343987
93874973983732987249739347293472938729487239472439782394723492374294847234927423497971498749237349723958749473934873497235987549023475/92752349572349053475945729729527234957349735209573999725497834957249524752904573975295742957349857934539709925294754973957493720274903485230252239/42397430947234398793874973983732987249739347293472938729487239472439782394723492374294847234927423497971498749237349723958749473934873497235987549023475/92752349572349053475945729729527234957349735209573999725497834957249524752904573975295742957349857934539709925294754973957493720274903485230252239/42397430947234398793874973983732987249739347293472938729487239472439782394723492374294847234927423497971498749237349723958749473934873497235987549023475/92752349572349053475945729729527234957349735209573999725497834957249524752904573975295742957349857934539709925294754973957493720274903485230252239/4239743094723439879387497398373298724973934729347293872948723947243978239472349237429484723492742349797149874923734
9723958749473934873497235987549023475/92752349572349053475945729729527234957349735209573999725497834957249524752904573975295742957349857934539709925294754973957493720274903485230252239/42397430947234398793874973983732987249739347293472938729487239472439782394723492374294847234927423497971498749237349723958749473934873497235987549023475/92752349572349053475945729729527234957349735209573999725497834957249524752904573975295742957349857934539709925294754973957493720274903485230252239/install_tree
 -DBUILD_TEST=ON ..
-- The Fortran compiler identification is GNU 4.9.2
-- Check for working Fortran compiler: /usr/bin/f95
-- Check for working Fortran compiler: /usr/bin/f95  -- works
-- Detecting Fortran compiler ABI info
-- Detecting Fortran compiler ABI info - done
-- Checking whether /usr/bin/f95 supports Fortran 90
-- Checking whether /usr/bin/f95 supports Fortran 90 -- yes
-- Configuring done
-- Generating done
-- Build files have been written to:
/home/software/plplot/HEAD/plplot.git/cmake/test_fortran/build_dir

Despite that long install prefix (note the numbers have "/" embedded
periodically to avoid going over the individual filename length limit
on Linux), the exported files in the build-tree staging area appeared
in hashed form, e.g.,

software@raven> pwd
/home/software/plplot/HEAD/plplot.git/cmake/test_fortran/build_dir
software@raven> find $(pwd) -type f |grep -i export
/home/software/plplot/HEAD/plplot.git/cmake/test_fortran/build_dir/src_lib/CMakeFiles/Export/57a65d04a859ba876e044822264a11fe/export_test_fortran.cmake
/home/software/plplot/HEAD/plplot.git/cmake/test_fortran/build_dir/src_lib/CMakeFiles/Export/57a65d04a859ba876e044822264a11fe/export_test_fortran-noconfig.cmake

and after "make install" were installed in unhashed form (pathname
length as large as 2471 for this particular test case) without issues.

By the way, an install prefix of roughly 500 in length did not trigger
the hashing.  But I assume that lack of hashing for smaller-sized
prefixes on Linux is due to some knowledge CMake has about pathname
length limits on that platform, and hashing will be triggered for much
smaller install prefixes on MinGW-w64/MSYS2 because of the known much
smaller total pathname length 

Re: [cmake-developers] Email feed for new CMake bugs

2016-08-09 Thread Brad King
On 08/09/2016 03:46 PM, Gregor Jasny via cmake-developers wrote:
> in the past (with Mantis) I found it quite helpful to see new bugs
> posted here on this mailing list. Is it planned to restore that
> functionality?

Not currently.  GitLab has notification settings you can use to
"Watch" a project, though then you will get all updates about
everything instead of just new issues.  It is like subscribing
to another list that gets all updates about the project.

GitLab notifications do not distinguish new issues/MRs from
updates on existing ones.  Implementing such a feed may require
webhooks that send the notifications, or modification to GitLab.

-Brad

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers


Re: [cmake-developers] [PATCH] Fix RunCMake.Framework on case sensitive file systems.

2016-08-09 Thread Gregor Jasny via cmake-developers
On 09/08/16 22:01, Brad King wrote:
> On 08/09/2016 03:47 PM, Chaoren Lin via cmake-developers wrote:
>> The file is lowercase: Tests/RunCMake/Framework/osx.cmake
> 
> Thanks, applied:
> 
>  Tests: Fix RunCMake.Framework on case sensitive file systems.
>  https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=677e73cb

Clang will get a warning for those kind of errors[1] regarding header
files. Would it make sense to add similar warning-functionality to CMake?

Thanks,
Gregor

[1] http://lists.llvm.org/pipermail/cfe-dev/2016-April/048406.html
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers


Re: [cmake-developers] [PATCH] Fix RunCMake.Framework on case sensitive file systems.

2016-08-09 Thread Brad King
On 08/09/2016 03:47 PM, Chaoren Lin via cmake-developers wrote:
> The file is lowercase: Tests/RunCMake/Framework/osx.cmake

Thanks, applied:

 Tests: Fix RunCMake.Framework on case sensitive file systems.
 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=677e73cb

-Brad

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers


[cmake-developers] [PATCH] Fix RunCMake.Framework on case sensitive file systems.

2016-08-09 Thread Chaoren Lin via cmake-developers
The file is lowercase: Tests/RunCMake/Framework/osx.cmake
---
 Tests/RunCMake/Framework/RunCMakeTest.cmake | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Tests/RunCMake/Framework/RunCMakeTest.cmake 
b/Tests/RunCMake/Framework/RunCMakeTest.cmake
index d810283..eeea6f1 100644
--- a/Tests/RunCMake/Framework/RunCMakeTest.cmake
+++ b/Tests/RunCMake/Framework/RunCMakeTest.cmake
@@ -20,7 +20,7 @@ unset(RunCMake_TEST_OPTIONS)
 
 set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/OSXFrameworkLayout-build)
 set(RunCMake_TEST_NO_CLEAN 1)
-set(RunCMake_TEST_OPTIONS 
"-DCMAKE_TOOLCHAIN_FILE=${RunCMake_SOURCE_DIR}/OSX.cmake")
+set(RunCMake_TEST_OPTIONS 
"-DCMAKE_TOOLCHAIN_FILE=${RunCMake_SOURCE_DIR}/osx.cmake")
 
 file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
 file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
-- 
2.8.0.rc3.226.g39d4020

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers


[cmake-developers] Email feed for new CMake bugs

2016-08-09 Thread Gregor Jasny via cmake-developers
Hello,

in the past (with Mantis) I found it quite helpful to see new bugs
posted here on this mailing list. Is it planned to restore that
functionality?

Thanks,
Gregor
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers


Re: [cmake-developers] QtAutogen 3.6.0 directory nesting overflow patch

2016-08-09 Thread Sebastian Holtermann

Am 09.08.2016 um 17:52 schrieb Brad King:

On 08/09/2016 11:45 AM, Sebastian Holtermann wrote:

In the non-unique-qrc-name case the checksum is hard to reproduce for a
user. In this case I'd say CMake does not make any guaratees for
  - the actual symbol name
  - the symbol name to not change in the future
It only guarantees the symbol to be unique within the project.

If the user really needs a guranteed symbol name, e.g. for a library,
he/she has to ensure that the BASENAME.qrc file name is unique within
the project. In CMake 3.5 this was a requirement anyway.


Okay.  Please update the documentation accordingly.


Why does cmFilePathUuid::GetChecksumString go through so many steps
of transformation?  Why not just take the original hex-valued hash
and use it directly (possibly truncated)?


Base64 uses 64 different characters. Hex values only 16.

I'm not tied to Base64 but I think it provies the best uniqueness
with respect to the file-length and allowed-characters limitations.


Okay.  Please look at extending cmCryptoHash to offer access to
the _Final functions to get the binary digests directly as
`std::vector` or something like that.  That will
avoid the binary->hex->binary conversion sequence before going
to Base64.  Also, please explain the motivation in comments.



I'll look into it within the next days.

-Sebastian

--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers


Re: [cmake-developers] QtAutogen 3.6.0 directory nesting overflow patch

2016-08-09 Thread Brad King
On 08/09/2016 11:45 AM, Sebastian Holtermann wrote:
> In the non-unique-qrc-name case the checksum is hard to reproduce for a 
> user. In this case I'd say CMake does not make any guaratees for
>   - the actual symbol name
>   - the symbol name to not change in the future
> It only guarantees the symbol to be unique within the project.
> 
> If the user really needs a guranteed symbol name, e.g. for a library, 
> he/she has to ensure that the BASENAME.qrc file name is unique within 
> the project. In CMake 3.5 this was a requirement anyway.

Okay.  Please update the documentation accordingly.

>> Why does cmFilePathUuid::GetChecksumString go through so many steps
>> of transformation?  Why not just take the original hex-valued hash
>> and use it directly (possibly truncated)?
> 
> Base64 uses 64 different characters. Hex values only 16.
> 
> I'm not tied to Base64 but I think it provies the best uniqueness
> with respect to the file-length and allowed-characters limitations.

Okay.  Please look at extending cmCryptoHash to offer access to
the _Final functions to get the binary digests directly as
`std::vector` or something like that.  That will
avoid the binary->hex->binary conversion sequence before going
to Base64.  Also, please explain the motivation in comments.

Thanks,
-Brad

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers


Re: [cmake-developers] QtAutogen 3.6.0 directory nesting overflow patch

2016-08-09 Thread Sebastian Holtermann

Am 09.08.2016 um 16:11 schrieb Brad King:

On 08/08/2016 04:19 PM, Sebastian Holtermann wrote:

It is back to what it was in 3.5 for the all-qrc-names-unique case.
So yes, existing projects get the same symbol name they used to get.


Good, thanks.


New projects that now can use non unique file names
may get a symbol name based on the checksum extended file name
- but that one is also length limited and should be safe.


Is this checksum user-facing in that they may need to reference such
a symbol in their own code by this name?  This would restrict us from
ever changing the hash algorithm in the future.


Well, it is user-facing.
Though for one-binary applications the user never needs
to know the the actual symbol name. Only when building libraries.

It is said n "Using Resources in a Library" in
http://doc.qt.io/qt-5/resources.html
--
Note: The use of Q_INIT_RESOURCE() and Q_CLEANUP_RESOURCE() is not 
necessary when the resource is built as part of the application.

--

In the non-unique-qrc-name case the checksum is hard to reproduce for a 
user. In this case I'd say CMake does not make any guaratees for

 - the actual symbol name
 - the symbol name to not change in the future
It only guarantees the symbol to be unique within the project.

If the user really needs a guranteed symbol name, e.g. for a library, 
he/she has to ensure that the BASENAME.qrc file name is unique within 
the project. In CMake 3.5 this was a requirement anyway.




But I found another issue.
The checksum string generator may generate a '-' in the file name.
This is allowed for file names but not for symbol names.
I have attached a small patch to fix this.


Thanks, I squashed that in.

Why does cmFilePathUuid::GetChecksumString go through so many steps
of transformation?  Why not just take the original hex-valued hash
and use it directly (possibly truncated)?


Base64 uses 64 different characters. Hex values only 16.
Using Base64 the 14 character checksum string allows 64**14
different combinations versus 16**14 combinations when using hex.
Therefore a checksum collision is less likely when using Base64.

I'm not tied to Base64 but I think it provies the best uniqueness
with respect to the file-length and allowed-characters limitations.

-Sebastian

--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers


Re: [cmake-developers] Export files in the build tree have a total path length which is unnecessarily long

2016-08-09 Thread Brad King
On 08/08/2016 02:54 PM, Alan W. Irwin wrote:
> For all such staging areas, would it be straightforward to hash the
> paths for the cmake-generated EXPORT files in the build tree to
> substantially reduce their pathlengths for the absolute install
> location case while still avoiding name collisions?

Actually it looks like we already do this, but the logic forgot
to account for the length of the file name.  Please try this fix:

 install(EXPORT): Fix support for mid-length install destinations on Windows
 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c7a319ab

Thanks,
-Brad
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers


Re: [cmake-developers] QtAutogen 3.6.0 directory nesting overflow patch

2016-08-09 Thread Brad King
On 08/08/2016 04:19 PM, Sebastian Holtermann wrote:
> It is back to what it was in 3.5 for the all-qrc-names-unique case.
> So yes, existing projects get the same symbol name they used to get.

Good, thanks.

> New projects that now can use non unique file names
> may get a symbol name based on the checksum extended file name
> - but that one is also length limited and should be safe.

Is this checksum user-facing in that they may need to reference such
a symbol in their own code by this name?  This would restrict us from
ever changing the hash algorithm in the future.

> But I found another issue.
> The checksum string generator may generate a '-' in the file name.
> This is allowed for file names but not for symbol names.
> I have attached a small patch to fix this.

Thanks, I squashed that in.

Why does cmFilePathUuid::GetChecksumString go through so many steps
of transformation?  Why not just take the original hex-valued hash
and use it directly (possibly truncated)?

-Brad

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers