This way libosmocore build fails during configuring phase if expected
default behavior (building with libsctp support enabled and providing
osmo_sock_init2_multiaddr() API) fails. User is still provided with
--disable-libsctp option in case he doesn't need those features or his
environment doesn't provide required libsctp APIs.
Change-Id: I710c9cb1c6da0e5fc94b792df8bf60194a72208f
This expect script can be run as:
./vty bsc
./vty msc
./vty sip ...
etc (no need to remember ports)
Change-Id: Ice4532be7cb3139da29cb9d84dd4769e8d826dfa
It was recently discovered that logging_vty_test.vty was missing from
EXTRA_DIST. To make sure we don't forget similar files in the future, add
python tests to 'make distcheck', by means of DISTCHECK_CONFIGURE_FLAGS.
Related: I1bcedf3097f02b2adc679560d1cbceb27dbc345e
Change-Id: Id569b2a932c1428cabb4d7ff17822cff8eee02af
In libosmocore (and likely elsewhere) we have scores of packed structs with
sub-byte integer members that lack the necessary member reversal shims to be
able to work on big endian architectures.
Instead of manually editing each one of them and probably introduce errors in
the process, this script handles the change automatically, and in the future
allows us to verify correctness in gerrit verifications.
Change-Id: I8e75b17d8071c7b3a2a171ba776fb76854b28a53
The jenkins build job used to call this script using an "arch"
it doesn't understand. This should have resulted in an error,
but it didn't as there was a missing "exit 1" statement :(
Related: OS#3360
Change-Id: Ib27c9ebaf2630c432b1923f8e14b36e7772a6033
The jenkins build job is calling the script using "amd64" and
"arm-none-eabi", while the script expects "amd64" and "arm".
Let's add "arm-none-eabi" as an alias for "arm".
Closes: OS#3360
Change-Id: Idedd4778a63d67cdbf4f4d538bf4a225abb7547a
FSMs with identical names confuse the script, so at least warn about them.
IMHO we should also have different names for each FSM, so not bothering to make
the script safe against identical naming.
Change-Id: I4fe7e85d2fdf23e2ba964f3b47be1954edc63cef
If an FSM transitions to a state that actually belongs to a different FSM,
print an error and mark it red, instead of exiting with exception.
Change-Id: I73d95a0c65ca1ea586ad55234610671a53d6220f
Do some more mad hacking to only detect event triggers if event names actually
appear in if() or case: statements. Also combine events in consecutive 'case'
statements.
When will this madness stop?
Change-Id: Iabaaab57f0d1687607eaaa4e09c7c2439fbd7a25
Most arrows draw state transitions, but some want to show that an event is
delivered to a state. Mark those with a "halfopen" arrow head.
Change-Id: Ib07380894a6d513896c9135f175ecbf653a23eec
When some edges have no label, it is sometimes hard to interpret which label
belongs to which edge. Adding a '-' default label clarifies the edge labeling.
Change-Id: I3a10b615288107e8fc12ffdbbe0099cf51abe94f
Hacked as it is, fsm-to-dot is capable of detecting action functions
transitioning to states that are not allowed according to the FSM definition
struct.
Draw those in red and output a warning.
Found these osmo-bsc gscon errors with this patch:
ERROR: gscon_fsm_active() triggers a transition to ST_WAIT_HO_COMPL, but this is not allowed by the FSM definition
ERROR: gscon_fsm_wait_ho_compl() triggers a transition to ST_WAIT_MDCX_BTS_HO, but this is not allowed by the FSM definition
Related: OS#3109
Change-Id: Ic6319a958b3c7247510c1930bac8b02b95f9dcf2
Strip comments from function bodies before matching on event names.
In osmo-bsc's gscon FSM, there often are event names in comments. The naive
parsing of fsm-to-dot.py mistakes these as events causing state transitions,
but the comments are just explaining how states interact.
Makes me reconsider parsing the C with clang instead, but I got away with a
dirty hack once more.
Change-Id: I56d70ae14d363f7ca655dced16d93d795b3f940d
In osmo-bsc's new gscon FSM, there is an osmo_fsm_inst_state_chg() from
ST_ACTIVE to ST_ACTIVE. Avoid an exception triggering on this simple fact.
Change-Id: I420c7be84e3af555cc5e8bddbff7261013348375
Note that the jenkins_arm.sh passes various CFLAGS and potentially overwrites
./configure internal CFLAGS like that. I'm staying out of that for now.
Change-Id: I81b50c39cd6e908c4c95651829b679425de87a28
* jenkins.sh is superseded by jenkins_amd64.sh
* jenkins-arm.sh is superseded by jenkins_arm.sh
N. B: this requires I76dfc11a05007ae5c6e0554fe8132695b67cccaa in
osmo-ci.
Change-Id: Ifbd253cff88c3ac18e469c34e79f1501501e1657
Similar to the way we test osmo-bts, add simple dispatcher script which
calls appropriate test depending on a given parameter. This will allow
to simplify the job description. While at it, also rename jenkins-arm.sh
-> jenkins_arm.sh to match the OsmoBTS.
The older scripts are preserved for compatibility and shall be removed
once we update job description in osmo-ci.
Change-Id: I2955e866bce4f000a53369bd601a346c36c82468
In the logs, it is nice to see whether e.g. sanitize or -Werror args actually
made it to the gcc command line. With V=1 we see the complete command
invocations that would be hidden otherwise.
Change-Id: Ie89b1c39489ba80fb47716f4c747f2c85960e32e
See osmo-ci change I2409b2928b4d7ebbd6c005097d4ad7337307dd93 for rationale.
Depends: I2409b2928b4d7ebbd6c005097d4ad7337307dd93
Change-Id: I99fdd20e7b18c2f4a59a9db35e5efccca6546b77
Change I24e500e132f5c8e8133d35548cb7b4e4552331d0 was merged, but IMHO needs
improvement. Fix these:
- clean the git source tree before each build step, in common prep_build().
- fix indenting inside the build() macros.
- change build() arg to be build_dir, to absorb cleanup steps into build().
- in jenkins.sh, use $ENABLE_SANITIZE as global env, not passed as arg.
- in jenkins.sh, don't do 'make distcheck' twice. It is not necessary to do it
from source tree as well as separately from source tree, since distcheck
already moves to a different build dir.
Change-Id: I09d306350602f21943d5bd45f7388c83ede9b524
Combine the C source file name and the string name into the fsm's internal name
token, and use it in most places instead of the plain struct name: osmo-bsc's
new FSMs have identical struct names in each static c context.
Output in a file name that includes all of these more detailed name tokens.
Also parse '(1 << EVENT)' as event names.
Note that besides this patch, there are also some tweaks to the osmo-bsc patch
that improve the fsm-to-dot experience...
- call fsm-to-dot for single files to avoid name conflicts, or rename each
struct as a unique name.
- Add comments for the event name a callback is intended for, so that not all
transitions are interpreted as TEARDOWN (because it is invoked in common
error handling, which causes the script to interpret it as the causing
event). (or change the event-checking if into a switch that names the valid
event and has a default case for all others.)
Change-Id: Ib60df7fd19efc99ba9fe797f14c0e3239c4bea20
* reorder builds to avoid rm -rf invocation
* avoid useless double autoreconf
* move common parts into shared helper
* move common build steps into separate function
Change-Id: I24e500e132f5c8e8133d35548cb7b4e4552331d0
Our current build server uses clang-3.4.1 and FreeBSD10.3, and
AddressSanitizer support is not good yet on those versions, triggering
some link issues when it is enabled.
I tested using newer clang 3.7.1 in the same FreeBSD version but another
compiler error related to __builtin_cpu_supports is triggered.
Conclusion: Explicitly disable AddressSanitizer until we move to
FreeBSD11 with clang 3.8. Before this commit, AddressSanitizer was
implicitly disabled due to a shell compatibility issue which is fixed
in next commit in the series, thus we need to explicitly disable it here.
Change-Id: I0db497045a2ebf7877232b28ae1fcf1fd89fb3f3
This is a necessary step to use libosmocore-arm dep in OsmocomBB.
After this patch is submitted the "./contrib/jenkins.sh" line in
libosmocore jenkins jobs [1][2] needs to be replaced with:
if [[ "$JOB_NAME" == *"arch=arm-none-eabi,label=linux_amd64_debian8"* ]]
then
./contrib/jenkins-arm.sh
else
# (FreeBSD && debian8)_amd64 builds
./contrib/jenkins.sh
fi
Furthermore, the "arch" matrix-build axis has to be created,
holding "arm-none-eabi" and "amd64". Following combination filter
is necessary to skip cross-compilations on FreeBSD buildslave:
!(arch=="arm-none-eabi" && label=="FreeBSD_amd64")
[1] https://jenkins.osmocom.org/jenkins/job/libosmocore/
[2] https://jenkins.osmocom.org/jenkins/job/libosmocore-gerrit/
Change-Id: I0db83ad2c94ada65c00fd1bcf867830dec80085d
"--enable-sanitize" does not work on jenkins build slave (debian8), although it worked out locally for me.
Following patch will introduce corrected arm build script without "--enable-sanitize" option:
https://gerrit.osmocom.org/#/c/2742/
This reverts commit ba58167e1b.
Change-Id: I644114679db1394e75ff12b0203ae8e568aff82c
This is a necessary step to use libosmocore-arm dep in OsmocomBB.
After this patch is submitted the "./contrib/jenkins.sh" line in
libosmocore jenkins jobs [1][2] needs to be replaced with:
if [[ "$JOB_NAME" == *"arch=arm-none-eabi,label=linux_amd64_debian8"* ]]
then
./contrib/jenkins-arm.sh
else
# (FreeBSD && debian8)_amd64 builds
./contrib/jenkins.sh
fi
Furthermore, the "arch" matrix-build axis has to be created,
holding "arm-none-eabi". Following combination filter is
necessary to skip cross-compilations on FreeBSD buildslave:
!(arch=="arm-none-eabi" && label=="FreeBSD_amd64")
[1] https://jenkins.osmocom.org/jenkins/job/libosmocore/
[2] https://jenkins.osmocom.org/jenkins/job/libosmocore-gerrit/
Change-Id: I9e07fb9e60830dbd585f22d9c658c46252ce399f
To make sure that new patches don't break a build done in another dir than
srcdir, make jenkins verify that it still works.
Even though 'make distcheck' also tests a build from a separate dir, this does
not verify that BUILT_SOURCES are generated properly. If these already exist in
the source tree from a previous 'make' issued in the source tree, the
BUILT_SOURCES are not regenerated during 'make distcheck'. Hence a separate
test run is necessary to ensure stability of new patches.
Change-Id: I4b31538c155941fd241bcd33b0d39f2f8491ac1e
Unterminated value_string arrays are dangerous since get_value_string() and
get_string_value() need to know where the struct ends. If the terminator is
missing, they might run through and return arbitrary memory locations.
Employ some regexes to find such unterminated value string arrays and return
nonzero if any are found.
This can be used in our jenkins build jobs to avoid committing unterminated
value_string arrays. In fact I've found one in current libosmocore:
gsm0808_bssap_names in gsm/gsm0808.c, fixed in a separate patch.
Change-Id: I2bc93ab4781487e7685cfb63091a489cd126b1a8
Add a first version of a python script that tries to analyze .c source files to
draw graphs of osmo_fsm implementations. So far it uses quick-and-dirty
regexes.
Change-Id: I155f57a608d600f59aedfd27ef66eb9772c124e7
--enable-sanitize adds address sanitizer CFLAGS/CPPFLAGS to the entire build.
Also pass UBSAN_OPTIONS to the test suite run (only has effect during runtime).
Add this flag to jenkins.sh's configure step. To ensure that we get the
sanitize results, add 'make check' to jenkins to catch sanitize failures;
Keep 'make distcheck' without ASAN; it has its own configure which omits
--enable-sanitize. This way we test both with and without ASAN.
Change-Id: Idf7f46fa048608c2951f2473cb528f6c8dc2681d
Assume that cat-testlogs.sh from osmo-ci is installed in $HOME/osmo-ci/scripts,
and call from jenkins.sh upon 'make check' failure.
Change-Id: I18a08e7ade1a53783d5a4171fe825f61b49457be