Merge lp:~compiz-team/compiz/build-fixes-part-3-compizconfig-python into lp:~compiz/compiz/ubuntu

Proposed by Sam Spilsbury
Status: Superseded
Proposed branch: lp:~compiz-team/compiz/build-fixes-part-3-compizconfig-python
Merge into: lp:~compiz/compiz/ubuntu
Prerequisite: lp:~compiz-team/compiz/build-fixes-part-2
Diff against target: 310 lines (+99/-35)
10 files modified
compizconfig/CMakeLists.txt (+2/-2)
compizconfig/ccsm/CMakeLists.txt (+5/-5)
compizconfig/compizconfig-python/CMakeLists.txt (+46/-19)
compizconfig/compizconfig-python/setup.py (+13/-9)
compizconfig/compizconfig-python/tests/test_backend.py (+4/-0)
compizconfig/compizconfig-python/tests/test_plugin.py (+4/-0)
compizconfig/compizconfig-python/tests/test_profile.py (+4/-0)
compizconfig/compizconfig-python/tests/test_setting.py (+4/-0)
compizconfig/libcompizconfig/CMakeLists.txt (+5/-0)
compizconfig/libcompizconfig/libcompizconfig_internal.pc.in (+12/-0)
To merge this branch: bzr merge lp:~compiz-team/compiz/build-fixes-part-3-compizconfig-python
Reviewer Review Type Date Requested Status
compiz packagers Pending
Review via email: mp+106515@code.launchpad.net

Description of the change

Testers should really test the last item in the branch pipeline lp:~compiz-team/compiz/build-fixes-part-10-animationaddon-plugin

This branch gets compizconfig-python working using slightly saner build rules

To post a comment you must log in.

Unmerged revisions

3209. By Sam Spilsbury

Allow python tests to be run independently

3208. By Sam Spilsbury

Added a note about target regeneration

3207. By Sam Spilsbury

Make compizconfig-python build as a proper binary to cmake so the generated
source file is picked up by make clean

3206. By Sam Spilsbury

Merged build-fixes-part-2 into build-fixes-part-3-python-install.

3205. By Sam Spilsbury

Install compizconfig-python correctly without relying on hacks in cmake

3204. By Sam Spilsbury

Fix asprintf warnings in ini backend

3203. By Sam Spilsbury

Merge first part of build fixes

3202. By Daniel van Vugt

Fix all compiler warnings and turn on -Werror again (treat warnings as errors)

3201. By Daniel van Vugt

Don't autmatically build compizconfig right now. It breaks cmake globally
and causes many different build failures, even in core components.

3200. By Sam Spilsbury

