summaryrefslogtreecommitdiffstats
path: root/contrib
Commit message (Collapse)AuthorAgeFilesLines
* add contrib/struct_endianess.pyNeels Hofmeyr2018-11-221-0/+369
| | | | | | | | | | | | 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
* jenkins: print gcc version in logNeels Hofmeyr2018-11-061-1/+5
| | | | Change-Id: I8dfac78868f64213413e80cc52ac585d9d4a2c93
* jenkins: add --enable-external-testsNeels Hofmeyr2018-09-132-1/+3
| | | | | | Run the new logging_vty_test.vty VTY transcript test in our CI. Change-Id: Ic4ec1f6c131da50b3956f16f0b49375f387196b3
* jenkins_arm.sh: Use same Werror related options as on other buildsHarald Welte2018-08-011-1/+5
| | | | Change-Id: I45ab11b461a35923853f38b5bedd5025f53cc5b5
* jenkins_arch.sh: Exit with error on unknown architectureHarald Welte2018-06-281-0/+1
| | | | | | | | | 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
* jenkins_arch.sh: Accept "arm-none-eabi" as alias for "arm"Harald Welte2018-06-281-1/+1
| | | | | | | | | | 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
* jenkins_arm.sh: Don't run 'make check' on embedded buildsHarald Welte2018-06-281-1/+1
| | | | | | | If we're cross-compiling for arm-none-eabi, we cannot execute test programs. Change-Id: I64e88a31091b67c37c308c44013c42d4574d2312
* contrib/fsm-to-dot: warn about identically named FSMsNeels Hofmeyr2018-03-261-2/+19
| | | | | | | | 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
* contrib/fsm-to-dot: mark illegal states in redNeels Hofmeyr2018-03-261-5/+29
| | | | | | | 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
* contrib/fsm-to-dot: less false positives on event parsingNeels Hofmeyr2018-03-261-8/+29
| | | | | | | | | | 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
* contrib/fsm-to-dot: mark arrows that feed eventsNeels Hofmeyr2018-03-261-7/+12
| | | | | | | 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
* contrib/fsm-to-dot: add default edge label '-'Neels Hofmeyr2018-03-261-1/+4
| | | | | | | 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
* contrib/fsm-to-dot: warn and draw unallowed state transitionsNeels Hofmeyr2018-03-261-1/+12
| | | | | | | | | | | | | | | | 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
* contrib/fsm-to-dot: don't match on event names in commentsNeels Hofmeyr2018-03-261-0/+4
| | | | | | | | | | | | | 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
* contrib/fsm-to-dot: allow transition from and to the same stateNeels Hofmeyr2018-03-261-3/+5
| | | | | | | 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
* contrib/fsm-to-dot: add -h option to print basic instructionsNeels Hofmeyr2018-03-261-0/+4
| | | | Change-Id: I196033e44d50ebb73cf9b44cbdc94a2b8b4f98ce
* jenkins_amd64.sh: use --enable-werror configure flag, not CFLAGSNeels Hofmeyr2018-03-131-1/+1
| | | | | | | 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
* contrib/jenkins_arch.sh: Fix script comparison and arm supportDaniel Willmann2018-02-191-3/+3
| | | | Change-Id: Ic53a675963cae328b296b4abaed9524451153271
* jenkins: move make invocation into shared functionMax2018-01-243-5/+8
| | | | Change-Id: Ied8c1085b8bee2cc4fa65592e805838b8cdae287
* jenkins: remove obsolete scriptsMax2018-01-242-61/+0
| | | | | | | | | | * 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
* jenkins: add dispatcher scriptMax2018-01-183-0/+94
| | | | | | | | | | | | 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
* jenkins: add 'make V=1' for more verbose build logsNeels Hofmeyr2017-12-201-1/+1
| | | | | | | | 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
* jenkins: use osmo-clean-workspace.sh before and after buildNeels Hofmeyr2017-10-273-5/+8
| | | | | | | See osmo-ci change I2409b2928b4d7ebbd6c005097d4ad7337307dd93 for rationale. Depends: I2409b2928b4d7ebbd6c005097d4ad7337307dd93 Change-Id: I99fdd20e7b18c2f4a59a9db35e5efccca6546b77
* jenkins: bail early if $MAKE env var is not setNeels Hofmeyr2017-10-241-0/+6
| | | | | | If $MAKE is unset, it produces confusing errors, rather check explicitly. Change-Id: I59b111dfdee4e1edea04155144f01d99f5f72aa1
* fixups for recent "Cleanup jenkins build scripts"Neels Hofmeyr2017-10-243-22/+43
| | | | | | | | | | | | | | | 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
* contrib/fsm-to-dot.py: some tweaks that help with osmo-bsc's new FSMsNeels Hofmeyr2017-10-241-13/+40
| | | | | | | | | | | | | | | | | | | | | | 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
* Disable doxygen in jenkins for embedded testsMax2017-10-201-0/+1
| | | | | | | There's no point in regenerating documentation with Doxygen in embedded environment. Change-Id: I6504db04445f5e9c1117379c8803e10df5634324
* Cleanup jenkins build scriptsMax2017-10-203-32/+26
| | | | | | | | | * 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
* Use value string check from osmo-ciMax2017-08-253-36/+4
| | | | Change-Id: I513835be2d931d0a931cdfc996f361a451bc1a15
* contrib: Enable -Werror by defaultPau Espin Pedrol2017-06-232-4/+4
| | | | Change-Id: I1752cad1e34cb6e5f36edf3f538d803eff29d18c
* jenkins.sh: Disable sanitize for FreeBSDPau Espin Pedrol2017-06-231-1/+7
| | | | | | | | | | | | | | | | 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
* Introduce build script for arm-none-eabi cross-compilationsblobb2017-05-261-0/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Revert "Introduce build script for arm-none-eabi cross-compilations"blobb2017-05-261-33/+0
| | | | | | | | | | | | "--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 ba58167e1bf6ff8815c4e9e0d7b0b63ba1c529f8. Change-Id: I644114679db1394e75ff12b0203ae8e568aff82c
* Introduce build script for arm-none-eabi cross-compilationsblobb2017-05-251-0/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | 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
* jenkins: also test build in separate dirNeels Hofmeyr2017-03-311-0/+12
| | | | | | | | | | | | | 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
* jenkins: add value_string termination checkNeels Hofmeyr2017-03-161-0/+2
| | | | Change-Id: I7fe3678b524d602fc6aa14bc0ed06308df809a3e
* contrib: add script to find unterminated value_string arraysNeels Hofmeyr2017-03-161-0/+33
| | | | | | | | | | | | | | | 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
* contrib: add fsm-to-dot.py to draw osmo_fsm dotty graphsNeels Hofmeyr2016-12-091-0/+710
| | | | | | | | 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
* configure: add --enable-sanitize, use in jenkins.shNeels Hofmeyr2016-10-121-2/+3
| | | | | | | | | | | | | --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
* jenkins.sh: drop unecessary PATH, now in slave configNeels Hofmeyr2016-10-121-1/+0
| | | | Change-Id: Ifaff3e5e13c920eb716a5609bfec2f96e10f17b0
* jenkins.sh: output all test logs when 'make check' failedNeels Hofmeyr2016-09-301-1/+3
| | | | | | | 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
* jenkins: Enable tracing and error handling in bashHolger Hans Peter Freyther2016-04-131-0/+2
| | | | | Like jenkins we want to see what is actually being executed and fail if a subcommand has failed.
* jenkins: Add build script used by jenkins on our public CIHolger Hans Peter Freyther2016-04-131-0/+6
The actual script (removed unused and commented out handling) as invoked by jenkins. This can be used to locally try to reproduce the build.