Merge lp:~compiz-team/compiz/compiz.fix_python_tests_failing_in_chroots into lp:compiz/0.9.8

Proposed by Sam Spilsbury
Status: Superseded
Proposed branch: lp:~compiz-team/compiz/compiz.fix_python_tests_failing_in_chroots
Merge into: lp:compiz/0.9.8
Diff against target: 98 lines (+36/-6)
5 files modified
compizconfig/compizconfig-python/tests/compiz_config_test.py (+9/-5)
compizconfig/gsettings/gsettings_backend_shared/CMakeLists.txt (+13/-1)
compizconfig/libcompizconfig/config/CMakeLists.txt (+3/-0)
compizconfig/libcompizconfig/config/config_test (+3/-0)
compizconfig/libcompizconfig/src/CMakeLists.txt (+8/-0)
To merge this branch: bzr merge lp:~compiz-team/compiz/compiz.fix_python_tests_failing_in_chroots
Reviewer Review Type Date Requested Status
Daniel van Vugt Needs Information
Francis Ginther continuous-integration Pending
Review via email: mp+116769@code.launchpad.net

This proposal has been superseded by a proposal from 2012-08-01.

Commit message

Fix some problems with python tests failing in chroots

1) Don't allow duplicate symbols
2) Set environment variables properly so that we always use the ini backend
3) Always use the specified testing config file for compizconfig

Description of the change

== Problem ==

Python tests fail non-determininstically in chroots

== Solution ==

  Fix some problems with python tests failing in chroots

  1) Don't allow duplicate symbols
  2) Set environment variables properly so that we always use the ini backend
  3) Always use the specified testing config file for compizconfig

== Test ==

Already covered by python tests

UNBLOCK

To post a comment you must log in.
3295. By Sam Spilsbury

Be more pythonic

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Works OK, but I'm a little concerned about dynamic linkage to locally built libraries in test cases:
add_library (gsettings_backend_shared SHARED

This means we're either relying on an LD_LIBRARY_PATH that is implicitly set (I don't see one) or the hardcoding of library paths (the source build directory) into our binaries.

How do we ensure tests find the right libgsettings_backend_shared.so at runtime?

review: Needs Information
Revision history for this message
Sam Spilsbury (smspillaz) wrote :

