View Issue Details Jump to Notes ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0008570CMakeModulespublic2009-02-20 09:492010-12-14 18:49
ReporterChristoph Seibert 
Assigned ToDavid Cole 
PrioritynormalSeverityminorReproducibilityalways
StatusclosedResolutionfixed 
PlatformOSOS Version
Product VersionCMake-2-6 
Target VersionFixed in VersionCMake-2-8 
Summary0008570: exclude_system flag in get_prerequisites() function broken in CMake 2.6.2
DescriptionI'm seeing this problem on Windows XP 32 bit:

Setting the exclude_system flag to 1 has no effect when calling get_prerequisites() - it will still look for system libraries and include them in the returned list. The culprit seems to be the following block that has changed between 2.6.1 and 2.6.2 (this is the 2.6.2 version):

    # Use the raw_item as the list entries returned by this function. Use the
    # gp_resolve_item function to resolve it to an actual full path file if
    # necessary.
    #
    set(item "${raw_item}")

    # Add each item unless it is excluded:
    #
    set(add_item 1)

    if(${exclude_system})
      set(type "")
      gp_file_type("${target}" "${item}" type)

      if("${type}" STREQUAL "system")
        set(add_item 0)
      endif("${type}" STREQUAL "system")
    endif(${exclude_system})

In 2.6.2, only "raw" items are considered for addition. However, the gp_file_type() function expects the item to have an absolute path. In 2.6.1, the raw item was resolved to an absolute path _before_ checking the file type.

As a side note, I found it highly irritating that get_prerequisites() changed its interface incompatibly between 2.6.1 and 2.6.2 (which I consider a minor update): both the input (two additional mandatory arguments) and the output (no longer includes absolute paths) have changed. This also leads to incorrect documentation in the list_prerequisites() function, which implies that it will print full paths when in fact it will not.
TagsNo tags attached.
Attached Files

 Relationships

  Notes
(0015247)
Bill Hoffman (manager)
2009-02-20 09:53

get_prerequisites() should be considered Beta, and should have been marked as such, sorry about that.
(0015248)
Bill Hoffman (manager)
2009-02-20 09:54

On the bright side since it is a cmake module, you can copy it into your project and change it as needed.
(0018802)
David Cole (manager)
2009-12-10 13:45

This should be working as you expect with respect to the exclude_system flag in CMake 2.8.0... Please re-open and attach more information if you disagree.

Thanks,
David Cole
(0024065)
David Cole (manager)
2010-12-14 18:49

Closing bugs that have been resolved for more than 3 months without any further updates.

 Issue History
Date Modified Username Field Change
2009-02-20 09:49 Christoph Seibert New Issue
2009-02-20 09:50 Bill Hoffman Status new => assigned
2009-02-20 09:50 Bill Hoffman Assigned To => David Cole
2009-02-20 09:53 Bill Hoffman Note Added: 0015247
2009-02-20 09:54 Bill Hoffman Note Added: 0015248
2009-12-10 13:45 David Cole Note Added: 0018802
2009-12-10 13:45 David Cole Status assigned => resolved
2009-12-10 13:45 David Cole Fixed in Version => CMake-2-8
2009-12-10 13:45 David Cole Resolution open => fixed
2010-12-14 18:49 David Cole Note Added: 0024065
2010-12-14 18:49 David Cole Status resolved => closed


Copyright © 2000 - 2018 MantisBT Team