Don't depend on external compiz or libcompizconfig

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'compizconfig/CMakeLists.txt'
2--- compizconfig/CMakeLists.txt 2012-05-20 10:47:01 +0000
3+++ compizconfig/CMakeLists.txt 2012-05-20 10:47:06 +0000
4@@ -5,8 +5,8 @@
5 set (COMPIZCONFIG_LIBRARY_DIRS ${CMAKE_CURRENT_BINARY_DIR}/libcompizconfig)
6
7 add_subdirectory (libcompizconfig)
8-#add_subdirectory (compizconfig-python)
9-#add_subdirectory (ccsm)
10+add_subdirectory (compizconfig-python)
11+add_subdirectory (ccsm)
12 #add_subdirectory (gconf)
13 #add_subdirectory (gsettings)
14
15
16=== modified file 'compizconfig/ccsm/CMakeLists.txt'
17--- compizconfig/ccsm/CMakeLists.txt 2012-05-20 10:47:01 +0000
18+++ compizconfig/ccsm/CMakeLists.txt 2012-05-20 10:47:06 +0000
19@@ -14,11 +14,6 @@
20 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
21 COMMENT "Generating Python Bytecode")
22
23-add_custom_target (install
24- COMMAND python setup.py install --prefix=${CMAKE_INSTALL_PREFIX}
25- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
26- COMMENT "Installing Python Files")
27-
28 add_custom_target (pyclean_ccsm
29 COMMAND python setup.py clean
30 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
31@@ -29,6 +24,11 @@
32 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
33 COMMENT "Uninstalling Python Files")
34
35+install (CODE
36+ "message (\"Installing python files\")
37+ execute_process (COMMAND python setup.py install --prefix=${CMAKE_INSTALL_PREFIX}
38+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})")
39+
40 #add_dependencies (clean pyclean)
41
42 compiz_print_configure_header ("CompizConfig Settings Manager")
43
44=== modified file 'compizconfig/compizconfig-python/CMakeLists.txt'
45--- compizconfig/compizconfig-python/CMakeLists.txt 2012-05-20 10:47:01 +0000
46+++ compizconfig/compizconfig-python/CMakeLists.txt 2012-05-20 10:47:06 +0000
47@@ -9,28 +9,57 @@
48
49 set (VERSION ${COMPIZ_RELEASE_VERSION})
50
51-add_custom_target (python ALL
52- COMMAND python setup.py build
53- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
54+add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/compizconfig_wrapper.c
55+ COMMAND echo \"int main (void) { return 0\; }\" >> ${CMAKE_CURRENT_BINARY_DIR}/compizconfig_wrapper.c
56+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
57+
58+# Get arch
59+execute_process (COMMAND uname -p OUTPUT_VARIABLE PROC_ARCH)
60+
61+# Get Python Version
62+execute_process (COMMAND python -c "import sys; print str (sys.version_info.major) + '.' + str (sys.version_info.minor)"
63+ OUTPUT_VARIABLE PY_VERSION)
64+
65+string (REPLACE "\n" "" PROC_ARCH ${PROC_ARCH})
66+string (REPLACE "\n" "" PY_VERSION ${PY_VERSION})
67+
68+set (PY_BUILD_DIR lib.linux-${PROC_ARCH}-${PY_VERSION})
69+set (PY_SCRIPTS_DIR scripts-${PY_VERSION})
70+
71+set (PY_COMPIZCONFIG_SRC ${CMAKE_CURRENT_BINARY_DIR}/compizconfig.c)
72+set (PY_COMPIZCONFIG_VERSION ${CMAKE_CURRENT_BINARY_DIR}/VERSION)
73+
74+add_custom_command (OUTPUT ${PY_COMPIZCONFIG_VERSION}
75+ COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/VERSION ${CMAKE_CURRENT_BINARY_DIR}/VERSION)
76+
77+add_custom_command (OUTPUT ${PY_COMPIZCONFIG_SRC}
78+ COMMAND cython -o ${PY_COMPIZCONFIG_SRC} ${CMAKE_CURRENT_SOURCE_DIR}/src/compizconfig.pyx
79+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
80+
81+set (PY_COMPIZCONFIG_LIB ${CMAKE_CURRENT_BINARY_DIR}/build/${PY_BUILD_DIR}/compizconfig.so)
82+
83+add_custom_command (OUTPUT ${PY_COMPIZCONFIG_LIB}
84+ COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/setup.py build --build-base=${CMAKE_CURRENT_BINARY_DIR}/build
85+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
86+ DEPENDS ${PY_COMPIZCONFIG_SRC} ${PY_COMPIZCONFIG_VERSION}
87 COMMENT "Generating Python Bytecode")
88
89-add_custom_target (install
90- COMMAND python setup.py install --prefix=${CMAKE_INSTALL_PREFIX}
91- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
92- COMMENT "Installing Python Files")
93-
94-add_custom_target (pyclean_ccsm
95- COMMAND python setup.py clean
96- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
97- COMMENT "Cleaning Python Files")
98+add_library (compizconfig_wrapper
99+ ${CMAKE_CURRENT_BINARY_DIR}/compizconfig_wrapper.c
100+ ${PY_COMPIZCONFIG_LIB})
101
102 add_custom_target (uninstall
103- COMMAND python setup.py uninstall
104- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
105+ COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/setup.py uninstall
106+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
107 COMMENT "Uninstalling Python Files")
108
109-#add_dependencies (clean pyclean)
110-add_dependencies (python compizconfig)
111+
112+install (CODE
113+ "message (\"Installing python files\")
114+ execute_process (COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/setup.py install --prefix=${CMAKE_INSTALL_PREFIX}
115+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})")
116+
117+add_dependencies (compizconfig_wrapper compizconfig)
118
119 find_program (PYTHON_EXECUTABLE python)
120 mark_as_advanced (FORCE PYTHON_EXECUTABLE)
121@@ -41,7 +70,7 @@
122 foreach (PYTHON_TEST_FILE ${PYTHON_TESTS})
123 get_filename_component (PYTHON_TEST ${PYTHON_TEST_FILE} NAME_WE)
124 message (STATUS "Adding test " ${PYTHON_TEST})
125- add_test (NAME ${PYTHON_TEST} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/tests" COMMAND ${PYTHON_EXECUTABLE} -m unittest ${PYTHON_TEST})
126+ add_test (NAME ${PYTHON_TEST} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/tests" COMMAND ${PYTHON_EXECUTABLE} ${PYTHON_TEST})
127 endforeach (PYTHON_TEST_FILE)
128 endif (PYTHON_EXECUTABLE)
129
130@@ -52,5 +81,3 @@
131 compiz_add_distcheck ()
132 compiz_add_release ()
133 compiz_add_release_signoff ()
134-
135-
136
137=== modified file 'compizconfig/compizconfig-python/setup.py'
138--- compizconfig/compizconfig-python/setup.py 2012-05-20 10:47:01 +0000
139+++ compizconfig/compizconfig-python/setup.py 2012-05-20 10:47:06 +0000
140@@ -11,13 +11,17 @@
141 import unittest
142 import os
143
144+pkg_config_environ = os.environ
145+pkg_config_environ["PKG_CONFIG_PATH"] = os.getcwd () + "/../libcompizconfig:" + os.environ.get ("PKG_CONFIG_PATH", '')
146+
147 # If src/compizconfig.pyx exists, build using Cython
148-if os.path.exists ("src/compizconfig.pyx"):
149+if os.path.exists (os.getcwd () + "/src/compizconfig.pyx"):
150 from Cython.Distutils import build_ext
151- ext_module_src = "src/compizconfig.pyx"
152+ print "using pyx"
153+ ext_module_src = os.getcwd () + "/src/compizconfig.pyx"
154 else: # Otherwise build directly from C source
155 from distutils.command.build_ext import build_ext
156- ext_module_src = "src/compizconfig.c"
157+ ext_module_src = os.getcwd () + "/compizconfig.c"
158
159 version_file = open ("VERSION", "r")
160 version = version_file.read ().strip ()
161@@ -28,7 +32,7 @@
162 flag_map = {'-I': 'include_dirs', '-L': 'library_dirs', '-l': 'libraries', '-R': 'runtime_library_dirs'}
163 cmd = ['pkg-config', '--libs', '--cflags']
164
165- tokens = subprocess.Popen (cmd + list(packages), stdout=subprocess.PIPE).communicate()[0].split ()
166+ tokens = subprocess.Popen (cmd + list(packages), stdout=subprocess.PIPE, env=pkg_config_environ).communicate()[0].split ()
167
168 for t in tokens:
169 if '-L' in t[:2]:
170@@ -44,10 +48,10 @@
171
172 VERSION_FILE = os.path.join (os.path.dirname (__file__), "VERSION")
173
174-pkgconfig_libs = subprocess.Popen (["pkg-config", "--libs", "libcompizconfig"], stdout=subprocess.PIPE, stderr=open(os.devnull, 'w')).communicate ()[0]
175+pkgconfig_libs = subprocess.Popen (["pkg-config", "--libs", "libcompizconfig_internal"], stdout=subprocess.PIPE, env=pkg_config_environ, stderr=open(os.devnull, 'w')).communicate ()[0]
176
177 if len (pkgconfig_libs) is 0:
178- print ("CompizConfig Python [ERROR]: No libcompizconfig.pc found in the pkg-config search path")
179+ print ("CompizConfig Python [ERROR]: No libcompizconfig_internal.pc found in the pkg-config search path")
180 print ("Ensure that libcompizonfig is installed or libcompizconfig.pc is in your $PKG_CONFIG_PATH")
181 exit (1);
182 libs = pkgconfig_libs[2:].split (" ")[0]
183@@ -120,7 +124,7 @@
184 # Build C file
185 if os.path.exists ("src/compizconfig.pyx"):
186 from Cython.Compiler.Main import compile as cython_compile
187- cython_compile ("src/compizconfig.pyx")
188+ cython_compile ("src/compizconfig.pyx", output_file=os.getcwd () + "/compizconfig.c")
189 # Run regular sdist
190 _sdist.run (self)
191
192@@ -129,7 +133,7 @@
193 # Remove pyx source and add c source
194 if os.path.exists ("src/compizconfig.pyx"):
195 self.filelist.exclude_pattern ("src/compizconfig.pyx")
196- self.filelist.append ("src/compizconfig.c")
197+ self.filelist.append ("compizconfig.c")
198
199 class test (Command):
200 description = "run tests"
201@@ -167,7 +171,7 @@
202 "test" : test},
203 ext_modules=[
204 Extension ("compizconfig", [ext_module_src],
205- **pkgconfig("libcompizconfig"))
206+ **pkgconfig("libcompizconfig_internal"))
207 ]
208 )
209
210
211=== modified file 'compizconfig/compizconfig-python/tests/test_backend.py'
212--- compizconfig/compizconfig-python/tests/test_backend.py 2012-05-20 10:47:01 +0000
213+++ compizconfig/compizconfig-python/tests/test_backend.py 2012-05-20 10:47:06 +0000
214@@ -1,4 +1,5 @@
215 import compiz_config_test
216+import unittest
217
218 class CompizConfigTestBackend (compiz_config_test.CompizConfigTest):
219
220@@ -13,3 +14,6 @@
221 self.assertEqual (backend.LongDesc, "Flat File Backend")
222 self.assertEqual (backend.IntegrationSupport, False)
223 self.assertEqual (backend.ProfileSupport, True)
224+
225+if __name__ == '__main__':
226+ unittest.main()
227
228=== modified file 'compizconfig/compizconfig-python/tests/test_plugin.py'
229--- compizconfig/compizconfig-python/tests/test_plugin.py 2012-05-20 10:47:01 +0000
230+++ compizconfig/compizconfig-python/tests/test_plugin.py 2012-05-20 10:47:06 +0000
231@@ -1,4 +1,5 @@
232 import compiz_config_test
233+import unittest
234
235 class CompizConfigTestPlugin (compiz_config_test.CompizConfigTest):
236
237@@ -15,3 +16,6 @@
238 self.assertTrue (plugin.Category is not None)
239 self.assertTrue (plugin.Features is not None)
240 self.assertTrue (plugin.Initialized is True)
241+
242+if __name__ == '__main__':
243+ unittest.main()
244
245=== modified file 'compizconfig/compizconfig-python/tests/test_profile.py'
246--- compizconfig/compizconfig-python/tests/test_profile.py 2012-05-20 10:47:01 +0000
247+++ compizconfig/compizconfig-python/tests/test_profile.py 2012-05-20 10:47:06 +0000
248@@ -1,4 +1,5 @@
249 import compiz_config_test
250+import unittest
251
252 class CompizConfigProfileTest (compiz_config_test.CompizConfigTest):
253
254@@ -10,3 +11,6 @@
255 self.assertEqual (profile1.Name, "compizconfig2", 'wrong profile name')
256 profile2 = self.ccs.Profile (self.context, "compizconfig3")
257 self.assertEqual (profile2.Name, "compizconfig3", 'wrong profile name')
258+
259+if __name__ == '__main__':
260+ unittest.main()
261
262=== modified file 'compizconfig/compizconfig-python/tests/test_setting.py'
263--- compizconfig/compizconfig-python/tests/test_setting.py 2012-05-20 10:47:01 +0000
264+++ compizconfig/compizconfig-python/tests/test_setting.py 2012-05-20 10:47:06 +0000
265@@ -1,4 +1,5 @@
266 import compiz_config_test
267+import unittest
268
269 class CompizConfigTestSetting (compiz_config_test.CompizConfigTest):
270
271@@ -19,3 +20,6 @@
272 self.assertTrue (setting.Value is not None)
273 self.assertEqual (setting.Integrated, False)
274 self.assertEqual (setting.ReadOnly, False)
275+
276+if __name__ == '__main__':
277+ unittest.main()
278
279=== modified file 'compizconfig/libcompizconfig/CMakeLists.txt'
280--- compizconfig/libcompizconfig/CMakeLists.txt 2012-05-20 10:47:01 +0000
281+++ compizconfig/libcompizconfig/CMakeLists.txt 2012-05-20 10:47:06 +0000
282@@ -133,6 +133,11 @@
283 ${CMAKE_CURRENT_BINARY_DIR}/libcompizconfig.pc
284 )
285
286+compiz_configure_file (
287+ ${CMAKE_CURRENT_SOURCE_DIR}/libcompizconfig_internal.pc.in
288+ ${CMAKE_CURRENT_BINARY_DIR}/libcompizconfig_internal.pc
289+)
290+
291 install (
292 FILES ${CMAKE_CURRENT_BINARY_DIR}/libcompizconfig.pc
293 DESTINATION ${COMPIZ_DESTDIR}${libdir}/pkgconfig
294
295=== added file 'compizconfig/libcompizconfig/libcompizconfig_internal.pc.in'
296--- compizconfig/libcompizconfig/libcompizconfig_internal.pc.in 1970-01-01 00:00:00 +0000
297+++ compizconfig/libcompizconfig/libcompizconfig_internal.pc.in 2012-05-20 10:47:06 +0000
298@@ -0,0 +1,12 @@
299+prefix=@CMAKE_CURRENT_BINARY_DIR@/src/
300+exec_prefix=@CMAKE_CURRENT_BINARY_DIR@/src/
301+libdir=@CMAKE_CURRENT_BINARY_DIR@/src/
302+includedir=@CMAKE_CURRENT_SOURCE_DIR@/include
303+
304+Name: libcompizconfig_internal
305+Description: Compiz configuration system (internal)
306+Version: @VERSION@
307+
308+Libs: -L@CMAKE_CURRENT_BINARY_DIR@/src/ -lcompizconfig
309+Cflags: -I@CMAKE_CURRENT_SOURCE_DIR@/include
310+

Subscribers

People subscribed via source and target branches