> Works OK, but I'm a little concerned about dynamic linkage to locally built
> libraries in test cases:
> add_library (gsettings_backend_shared SHARED
>
> This means we're either relying on an LD_LIBRARY_PATH that is implicitly set
> (I don't see one) or the hardcoding of library paths (the source build
> directory) into our binaries.
>
> How do we ensure tests find the right libgsettings_backend_shared.so at
> runtime?

The library is installed in the right place.

46 + install (TARGETS gsettings_backend_shared
47 + DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

That's not relevant. Tests don't use the install tree. They use the build tree.

Revision history for this message
Sam Spilsbury (smspillaz) wrote :

> That's not relevant. Tests don't use the install tree. They use the build
> tree.

Oh ok.

In terms of the build tree, the right libraries are automatically pulled in at runtime, since libgsettings.so is linked to libgsettings_backend_shared.so (which resolves to the local version inside the build tree, and then is re-linked at install time).

Also from what I've read its not possible to change LD_LIBRARY_PATH at runtime anyways, you need to use a wrapper to do it, which isn't very valgrind friendly.

Unmerged revisions

3295. By Sam Spilsbury

Be more pythonic

3294. By Sam Spilsbury

Fix some problems with python tests failing in chroots

1) Don't allow duplicate symbols
2) Set environment variables properly so that we always use the ini backend
3) Always use the specified testing config file for compizconfig

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'compizconfig/compizconfig-python/tests/compiz_config_test.py'
2--- compizconfig/compizconfig-python/tests/compiz_config_test.py 2012-07-07 05:53:00 +0000
3+++ compizconfig/compizconfig-python/tests/compiz_config_test.py 2012-07-27 08:33:22 +0000
4@@ -1,14 +1,18 @@
5 import os
6+
7+os.environ["G_SLICE"] = "always-malloc"
8+os.environ["COMPIZ_CONFIG_PROFILE"] = ""
9+os.environ["XDG_CONFIG_HOME"] = "compizconfig/libcompizconfig/config"
10+os.environ["COMPIZ_METADATA_PATH"] = "generated/"
11+os.environ["LIBCOMPIZCONFIG_BACKEND_PATH"] = "compizconfig/libcompizconfig/backend/"
12+os.environ["XDG_DATA_DIRS"] = "generated/"
13+
14 import sys
15 import subprocess
16
17 arch = subprocess.Popen (["uname", "-p"], stdout=subprocess.PIPE).communicate ()[0][:-1]
18
19-os.environ["COMPIZ_METADATA_PATH"] = "generated/"
20-os.environ["LIBCOMPIZCONFIG_BACKEND_PATH"] = "compizconfig/libcompizconfig/backend/"
21-os.environ["XDG_DATA_DIRS"] = "generated/"
22-
23-sys.path.append ("compizconfig/compizconfig-python/build/lib.linux-" + arch + "-" + str (sys.version_info[0]) + "." + str (sys.version_info[1]) + "/")
24+sys.path.insert (0, "compizconfig/compizconfig-python/build/lib.linux-%s-%s.%s/" % (arch, sys.version_info[0], sys.version_info[1]))
25
26 import unittest
27 import compizconfig
28
29=== modified file 'compizconfig/gsettings/gsettings_backend_shared/CMakeLists.txt'
30--- compizconfig/gsettings/gsettings_backend_shared/CMakeLists.txt 2012-07-05 21:11:17 +0000
31+++ compizconfig/gsettings/gsettings_backend_shared/CMakeLists.txt 2012-07-27 08:33:22 +0000
32@@ -15,12 +15,24 @@
33 link_directories (${GSETTINGS_UTIL_LIBRARY_DIRS}
34 ${compiz_BINARY_DIR}/compizconfig/libcompizconfig)
35
36- add_library (gsettings_backend_shared STATIC
37+ add_library (gsettings_backend_shared SHARED
38 ${CMAKE_CURRENT_SOURCE_DIR}/gsettings_constants.c
39 ${CMAKE_CURRENT_SOURCE_DIR}/gsettings_util.c)
40
41+
42 target_link_libraries (gsettings_backend_shared
43 ${GSETTINGS_UTIL_LIBRARIES}
44 compizconfig)
45
46+ install (TARGETS gsettings_backend_shared
47+ DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
48+
49+ #
50+ # Tell CMake that targets using gsettings_backend_shared should NOT re-import the
51+ # libraries that gsettings_backend_shared depends on (contains).
52+ #
53+ set_target_properties (gsettings_backend_shared PROPERTIES
54+ LINK_INTERFACE_LIBRARIES ""
55+ )
56+
57 endif (GSETTINGS_UTIL_FOUND)
58
59=== modified file 'compizconfig/libcompizconfig/config/CMakeLists.txt'
60--- compizconfig/libcompizconfig/config/CMakeLists.txt 2012-05-24 06:48:55 +0000
61+++ compizconfig/libcompizconfig/config/CMakeLists.txt 2012-07-27 08:33:22 +0000
62@@ -1,6 +1,9 @@
63 set (_config_file
64 config)
65
66+configure_file (${CMAKE_CURRENT_SOURCE_DIR}/config_test
67+ ${CMAKE_CURRENT_BINARY_DIR}/compiz-1/compizconfig/config)
68+
69 compiz_opt_install_file (${CMAKE_CURRENT_SOURCE_DIR}/${_config_file} ${COMPIZ_SYSCONFDIR}/compizconfig/${_config_file})
70
71 add_custom_target (
72
73=== added file 'compizconfig/libcompizconfig/config/config_test'
74--- compizconfig/libcompizconfig/config/config_test 1970-01-01 00:00:00 +0000
75+++ compizconfig/libcompizconfig/config/config_test 2012-07-27 08:33:22 +0000
76@@ -0,0 +1,3 @@
77+[general]
78+backend = ini
79+plugin_list_autosort = true
80
81=== modified file 'compizconfig/libcompizconfig/src/CMakeLists.txt'
82--- compizconfig/libcompizconfig/src/CMakeLists.txt 2012-07-03 06:22:53 +0000
83+++ compizconfig/libcompizconfig/src/CMakeLists.txt 2012-07-27 08:33:22 +0000
84@@ -68,6 +68,14 @@
85 compizconfig ${LIBCOMPIZCONFIG_LIBRARIES} m
86 )
87
88+#
89+# Tell CMake that targets using compizconfig should NOT re-import the
90+# libraries that compizconfig depends on (contains).
91+#
92+set_target_properties (compizconfig PROPERTIES
93+ LINK_INTERFACE_LIBRARIES ""
94+)
95+
96 set (COMPIZCONFIG_LIBS "")
97 foreach (_val ${LIBCOMPIZCONFIG_LDFLAGS})
98 set (COMPIZCONFIG_LIBS "${COMPIZCONFIG_LIBS}${_val} ")

Subscribers

People subscribed via source and target branches