Merge lp:~michihenning/unity-scopes-api/abigail into lp:unity-scopes-api/devel
- abigail
- Merge into devel
Status: | Merged |
---|---|
Approved by: | James Henstridge |
Approved revision: | 683 |
Merged at revision: | 655 |
Proposed branch: | lp:~michihenning/unity-scopes-api/abigail |
Merge into: | lp:unity-scopes-api/devel |
Diff against target: |
368 lines (+124/-96) 10 files modified
HACKING (+4/-7) debian/VERSION (+1/-1) debian/changelog (+24/-0) debian/control.in (+2/-1) test/CMakeLists.txt (+1/-1) test/abi-compliance/CMakeLists.txt (+10/-6) test/abi-compliance/abi.xml.in (+0/-57) test/abi-compliance/check-abi-compliance.sh.in (+59/-21) test/abi-compliance/gen-abi-dump.sh.in (+2/-2) test/abi-compliance/suppressions (+21/-0) |
To merge this branch: | bzr merge lp:~michihenning/unity-scopes-api/abigail |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
James Henstridge | Approve | ||
PS Jenkins bot (community) | continuous-integration | Approve | |
Review via email: mp+285551@code.launchpad.net |
Commit message
Changed from acc-compliance-
Description of the change
I think this is good to go now. I've tested both on Jenkins and in a silo.
We now use abigail instead of abi-compliance-
The approach is much the same: dump the current ABI and compare that against a saved dump of the base ABI.
Due to some minor problems with abidiff suppressions and abidiff exit status, the check script currently suppresses output about added functions wholesale and then tests for success by checking that the generated report is empty. Once we a get a new version of abidiff, I'll update the check script to fail for added functions, so we can review explicitly what was added by a new version, and then add suppression directives as appropriate. This will serve as good sanity check (and the generated output is quite readable, so it's easy to do).
This does not affect the safety of the check: despite the work-around, we *will* reliably detect ABI breakage (just not as elegantly as I would like).
Abigail is faster than abi-compliance-
PS Jenkins bot (ps-jenkins) wrote : | # |
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:660
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:661
http://
Executed test runs:
SUCCESS: http://
FAILURE: http://
SUCCESS: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:663
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:673
http://
Executed test runs:
SUCCESS: http://
FAILURE: http://
SUCCESS: http://
SUCCESS: http://
FAILURE: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:676
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 677. By Michi Henning
-
Added test go guard against compilations without -g.
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:677
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
- 678. By Michi Henning
-
Test was broken.
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:678
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
James Henstridge (jamesh) wrote : | # |
This looks pretty good. I've left a few inline comments about possible simplifications
Michi Henning (michihenning) wrote : | # |
> This looks pretty good. I've left a few inline comments about possible
> simplifications
Thanks for the review!
I've fixed the gunzip issue and added back a comment in HACKING about where to find the report
With the cmake thing, I stuffed around with that for quite a while. The custom command to dump the abi is necessary because it needs to be dumped whenever it isn't there yet, or after the library has been rebuilt.
For the check-abi step, I want to make sure that the test runs every time, whether the abi dump is new or not. With a naive approach, using add_custom_
But, to force re-generation of the abi dump if necessary, I *have* to use a a custom command that depends on the dump file. In the end, the only reliable way I managed to come up with was to use the dummy output file. If there is a simpler way of doing this, I'd like to find out though. Every time I use add_custom_
With the suppressions, things are in progress. There *is* a bug, but in a slightly different shape than I thought. Dodji has come up with a work-around the deals with the problem I was seeing though. So, on Monday, I think I'll be able to turn suppressions on and do things properly (with a slight hack in the suppressions file). I'll push another branch then with a link to the bug tracker as appropriate.
If there is any cargo-culting, it'll at least be cleaner cargo after that :-)
PS: Have you ever read "Dream Park--The California Voodoo Game"? If not, do. You will probably enjoy it :-)
James Henstridge (jamesh) wrote : | # |
Okay, so I guess there are two options here:
1. If you want to generate a new dump as part of the vbuild process, why not just have a custom_command that depends on the libunity-scopes target and outputs the ABI dump, rather than dealing with the "run_always" bits?
2. Do you even need to dump the current ABI to an XML file as part of the test? Might it be quicker to just have abidiff compare the reference XML dump against the just-built .so file? That would reduce the number of moving parts in the test, and would likely be even faster.
I can understand having a helper script to generate a dump based on the just-built library, but it doesn't seem like a prerequisite for running the tests.
- 679. By Michi Henning
-
Some review comments from James.
Changed script to use suppressions file after getting a work-around for the partial
suppressions from Dodji.
Michi Henning (michihenning) wrote : | # |
> Okay, so I guess there are two options here:
>
> 1. If you want to generate a new dump as part of the vbuild process, why not
> just have a custom_command that depends on the libunity-scopes target and
> outputs the ABI dump, rather than dealing with the "run_always" bits?
Now I'm confused. I already have this command:
add_custom_command(
OUTPUT ${abi_dump_file}
COMMAND ${abi_dump_cmd}
DEPENDS ${UNITY_
add_custom_
This generates the dump if the dump doesn't exist yet or is out of date with respect to the library.
The run always hack is necessary because, without it, a "make test" will correctly complain the first time but, if I have a failure the first time and then do "make test" again, I end up with nothing being done at all, because nothing is out of date, and the second run then incorrectly reports success when, in fact, the failure is still there.
> 2. Do you even need to dump the current ABI to an XML file as part of the
> test? Might it be quicker to just have abidiff compare the reference XML dump
> against the just-built .so file? That would reduce the number of moving parts
> in the test, and would likely be even faster.
I considered doing this, but decided not to. Any speed difference is completely unnoticeable because analysing the dump takes many times longer than uncompressing it. That's for a large dump. For a small dump, the difference is also unnoticeable because a small dump will uncompress very quickly.
And I figured it would be useful to leave the dump behind. When something goes wrong, and people want to dig into it, they don't have to copy and uncompress it manually, making sure that they use the correct arch subdirectory.
The dump file is also useful for reporting issues with abidiff, because I have everything I need (both dumps and the suppressions file) right there.
I've updated the clean target though to get rid of the base dump, so a "make clean" actually reclaims the disk space.
> I can understand having a helper script to generate a dump based on the just-
> built library, but it doesn't seem like a prerequisite for running the tests.
The helper script to create the dump is useful for generating the dump by hand (say, for debugging). It also avoids a needless dump on Vivid. Doing that sort of thing directly in cmake rapidly gets cumbersome. Using the helper script is cleaner, I think?
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:679
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 680. By Michi Henning
-
Fix exit status in currently unused code.
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:680
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 681. By Michi Henning
-
Added comment.
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:681
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 682. By Michi Henning
-
Merged devel.
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:682
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
James Henstridge (jamesh) wrote : | # |
> > 2. Do you even need to dump the current ABI to an XML file as part of the
> > test? Might it be quicker to just have abidiff compare the reference XML
> dump
> > against the just-built .so file? That would reduce the number of moving
> parts
> > in the test, and would likely be even faster.
>
> I considered doing this, but decided not to. Any speed difference is
> completely unnoticeable because analysing the dump takes many times longer
> than uncompressing it. That's for a large dump. For a small dump, the
> difference is also unnoticeable because a small dump will uncompress very
> quickly.
>
> And I figured it would be useful to leave the dump behind. When something goes
> wrong, and people want to dig into it, they don't have to copy and uncompress
> it manually, making sure that they use the correct arch subdirectory.
>
> The dump file is also useful for reporting issues with abidiff, because I have
> everything I need (both dumps and the suppressions file) right there.
>
> I've updated the clean target though to get rid of the base dump, so a "make
> clean" actually reclaims the disk space.
I was curious what the time difference was, so I ran a few tests on my Chromebook (since armhf always seems to be the last to finish building, and hopefully the Chromebook is similar enough). I used the vivid versions of abigail and extracted the latest Xenial builds of libunity-scopes-api (this uses detached debug info, but hopefully that doesn't influence things too much).
First of all, the timings to extract an ABI dump and compare it to itself:
$ time abidw --debug-info-dir root/usr/lib/debug root/usr/
real 1m25.146s
user 1m21.865s
sys 0m2.975s
$ time abidiff dump.xml dump.xml
real 3m4.622s
user 3m1.870s
sys 0m2.565s
And as the alternative I was suggesting, comparing the XML dump against the library itself:
$ time abidiff --debug-info-dir2 root/usr/lib/debug dump.xml root/usr/
real 2m30.120s
user 2m27.060s
sys 0m2.605s
So in addition to saving the 1.5 minutes taken to create the XML dump, the actual comparison process took 30 seconds less. All up, that's a 45% reduction in runtime
The times with the xenial version of abigail-tools seem a bit different on my amd64 box, but I'm still seeing significantly lower overall time for abidiff against the .so vs. abidw+abidiff.
James Henstridge (jamesh) wrote : | # |
Just recording part of a conversation from IRC. Michi got the following error when comparing the XML dump to the shared library on his system:
http://
In the XML dump, these are defined here:
<elf-symbol name='_
<elf-symbol name='_
The "alias" attribute on the first line seems erroneous, since the first mangled name is ConfigException
- 683. By Michi Henning
-
Fixed broken clean target.
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:683
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
Michi Henning (michihenning) wrote : | # |
Dodji has fixed the issues around he different behaviour when using a dump vs comparing the base dump against the .so.
We'll have to wait until the next version of abigail makes it into archives. At that point, we'll also have to re-generate the base dumps because, as it turns out, they are currently not storing all of the relevant information.
At that point, we also should consider comparing against two dumps: the base dump, to make sure we haven't broken ABI with respect to the base, and the most recently-released version dump, to make sure that, in a later version, we haven't removed something that was added on an earlier (non-base) version, thereby breaking ABI not against the base, but against a version that was released into the wild.
James Henstridge (jamesh) wrote : | # |
As discussed earlier, there is room for improvement but that will probably require a new version of abigail. This is obviously a big improvement over a-c-c, so lets merge it and improve it later.
Preview Diff
1 | === modified file 'HACKING' |
2 | --- HACKING 2015-09-15 21:55:44 +0000 |
3 | +++ HACKING 2016-02-15 06:03:52 +0000 |
4 | @@ -293,13 +293,13 @@ |
5 | ABI compliance test |
6 | ------------------- |
7 | |
8 | -The tests include an ABI compliance test (for Wily and later). To run it: |
9 | +The tests include an ABI compliance test (for xenial and later). To run it: |
10 | |
11 | $ cd test/abi-compliance |
12 | $ make test |
13 | |
14 | The test is also automatically run as part of the test suite. |
15 | -It takes several minutes to run . If you don't want to wait during local builds, |
16 | +It takes a while to run. If you don't want to wait during local builds, |
17 | set the cmake "slowtests" option to OFF to skip the check. |
18 | |
19 | The baseline ABI files for the test are in test/abi-compliance/abi_dumps. |
20 | @@ -313,11 +313,8 @@ |
21 | Once all the packages are built, you can extract the ABI dump |
22 | files and add them to the corresponding directory in the source tree. |
23 | |
24 | -The abi-compliance-checker tool produces a report in |
25 | - |
26 | - test/abi-compliance/compat_reports/libunity-scopes.so/[version]_to_[version]/compat_report.html |
27 | - |
28 | -The report provides a nicely layed-out page with all the details. |
29 | +The abi compliance test produces a report in |
30 | +libunity-scopes_<current-version>_abi-report.txt if anything unusual is detected. |
31 | |
32 | Autopkg test suite |
33 | ------------------ |
34 | |
35 | === modified file 'debian/VERSION' |
36 | --- debian/VERSION 2015-09-21 12:30:26 +0000 |
37 | +++ debian/VERSION 2016-02-15 06:03:52 +0000 |
38 | @@ -1,1 +1,1 @@ |
39 | -1.0.2 |
40 | +1.0.3 |
41 | |
42 | === modified file 'debian/changelog' |
43 | --- debian/changelog 2015-12-18 11:42:03 +0000 |
44 | +++ debian/changelog 2016-02-15 06:03:52 +0000 |
45 | @@ -1,3 +1,27 @@ |
46 | +unity-scopes-api (1.0.3+16.04.20160209-0ubuntu2) UNRELEASED; urgency=medium |
47 | + |
48 | + [ Michi Henning ] |
49 | + * Changed ABI compliance testing to use abigail. |
50 | + |
51 | + -- Michi Henning <michi.henning@canonical.com> Mon, 15 Feb 2016 07:45:13 +1000 |
52 | + |
53 | +unity-scopes-api (1.0.3+16.04.20160209-0ubuntu1) xenial; urgency=medium |
54 | + |
55 | + [ Michi Henning ] |
56 | + * Bumped micro version. |
57 | + |
58 | + [ CI Train Bot ] |
59 | + * No-change rebuild. |
60 | + |
61 | + -- Rodney Dawes <ci-train-bot@canonical.com> Tue, 09 Feb 2016 15:15:15 +0000 |
62 | + |
63 | +unity-scopes-api (1.0.3) UNRELEASED; urgency=medium |
64 | + |
65 | + [ Michi Henning ] |
66 | + * Changed ABI compliance check to use abigail instead of abi-compliance-checker. |
67 | + |
68 | + -- Michi Henning <michi.henning@canonical.com> Tue, 09 Feb 2016 17:07:10 +1000 |
69 | + |
70 | unity-scopes-api (1.0.2+16.04.20151218.2-0ubuntu1) xenial; urgency=medium |
71 | |
72 | [ Michi Henning ] |
73 | |
74 | === modified file 'debian/control.in' |
75 | --- debian/control.in 2015-11-13 04:05:00 +0000 |
76 | +++ debian/control.in 2016-02-15 06:03:52 +0000 |
77 | @@ -1,7 +1,8 @@ |
78 | Source: unity-scopes-api |
79 | Priority: optional |
80 | Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> |
81 | -Build-Depends: abi-compliance-checker, |
82 | +Build-Depends: abigail-tools | libabigail-tools, |
83 | + binutils, |
84 | capnproto, |
85 | click-dev (>= 0.2.2), |
86 | cmake, |
87 | |
88 | === modified file 'test/CMakeLists.txt' |
89 | --- test/CMakeLists.txt 2015-09-09 07:37:01 +0000 |
90 | +++ test/CMakeLists.txt 2016-02-15 06:03:52 +0000 |
91 | @@ -5,5 +5,5 @@ |
92 | |
93 | if(${slowtests}) |
94 | add_subdirectory(headers) |
95 | - add_subdirectory(abi-compliance) # Keep this test last because it's really slow. |
96 | + add_subdirectory(abi-compliance) |
97 | endif() |
98 | |
99 | === modified file 'test/abi-compliance/CMakeLists.txt' |
100 | --- test/abi-compliance/CMakeLists.txt 2015-09-09 07:37:01 +0000 |
101 | +++ test/abi-compliance/CMakeLists.txt 2016-02-15 06:03:52 +0000 |
102 | @@ -1,11 +1,11 @@ |
103 | -configure_file(abi.xml.in ${CMAKE_CURRENT_BINARY_DIR}/abi.xml) |
104 | configure_file(check-abi-compliance.sh.in ${CMAKE_CURRENT_BINARY_DIR}/check-abi-compliance.sh @ONLY) |
105 | configure_file(gen-abi-dump.sh.in ${CMAKE_CURRENT_BINARY_DIR}/gen-abi-dump.sh @ONLY) |
106 | |
107 | set(abi_dump_cmd /bin/sh ${CMAKE_CURRENT_BINARY_DIR}/gen-abi-dump.sh) |
108 | set(abi_check_cmd /bin/sh ${CMAKE_CURRENT_BINARY_DIR}/check-abi-compliance.sh) |
109 | -set(abi_dump_file ${CMAKE_CURRENT_BINARY_DIR}/abi_dumps/lib${UNITY_SCOPES_LIB}/lib${UNITY_SCOPES_LIB}_${UNITY_SCOPES_FULL_VERSION}.abi.tar.gz) |
110 | -set(abi_report ${CMAKE_CURRENT_BINARY_DIR}/compat_reports/lib${UNITY_SCOPES_LIB}/lib${UNITY_SCOPES_LIB}/${UNITY_SCOPES_MAJOR_MINOR}.0_to_${UNITY_SCOPES_FULL_VERSION}/compat_report.html) |
111 | +set(abi_dump_file ${CMAKE_CURRENT_BINARY_DIR}/lib${UNITY_SCOPES_LIB}_${UNITY_SCOPES_FULL_VERSION}.abi.xml) |
112 | +set(abi_baseline_dump ${CMAKE_CURRENT_BINARY_DIR}/lib${UNITY_SCOPES_LIB}_${UNITY_SCOPES_MAJOR}.0.0.abi.xml) |
113 | +set(abi_report ${CMAKE_CURRENT_BINARY_DIR}/lib${UNITY_SCOPES_LIB}_${UNITY_SCOPES_FULL_VERSION}_abi-report.txt) |
114 | |
115 | add_custom_command( |
116 | OUTPUT ${abi_dump_file} |
117 | @@ -15,10 +15,14 @@ |
118 | add_custom_target(gen-abi-dump DEPENDS ${abi_dump_file}) |
119 | |
120 | add_custom_command( |
121 | - OUTPUT ${abi_report} |
122 | + OUTPUT run_always ${abi_report} |
123 | COMMAND ${abi_check_cmd} |
124 | - DEPENDS gen-abi-dump) |
125 | + DEPENDS ${abi_dump_file} ${suppressions}) |
126 | +set_source_files_properties(run_always |
127 | + PROPERTIES SYMBOLIC true) |
128 | +set_directory_properties(PROPERTIES |
129 | + ADDITIONAL_MAKE_CLEAN_FILES ${abi_baseline_dump}) |
130 | |
131 | -add_custom_target(check-abi DEPENDS ${abi_report}) |
132 | +add_custom_target(check-abi DEPENDS run_always) |
133 | |
134 | add_test(check-abi-compliance ${CMAKE_MAKE_PROGRAM} check-abi) |
135 | |
136 | === removed file 'test/abi-compliance/abi.xml.in' |
137 | --- test/abi-compliance/abi.xml.in 2015-08-27 06:41:36 +0000 |
138 | +++ test/abi-compliance/abi.xml.in 1970-01-01 00:00:00 +0000 |
139 | @@ -1,57 +0,0 @@ |
140 | -<version> |
141 | -@UNITY_SCOPES_MAJOR@.@UNITY_SCOPES_MINOR@.@UNITY_SCOPES_MICRO@ |
142 | -</version> |
143 | - |
144 | -<headers> |
145 | -@CMAKE_SOURCE_DIR@/include |
146 | -@CMAKE_BINARY_DIR@/src |
147 | -@CMAKE_BINARY_DIR@/include/unity |
148 | -</headers> |
149 | - |
150 | -<!-- |
151 | -We skip the internal include directories because we have separate tests |
152 | -that already ensure that no public header includes an internal one. |
153 | ---> |
154 | -<skip_include_paths> |
155 | -@CMAKE_BINARY_DIR@/include/unity/scopes/internal |
156 | -@CMAKE_BINARY_DIR@/include/unity/scopes/internal/lttng |
157 | -@CMAKE_BINARY_DIR@/include/unity/scopes/internal/smartscopes |
158 | -@CMAKE_BINARY_DIR@/include/unity/scopes/internal/zmq_middleware |
159 | -@CMAKE_BINARY_DIR@/include/unity/scopes/qt/internal |
160 | -@CMAKE_BINARY_DIR@/include/unity/scopes/utility/internal |
161 | -@CMAKE_SOURCE_DIR@/src/scopes/internal |
162 | -@CMAKE_SOURCE_DIR@/src/scopes/internal/lttng |
163 | -@CMAKE_SOURCE_DIR@/src/scopes/internal/smartscopes |
164 | -@CMAKE_SOURCE_DIR@/src/scopes/qt/internal |
165 | -@CMAKE_SOURCE_DIR@/src/scopes/utility/internal |
166 | -</skip_include_paths> |
167 | - |
168 | -<libs> |
169 | -@CMAKE_BINARY_DIR@/libunity-scopes.so |
170 | -</libs> |
171 | - |
172 | -<gcc_options> |
173 | --std=c++11 -fPIC -D_ENABLE_QT_EXPERIMENTAL_ -DQT_NO_KEYWORDS |
174 | -</gcc_options> |
175 | - |
176 | -<skip_namespaces> |
177 | -unity::scopes::internal |
178 | -unity::scopes::qt::internal |
179 | -unity::scopes::utility::internal |
180 | -</skip_namespaces> |
181 | - |
182 | -<skip_headers> |
183 | -@CMAKE_BINARY_DIR@/include/unity/Makefile |
184 | -@CMAKE_BINARY_DIR@/include/unity/scopes/internal/lttng/Makefile |
185 | -@CMAKE_BINARY_DIR@/include/unity/scopes/internal/Makefile |
186 | -@CMAKE_BINARY_DIR@/include/unity/scopes/internal/smartscopes/Makefile |
187 | -@CMAKE_BINARY_DIR@/include/unity/scopes/internal/zmq_middleware/Makefile |
188 | -@CMAKE_BINARY_DIR@/include/unity/scopes/Makefile |
189 | -@CMAKE_BINARY_DIR@/include/unity/scopes/qt/internal/Makefile |
190 | -@CMAKE_BINARY_DIR@/include/unity/scopes/qt/Makefile |
191 | -@CMAKE_BINARY_DIR@/include/unity/scopes/testing/Makefile |
192 | -@CMAKE_BINARY_DIR@/include/unity/scopes/utility/internal/Makefile |
193 | -@CMAKE_BINARY_DIR@/include/unity/scopes/utility/Makefile |
194 | -@CMAKE_SOURCE_DIR@/include/unity/scopes/internal/lttng/SimpleTracepoint.h |
195 | -@CMAKE_SOURCE_DIR@/include/unity/scopes/internal/lttng/UnityScopes_tp.h |
196 | -</skip_headers> |
197 | |
198 | === removed file 'test/abi-compliance/abi_dumps/aarch64-linux-gnu/libunity-scopes_1.0.0.abi.tar.gz' |
199 | Binary files test/abi-compliance/abi_dumps/aarch64-linux-gnu/libunity-scopes_1.0.0.abi.tar.gz 2015-09-08 02:29:27 +0000 and test/abi-compliance/abi_dumps/aarch64-linux-gnu/libunity-scopes_1.0.0.abi.tar.gz 1970-01-01 00:00:00 +0000 differ |
200 | === added file 'test/abi-compliance/abi_dumps/aarch64-linux-gnu/libunity-scopes_1.0.0.abi.xml.gz' |
201 | Binary files test/abi-compliance/abi_dumps/aarch64-linux-gnu/libunity-scopes_1.0.0.abi.xml.gz 1970-01-01 00:00:00 +0000 and test/abi-compliance/abi_dumps/aarch64-linux-gnu/libunity-scopes_1.0.0.abi.xml.gz 2016-02-15 06:03:52 +0000 differ |
202 | === removed file 'test/abi-compliance/abi_dumps/arm-linux-gnueabihf/libunity-scopes_1.0.0.abi.tar.gz' |
203 | Binary files test/abi-compliance/abi_dumps/arm-linux-gnueabihf/libunity-scopes_1.0.0.abi.tar.gz 2015-09-08 02:29:27 +0000 and test/abi-compliance/abi_dumps/arm-linux-gnueabihf/libunity-scopes_1.0.0.abi.tar.gz 1970-01-01 00:00:00 +0000 differ |
204 | === added file 'test/abi-compliance/abi_dumps/arm-linux-gnueabihf/libunity-scopes_1.0.0.abi.xml.gz' |
205 | Binary files test/abi-compliance/abi_dumps/arm-linux-gnueabihf/libunity-scopes_1.0.0.abi.xml.gz 1970-01-01 00:00:00 +0000 and test/abi-compliance/abi_dumps/arm-linux-gnueabihf/libunity-scopes_1.0.0.abi.xml.gz 2016-02-15 06:03:52 +0000 differ |
206 | === removed file 'test/abi-compliance/abi_dumps/i386-linux-gnu/libunity-scopes_1.0.0.abi.tar.gz' |
207 | Binary files test/abi-compliance/abi_dumps/i386-linux-gnu/libunity-scopes_1.0.0.abi.tar.gz 2015-09-08 02:29:27 +0000 and test/abi-compliance/abi_dumps/i386-linux-gnu/libunity-scopes_1.0.0.abi.tar.gz 1970-01-01 00:00:00 +0000 differ |
208 | === added file 'test/abi-compliance/abi_dumps/i386-linux-gnu/libunity-scopes_1.0.0.abi.xml.gz' |
209 | Binary files test/abi-compliance/abi_dumps/i386-linux-gnu/libunity-scopes_1.0.0.abi.xml.gz 1970-01-01 00:00:00 +0000 and test/abi-compliance/abi_dumps/i386-linux-gnu/libunity-scopes_1.0.0.abi.xml.gz 2016-02-15 06:03:52 +0000 differ |
210 | === removed file 'test/abi-compliance/abi_dumps/powerpc-linux-gnu/libunity-scopes_1.0.0.abi.tar.gz' |
211 | Binary files test/abi-compliance/abi_dumps/powerpc-linux-gnu/libunity-scopes_1.0.0.abi.tar.gz 2015-09-08 02:29:27 +0000 and test/abi-compliance/abi_dumps/powerpc-linux-gnu/libunity-scopes_1.0.0.abi.tar.gz 1970-01-01 00:00:00 +0000 differ |
212 | === added file 'test/abi-compliance/abi_dumps/powerpc-linux-gnu/libunity-scopes_1.0.0.abi.xml.gz' |
213 | Binary files test/abi-compliance/abi_dumps/powerpc-linux-gnu/libunity-scopes_1.0.0.abi.xml.gz 1970-01-01 00:00:00 +0000 and test/abi-compliance/abi_dumps/powerpc-linux-gnu/libunity-scopes_1.0.0.abi.xml.gz 2016-02-15 06:03:52 +0000 differ |
214 | === removed file 'test/abi-compliance/abi_dumps/powerpc64le-linux-gnu/libunity-scopes_1.0.0.abi.tar.gz' |
215 | Binary files test/abi-compliance/abi_dumps/powerpc64le-linux-gnu/libunity-scopes_1.0.0.abi.tar.gz 2015-09-08 02:29:27 +0000 and test/abi-compliance/abi_dumps/powerpc64le-linux-gnu/libunity-scopes_1.0.0.abi.tar.gz 1970-01-01 00:00:00 +0000 differ |
216 | === added file 'test/abi-compliance/abi_dumps/powerpc64le-linux-gnu/libunity-scopes_1.0.0.abi.xml.gz' |
217 | Binary files test/abi-compliance/abi_dumps/powerpc64le-linux-gnu/libunity-scopes_1.0.0.abi.xml.gz 1970-01-01 00:00:00 +0000 and test/abi-compliance/abi_dumps/powerpc64le-linux-gnu/libunity-scopes_1.0.0.abi.xml.gz 2016-02-15 06:03:52 +0000 differ |
218 | === removed file 'test/abi-compliance/abi_dumps/x86_64-linux-gnu/libunity-scopes_1.0.0.abi.tar.gz' |
219 | Binary files test/abi-compliance/abi_dumps/x86_64-linux-gnu/libunity-scopes_1.0.0.abi.tar.gz 2015-09-08 02:29:27 +0000 and test/abi-compliance/abi_dumps/x86_64-linux-gnu/libunity-scopes_1.0.0.abi.tar.gz 1970-01-01 00:00:00 +0000 differ |
220 | === added file 'test/abi-compliance/abi_dumps/x86_64-linux-gnu/libunity-scopes_1.0.0.abi.xml.gz' |
221 | Binary files test/abi-compliance/abi_dumps/x86_64-linux-gnu/libunity-scopes_1.0.0.abi.xml.gz 1970-01-01 00:00:00 +0000 and test/abi-compliance/abi_dumps/x86_64-linux-gnu/libunity-scopes_1.0.0.abi.xml.gz 2016-02-15 06:03:52 +0000 differ |
222 | === modified file 'test/abi-compliance/check-abi-compliance.sh.in' |
223 | --- test/abi-compliance/check-abi-compliance.sh.in 2015-09-15 21:59:25 +0000 |
224 | +++ test/abi-compliance/check-abi-compliance.sh.in 2016-02-15 06:03:52 +0000 |
225 | @@ -20,10 +20,11 @@ |
226 | |
227 | # Script to check whether the ABI is still intact. |
228 | # |
229 | -# The base ABI (for version <x>.<y>.0) is kept in libunity-scopes_<x>.<y>.0.abi.tar.gz. |
230 | -# If the micro version is non-zero, we run abi-compliance-checker to compare the two versions. |
231 | +# The base ABI (for version <x>.<y>.0) is kept in libunity-scopes_<x>.<y>.0.abi.xml.gz. |
232 | +# If the micro version is non-zero, we run abidiff to compare the two versions. |
233 | # If there are any complaints, we print an error message ane return non-zero status. |
234 | |
235 | +set -x |
236 | progname=$(basename $0) |
237 | |
238 | distro=$(lsb_release -c -s) |
239 | @@ -32,26 +33,63 @@ |
240 | exit 0 |
241 | } |
242 | |
243 | +[ @UNITY_SCOPES_MICRO@ -eq 0 ] && exit 0 |
244 | + |
245 | libname=lib@UNITY_SCOPES_LIB@ |
246 | - |
247 | -base_abi=@CMAKE_CURRENT_SOURCE_DIR@/abi_dumps/@CMAKE_LIBRARY_ARCHITECTURE@/${libname}_@UNITY_SCOPES_MAJOR_MINOR@.0.abi.tar.gz |
248 | -cur_abi=@CMAKE_CURRENT_BINARY_DIR@/abi_dumps/${libname}/${libname}_@UNITY_SCOPES_FULL_VERSION@.abi.tar.gz |
249 | +base_abi_dir=@CMAKE_CURRENT_SOURCE_DIR@/abi_dumps/@CMAKE_LIBRARY_ARCHITECTURE@ |
250 | +base_abi=${libname}_@UNITY_SCOPES_MAJOR_MINOR@.0.abi.xml |
251 | + |
252 | +gunzip -c ${base_abi_dir}/${base_abi}.gz >${base_abi} |
253 | + |
254 | +cur_abi=${libname}_@UNITY_SCOPES_FULL_VERSION@.abi.xml |
255 | +report=${libname}_@UNITY_SCOPES_FULL_VERSION@_abi-report.txt |
256 | + |
257 | +# If the current lib doesn't contain debug info, we can't run the test. |
258 | +# TODO: See https://sourceware.org/bugzilla/show_bug.cgi?id=19621 |
259 | +info_file=$(mktemp) |
260 | +readelf --debug-dump=info @CMAKE_BINARY_DIR@/${libname}.so >$info_file |
261 | +[ $? -ne 0 ] && exit 1 |
262 | +[ -s $info_file ] |
263 | +no_debug_info=$? |
264 | +rm -f $info_file |
265 | +[ $no_debug_info -eq 1 ] && { |
266 | + echo "${progname}: Skipping ABI test because ${libname}.so was compiled without -g" |
267 | + exit 0 |
268 | +} |
269 | |
270 | # Compare against the base ABI. |
271 | -abi-compliance-checker -lib ${libname} -old $base_abi -new $cur_abi |
272 | - |
273 | +abidiff --no-unreferenced-symbols --suppressions @CMAKE_CURRENT_SOURCE_DIR@/suppressions \ |
274 | + ${base_abi} ${cur_abi} >${report} 2>&1 |
275 | status=$? |
276 | -report=@CMAKE_CURRENT_BINARY_DIR@/compat_reports/${libname}/1.0.0_to_@UNITY_SCOPES_FULL_VERSION@/compat_report.html |
277 | -[ -e $report ] && { |
278 | - echo "${progname}: Compatibility report generated to $report" |
279 | -} |
280 | - |
281 | -[ $status -ne 0 ] && { |
282 | - [ $status -eq 1 ] && { |
283 | - echo "${progname}: ERROR: Incompatible ABI!" >&2 |
284 | - } |
285 | - echo "${progname}: ERROR: abi-compliance-checker returned exit status $status" >&2 |
286 | - exit 1 |
287 | -} |
288 | - |
289 | -exit 0 |
290 | + |
291 | +# TODO: Exit status test is not reliable with 1.0.rc2 (https://sourceware.org/bugzilla/show_bug.cgi?id=19596). |
292 | +# We instead rely on the report size for the time being. When suppressions are used, and there are |
293 | +# no problems, the report still contains three lines of summary, so we fail if there are more than |
294 | +# three lines. |
295 | +num_lines=$(wc -l <${report}) |
296 | +[ $num_lines -gt 3 ] && { |
297 | + echo "${progname}: ERROR: Incompatible ABI!" >&2 |
298 | + cat ${report} >&2 |
299 | + exit 8 |
300 | +} |
301 | +exit $status # TODO |
302 | + |
303 | +# Incompatible changes found. |
304 | +[ $status -ge 8 ] && { |
305 | + echo "${progname}: ERROR: Incompatible ABI!" >&2 |
306 | + cat ${report} >&2 |
307 | + exit $status |
308 | +} |
309 | + |
310 | +# Possibly incompatible changes found. |
311 | +[ $status -ge 4 ] && { |
312 | + echo "${progname}: ABI has possibly incompatible changes, see $report for details." |
313 | + exit $status |
314 | +} |
315 | + |
316 | +# All went fine. |
317 | +[ $status -eq 0 ] && exit 0 |
318 | + |
319 | +# Some other error |
320 | +echo "${progname}: Unexpected error, see $report for details." >&2 |
321 | +exit $status |
322 | |
323 | === modified file 'test/abi-compliance/gen-abi-dump.sh.in' |
324 | --- test/abi-compliance/gen-abi-dump.sh.in 2015-09-10 00:39:52 +0000 |
325 | +++ test/abi-compliance/gen-abi-dump.sh.in 2016-02-15 06:03:52 +0000 |
326 | @@ -21,7 +21,7 @@ |
327 | # Script to dump the current ABI. |
328 | |
329 | libname=lib@UNITY_SCOPES_LIB@ |
330 | -cur_abi=@CMAKE_CURRENT_BINARY_DIR@/abi_dumps/${libname}/${libname}_@UNITY_SCOPES_FULL_VERSION@.abi.tar.gz |
331 | +cur_abi=@CMAKE_CURRENT_BINARY_DIR@/${libname}_@UNITY_SCOPES_FULL_VERSION@.abi.xml |
332 | |
333 | distro=$(lsb_release -c -s) |
334 | [ "$distro" = "vivid" ] && { |
335 | @@ -30,6 +30,6 @@ |
336 | } |
337 | |
338 | # Dump the current ABI. |
339 | -abi-compliance-checker -lib ${libname} -dump @CMAKE_CURRENT_BINARY_DIR@/abi.xml |
340 | +abidw --out-file ${cur_abi} @CMAKE_BINARY_DIR@/${libname}.so |
341 | |
342 | exit $? |
343 | |
344 | === added file 'test/abi-compliance/suppressions' |
345 | --- test/abi-compliance/suppressions 1970-01-01 00:00:00 +0000 |
346 | +++ test/abi-compliance/suppressions 2016-02-15 06:03:52 +0000 |
347 | @@ -0,0 +1,21 @@ |
348 | +# Suppressions for template functions that are instantiated due to new |
349 | +# types that were added since the baseline. |
350 | + |
351 | +# TODO: The allows_other_aliases is currently needed due to a bug in abigail 1.0.rc2. |
352 | +# One a newer version becomes available, they can be removed. |
353 | +# https://sourceware.org/bugzilla/show_bug.cgi?id=19619 |
354 | + |
355 | +[suppress_function] |
356 | + name_regexp = boost::.* |
357 | + change_kind = added-function |
358 | + allow_other_aliases = false |
359 | + |
360 | +[suppress_function] |
361 | + name_regexp = std::.* |
362 | + change_kind = added-function |
363 | + allow_other_aliases = false |
364 | + |
365 | +[suppress_function] |
366 | + name_regexp = unity::scopes::testing::.* |
367 | + change_kind = added-function |
368 | + allow_other_aliases = false |
FAILED: Continuous integration, rev:659 jenkins. qa.ubuntu. com/job/ unity-scopes- api-devel- ci/1608/ jenkins. qa.ubuntu. com/job/ unity-scopes- api-devel- vivid-amd64- ci/217/ console jenkins. qa.ubuntu. com/job/ unity-scopes- api-devel- vivid-armhf- ci/217/ console jenkins. qa.ubuntu. com/job/ unity-scopes- api-devel- vivid-i386- ci/217/ console jenkins. qa.ubuntu. com/job/ unity-scopes- api-devel- xenial- amd64-ci/ 40/console jenkins. qa.ubuntu. com/job/ unity-scopes- api-devel- xenial- armhf-ci/ 40/console jenkins. qa.ubuntu. com/job/ unity-scopes- api-devel- xenial- i386-ci/ 40/console
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild: s-jenkins. ubuntu- ci:8080/ job/unity- scopes- api-devel- ci/1608/ rebuild
http://