[Pkg-ayatana-devel] Bug#892091: Bug#892091: ayatana-indicator-power: FTBFS randomly - gschemas.compiled generated twice

Mike Gabriel mike.gabriel at das-netzwerkteam.de
Mon Mar 12 14:32:25 UTC 2018


Hi James,

On  Mo 12 Mär 2018 15:08:11 CET, James Cowgill wrote:

> Hi,
>
> On 12/03/18 13:47, Mike Gabriel wrote:
>> On  Mo 12 Mär 2018 14:29:18 CET, James Cowgill wrote:
>>> On 11/03/18 15:40, Mike Gabriel wrote:
>>>> On  Mo 05 Mär 2018 12:31:34 CET, James Cowgill wrote:
>>>>> From cmake-commands(7) - add_custom_command:
>>>>> "Do not list the output in more than one independent target that may
>>>>> build in parallel or the two instances of the rule may conflict
>>>>> (instead
>>>>> use the add_custom_target() command to drive the command and make the
>>>>> other targets depend on that one)."
>>>>>
>>>>> There are three independent targets here which use gschemas.compiled
>>>>> (the three tests).
>>>>>
>>>>> I found this blog which tries to explain it (number 4):
>>>>> https://samthursfield.wordpress.com/2015/11/21/cmake-dependencies-between-targets-and-files-and-custom-commands/
>>>>>
>>>>>
>>>>>
>>>>> James
>>>>
>>>> Thanks for your research on this.
>>>>
>>>> Would this feel like a valid fix?
>>>>
>>>> ```
>>>> diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
>>>> index 2c45057..714fa6c 100644
>>>> --- a/tests/CMakeLists.txt
>>>> +++ b/tests/CMakeLists.txt
>>>> @@ -32,6 +32,14 @@ add_custom_command (OUTPUT gschemas.compiled
>>>>                      COMMAND cp -f ${CMAKE_BINARY_DIR}/data/*gschema.xml
>>>> ${SCHEMA_DIR}
>>>>                      COMMAND ${COMPILE_SCHEMA_EXECUTABLE} ${SCHEMA_DIR})
>>>>
>>>> +add_custom_target(
>>>> +    test-notify-gschemas ALL DEPENDS gschemas.compiled
>>>> +)
>>>> +
>>>> +add_custom_target(
>>>> +    test-device-gschemas ALL DEPENDS gschemas.compiled
>>>> +)
>>>
>>> I don't think this will work because these two targets might be built in
>>> parallel and we end up with the same problem as before. I think you want
>>> a single custom target which all the tests depend on.
>>>
>>> James
>>
>> Hmm, but what you say above would contradict the howto provided under
>> (4.) at this URL [1] (the one you quoted earlier).
>>
>> I think, I exactly immitated what Sam Thursfield wrote on his blog.
>> Don't you think?
>
> I think the code directly under the section 4 heading is a failing test
> case and an example of what you should _not_ do.
>
> James

Then this would be the next approach:

```
commit 891b1549a3d20db69e4335c1a74bcba1c84c3bb3
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date:   Sun Mar 11 21:32:24 2018 +0100

     tests/CMakeLists.txt: Prohibit gschemas.compiled to be generated  
multiple times.

      Spotted by James Cogwill, see https://bugs.debian.org/892091.

diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 651ddf4..bf53ee3 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -32,6 +32,10 @@ add_custom_command (OUTPUT gschemas.compiled
                      COMMAND cp -f  
${CMAKE_BINARY_DIR}/data/*gschema.xml ${SCHEMA_DIR}
                      COMMAND ${COMPILE_SCHEMA_EXECUTABLE} ${SCHEMA_DIR})

+add_custom_target(
+    gschemas-compiled ALL DEPENDS gschemas.compiled
+)
+
  # look for headers in our src dir, and also in the directories where  
we autogenerate files...
  include_directories (${CMAKE_SOURCE_DIR}/src)
  include_directories (${CMAKE_BINARY_DIR}/src)
@@ -42,9 +46,9 @@ include_directories (${CMAKE_CURRENT_BINARY_DIR})

  function(add_test_by_name name)
    set (TEST_NAME ${name})
-  add_executable (${TEST_NAME} ${TEST_NAME}.cc gschemas.compiled)
+  add_executable (${TEST_NAME} ${TEST_NAME}.cc)
    add_test (${TEST_NAME} ${TEST_NAME})
-  add_dependencies (${TEST_NAME} ayatanaindicatorpowerservice)
+  add_dependencies (${TEST_NAME} ayatanaindicatorpowerservice  
gschemas-compiled)
    target_link_libraries (${TEST_NAME} ayatanaindicatorpowerservice  
gtest ${DBUSTEST_LIBRARIES} ${SERVICE_DEPS_LIBRARIES} ${GTEST_LIBS}  
${URLDISPATCHER_LIBRARIES})
  endfunction()
  add_test_by_name(test-notify)
```

(and when re-reading the blog post, I realized that the example was  
indeed the bad test case.)

Mike
-- 

DAS-NETZWERKTEAM
mike gabriel, herweg 7, 24357 fleckeby
mobile: +49 (1520) 1976 148
landline: +49 (4354) 8390 139

GnuPG Fingerprint: 9BFB AEE8 6C0A A5FF BF22  0782 9AF4 6B30 2577 1B31
mail: mike.gabriel at das-netzwerkteam.de, http://das-netzwerkteam.de

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 851 bytes
Desc: Digitale PGP-Signatur
URL: <http://lists.alioth.debian.org/pipermail/pkg-ayatana-devel/attachments/20180312/5a021634/attachment.sig>


More information about the Pkg-ayatana-devel mailing list