Closed bourtemb closed 2 years ago
In this specific case, since this release is there to fix a problem when building the source distribution on Debian. I think we should work with @picca and provide asap a TangoSourceDistribution 9.3.4-rc1 he could test to ensure the problem is indeed fixed. We should not wait for 2 weeks to prepare the 9.3.4-rc1 source distribution release candidate of course. ;-)
@mliszcz, @piogor For tango-doc (readthedocs), since the documentation didn't change between cppTango 9.3.3 and 9.3.4. What will we need to do?
@bourtemb Yes no need to wait. We can always do another rc if something comes up.
I just created this PR: https://github.com/tango-controls/cppTango/pull/596 to fix the Debian 7 Travis tests.
After merging this PR #596, it might be a good idea to setup Travis tests for Debian Buster on this 9.3-backports branch since we are trying to solve an issue related to Debian Buster.
Maybe doing a git cherry-pick of these 2 commits would be enough?:
https://github.com/tango-controls/cppTango/pull/562/commits/4e259462df47141df928ab99993bfd6157ebe5fb https://github.com/tango-controls/cppTango/pull/562/commits/86174eea96f54b7b8d0962029997154a0913e5e8
@t-b, can you do that?
@bourtemb Yeep, will do.
@bourtemb, regarding tango-doc, what you listed is enough IMO. Note that master branch is 12 commits ahead of 9.3.3. Almost all of these commits still apply to 9.3.4 so we can branch-out from master.
The commit https://github.com/tango-controls/tango-doc/commit/c02e173d2bac5a6960bde6dbff049c27281d7dd2 looks suspicious to me, as it is quite a big merge commit for some layout redesign, but 9.3.3 and master have the same layout. Maybe @piogor can comment.
Piotr just came to the office and we talked about it. c02e173 can be ignored and 9.3.4 can be branched-out from last commit on master.
After merging this PR #596, it might be a good idea to setup Travis tests for Debian Buster on this 9.3-backports branch since we are trying to solve an issue related to Debian Buster.
Maybe doing a git cherry-pick of these 2 commits would be enough?:
@t-b, can you do that?
These commits are using some CMake options which are not available in 9.3-backports branch, so we will have to adapt them.
@bourtemb I've created #597 and also adapted some of the code to not reference not-existing cmake flags.
@bourtemb Appveyor seems not to be running for the 9.3-backports branch. I can have a look if you add me on appveyor.
@bourtemb Appveyor seems not to be running for the 9.3-backports branch. I can have a look if you add me on appveyor.
Good point! You actually just need to play with the appveyor.yml file (https://github.com/tango-controls/cppTango/blob/9.3-backports/appveyor.yml)
At the beginning of the file, we simply need to add 9.3-backports branch to the list of branches.
@bourtemb Done in #600.
@bourtemb Regarding "Add Windows installers as assets to the GitHub release": Is that currently done with a script (where is that?) or if not, is it worth having one?
Appveyor does also support that out of the box. See https://www.appveyor.com/docs/deployment/github/.
@bourtemb Regarding "Add Windows installers as assets to the GitHub release": Is that currently done with a script (where is that?) or if not, is it worth having one?
I think it was done manually the last time. Automating this process would be much better of course.
Appveyor does also support that out of the box. See https://www.appveyor.com/docs/deployment/github/.
Good idea. I think we should try that.
Hi @t-b and @bourtemb
Regarding: "Update the upgrade scripts in the TangoDatabase repository (tango-controls/TangoDatabase#19)"
The same needs to be done in TangoSourceDistribution. All relevant files were touched https://github.com/tango-controls/TangoSourceDistribution/commit/46722ce99c12527a088b23c01e8d74e94f572880
Hi @t-b and @bourtemb
Regarding: "Update the upgrade scripts in the TangoDatabase repository (tango-controls/TangoDatabase#19)"
The same needs to be done in TangoSourceDistribution. All relevant files were touched tango-controls/TangoSourceDistribution@46722ce
Good point @mliszcz ! This has to be done too indeed.
@bourtemb @mliszcz Done as part of https://github.com/tango-controls/TangoSourceDistribution/pull/53.
Are we still missing something in the 9.3-backports branch? If not should I tag it as 9.3.4-rc1
?
I think we can already tag a 9.3.4-rc1 in cppTango.
What about the appveyor artifacts deployments? Do we do try it in that branch?
@bourtemb Regarding "Add Windows installers as assets to the GitHub release": Is that currently done with a script (where is that?) or if not, is it worth having one?
I think it was done manually the last time. Automating this process would be much better of course.
Appveyor does also support that out of the box. See https://www.appveyor.com/docs/deployment/github/.
Good idea. I think we should try that.
@bourtemb Yes I would try the appveyor deployment for that new tag. I just need to find out if I have to create the tag before the appyeyor config or afterwards.
Here is what I will do
firma@thomas:~/devel/cppTango (9.3-backports)
$git tag 9.3.4-rc1
firma@thomas:~/devel/cppTango (9.3-backports)
$git push --tags --dry-run
To github.com:tango-controls/cppTango.git
* [new tag] 9.3.4-rc1 -> 9.3.4-rc1
for creating the tag. Without the --dry-run
of course ;)
@bourtemb Yes I would try the appveyor deployment for that new tag. I just need to find out if I have to create the tag before the appyeyor config or afterwards.
I think you can already create and push an 9.3.4-rc1 tag. You can work on the appveyor config afterwards. We will create an new tag when we will do the stable release.
For the appveyor config. I would advise to test it on your own fork first so you can create as many tags as you want there during the tests.
@bourtemb Okay, I've pushed the tag.
@picca could you please give this new distribution release candidate a try?
Hello, I have this warning during the build.
StarterUtil.cpp:233:34: warning: ‘%02d’ directive writing between 2 and 11 bytes into a region of size between 0 and 9 [-Wformat-overflow=]
233 | sprintf (str, "%02d/%02d/%02d %02d:%02d:%02d",
| ^~~~
StarterUtil.cpp:233:10: note: ‘sprintf’ output between 20 and 74 bytes into a destination of size 20
233 | sprintf (str, "%02d/%02d/%02d %02d:%02d:%02d",
| ~~^~~~~~~~~~
234 | st->tm_mday, st->tm_mon+1, st->tm_year,
| ~~~~~~~~~~~
235 | st->tm_hour, st->tm_min, st->tm_sec ) ;
| ~~~~~~~~~
g++ -DHAVE_CONFIG_H -I. -I../.. -I/usr/include -isystem /usr/include/mit-krb5 -I/usr/include/pgm-5.2 -I../../lib/cpp/log4tango/include -I../../lib/cpp/log4tango/include -I../../lib/cpp/server -I../../lib/cpp/client -I../../lib/cpp/server -I/usr/include/mysql -I/usr/include -Wl,-z,relro -I/usr/include -Wall -D_FORTIFY_SOURCE=2 -O1 -fPIE -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -D_REENTRANT -DOMNI_UNLOADABLE_STUBS -c -o main.o main.cpp
g++ -DHAVE_CONFIG_H -I. -I../.. -I/usr/include -isystem /usr/include/mit-krb5 -I/usr/include/pgm-5.2 -I../../lib/cpp/log4tango/include -I../../lib/cpp/log4tango/include -I../../lib/cpp/server -I../../lib/cpp/client -I../../lib/cpp/server -I/usr/include/mysql -I/usr/include -Wl,-z,relro -I/usr/include -Wall -D_FORTIFY_SOURCE=2 -O1 -fPIE -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -D_REENTRANT -DOMNI_UNLOADABLE_STUBS -c -o update_starter.o update_starter.cpp
main.cpp: In function ‘int main(int, char**)’:
main.cpp:220:9: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=]
220 | catch (bad_alloc)
| ^~~~~~~~~
main.cpp: At global scope:
main.cpp:2:20: warning: ‘RcsId’ defined but not used [-Wunused-variable]
2 | static const char *RcsId = "$Id$";
| ^~~~~
g++ -DHAVE_CONFIG_H -I. -I../.. -I/usr/include -isystem /usr/include/mit-krb5 -I/usr/include/pgm-5.2 -I../../lib/cpp/log4tango/include -I../../lib/cpp/log4tango/include -I../../lib/cpp/server -I../../lib/cpp/client -I../../lib/cpp/server -I/usr/include/mysql -I/usr/include -Wl,-z,relro -I/usr/include -Wall -D_FORTIFY_SOURCE=2 -O1 -fPIE -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -D_REENTRANT -DOMNI_UNLOADABLE_STUBS -c -o DataBaseUtils.o DataBaseUtils.cpp
DataBaseUtils.cpp:1:20: warning: ‘RcsId’ defined but not used [-Wunused-variable]
1 | static const char *RcsId = "$Header$";
| ^~~~~
DataBase.cpp: In member function ‘virtual void DataBase_ns::DataBase::read_Timing_info(Tango::Attribute&)’:
DataBase.cpp:724:55: warning: ‘%s’ directive writing up to 255 bytes into a region of size 221 [-Wformat-overflow=]
724 | sprintf(info_str,"TANGO Database Timing info on host %s",hostname);
| ^~ ~~~~~~~~
In file included from /usr/include/stdio.h:867,
from /usr/include/c++/9/cstdio:42,
from /usr/include/c++/9/ext/string_conversions.h:43,
from /usr/include/c++/9/bits/basic_string.h:6493,
from /usr/include/c++/9/string:55,
from ../../lib/cpp/server/tango.h:39,
from DataBase.cpp:48:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:36:34: note: ‘__builtin___sprintf_chk’ output between 36 and 291 bytes into a destination of size 256
36 | return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
| ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37 | __bos (__s), __fmt, __va_arg_pack ());
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a few more.
Hello can you give the command line in order to generate the documentation from the rst files ?
thanks
Frederic
Ici vous avez les erreurs lintian.
Il me semble que le plus problematique c'est le numero de version so. CEq ue vous avez mis dans le fichier configure.ac genere une librairie
libtango.so.8.4.3
https://salsa.debian.org/science-team/tango/-/jobs/399174
Frederic
The previous one
libtango.so.9.2.5
@picca There seems to be a problem with the SONAME?
Generating the documentation could be done with something like https://github.com/tango-controls/tango-doc/blob/7f4829d8e73cadb286570393c8e681b49bc857c5/.travis.yml#L11.
Regarding the warnings. Yes this is expected. You seem to use a different set of compile warnings. Can you post these?
@piccahttps://github.com/picca There seems to be a problem with the SONAME?
Yes, I think that the number is wrong
you did this
-VERSION_INFO=12:3:3 +VERSION_INFO=12:3:4
Here the doc for this number upgrade
https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
Generating the documentation could be done with something like https://github.com/tango-controls/tango-doc/blob/7f4829d8e73cadb286570393c8e681b49bc857c5/.travis.yml#L11.
ok, I will build the doc with sphinx-build
Regarding the warnings. Yes this is expected. You seem to use a different set of compile warnings. Can you post these?
here all the build log with the flags :)
https://salsa.debian.org/science-team/tango/-/jobs/399170
Cheers
I'll have a look regarding the SONAME.
I've seen the logs arlready. But how do you set the additional build flags? I've found https://wiki.debian.org/Hardening which says that dh
does that magic? Or is it dpkg-buildpackage
?
I've seen the logs arlready. But how do you set the additional build flags? I've found https://wiki.debian.org/Hardening which says that dh does that magic? Or is it dpkg-buildpackage?
Yes, I use dh in order to do the job.
I would do
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
in order to activate all the hardening flags.
If you look here, you will see that a few files are not compiled with the right hardening flags.
Looking at the cppflags, I have this during the configuration
=== configuring in lib/cpp/log4tango (/builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1/lib/cpp/log4tango) configure: running /bin/bash ./configure --disable-option-checking '--prefix=/usr' '--build=x86_64-linux-gnu' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--disable-silent-rules' '--libdir=${prefix}/lib/x86_64-linux-gnu' '--runstatedir=/run' '--disable-maintainer-mode' '--disable-dependency-tracking' '--with-omni=/usr' '--disable-static' '--disable-dbcreate' '--disable-java' '--with-doxygen' '--disable-jpegmmx' 'build_alias=x86_64-linux-gnu' 'CXXFLAGS=-g -O2 -fdebug-prefix-map=/builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1=. -fstack-protector-strong -Wformat -Werror=format-security' 'LDFLAGS=-Wl,-z,relro -Wl,-z,now' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2' 'CFLAGS=-g -O2 -fdebug-prefix-map=/builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1=. -fstack-protector-strong -Wformat -Werror=format-security' --cache-file=/dev/null --srcdir=.
you can see the right 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2' .
this flag is used by log4tango, but not during the build of tango. During the reconfiguration, it seems that this
src/Makefile.am:3: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '_CPPFLAGS') src/Makefile.am: installing 'config/depcomp' tests/Makefile.am:11: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '_CPPFLAGS')
So maybe this is why the CPPGLAGS is not used by tango...
@picca This alone does not solve the problem. But my other fixes also don't yet work.
For now I think you can work around that issue by passing these flags in CXXFLAGS. Yes this is wrong but that is how it is.
I will try to patch configure.ac tomorrow and see if it works :)
Current state is at https://github.com/tango-controls/TangoSourceDistribution/pull/55.
The really odd thing is that log4tango works when you do
$./configure CPPFLAGS=-D_FORTIFY_SOURCE=2
$find . -iname "config.log" | xargs grep "^CPPFLAGS="
./lib/cpp/log4tango/config.log:CPPFLAGS='-D_FORTIFY_SOURCE=2'
./config.log:CPPFLAGS=' -I/usr/local/include '
firma@thomas:~/devel/TangoSourceDistribution/build/distr (debian-build-fixes)
My guess is that something nasty is done in one of the files in https://github.com/tango-controls/TangoSourceDistribution/tree/master/assets/m4, but I do need fresh eyes for that...
I regenerated the autoconf files and ebd up with this.
libtoolize: copying file 'm4/lt~obsolete.m4' configure.ac:315: warning: macro 'AM_PATH_MYSQLCLIENT' not found in library configure.ac:368: warning: macro 'AM_PATH_MARIADBCLIENT' not found in library configure.ac:82: error: possibly undefined macro: gcc_AC_HAVE_GCC_VERSION If this token and others are legitimate, please use m4_pattern_allow. See the Autoconf documentation. configure.ac:113: error: possibly undefined macro: java_AC_HAVE_JAVA_VERSION configure.ac:284: error: possibly undefined macro: AC_CXX_HAVE_CLASS_STRSTREAM configure.ac:315: error: possibly undefined macro: AM_PATH_MYSQLCLIENT configure.ac:330: error: possibly undefined macro: mysql_AC_HAVE_MYSQL_VERSION configure.ac:368: error: possibly undefined macro: AM_PATH_MARIADBCLIENT configure.ac:383: error: possibly undefined macro: mariadb_AC_HAVE_MARIADB_VERSION autoreconf: /usr/bin/autoconf failed with exit status: 1
So I guess that the culprite is one of these macro.
nevertheless, maybe this could be someting in the Makefile.am
looking at the config.log, I found this in the zlib test
if test -n "${ZLIB_HOME}"
then
ZLIB_OLD_LDFLAGS=$LDFLAGS
ZLIB_OLD_LIBS=$LIBS
ZLIB_OLD_CPPFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS -L${ZLIB_HOME}/lib"
CPPFLAGS="$CPPFLAGS -I${ZLIB_HOME}/include"
CPPFLAGS="$CPPFLAGS -I${ZLIB_HOME}/include"
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
and at the end of the test
LDFLAGS="$ZLIB_OLD_LDFLAGS"
CPPFLAGS="$ZLIB_OLD_CPPFLAGS"
LIBS="$ZLIB_OLD_LIBS"
so for now my guess is that there is a problem in the ZLIB test.
ZLIB_OLD_CPPFLAGS=$LDFLAGS
should be
ZLIB_OLD_CPPFLAGS=$CPPFLAGS
What about using pkg-config as much as possible in stead these very very old checks.
picca@sixs7:~/Debian/tango/tango/m4$ pkg-config --libs zlib -lz
bingo
https://salsa.debian.org/science-team/tango/-/jobs/400247
I replaces
-CHECK_ZLIB +PKG_CHECK_MODULES([ZLIB], [zlib >= 1])
and it works.
Cheers
@picca Good find! I've updated my branch.
Hello, I build the documentation via the Makefile in the doc/src/
this produce the documentation under build/html
Which is not the location were you put the pre-build documentation.
I think that it would be better to build the documentation at the right place :)
Here a bunch of warning due to the doc.
/builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1/doc/src/source/administration/services/hdbpp/hdb++-design-guidelines.rst:9: WARNING: term not in glossary: hdb++ /builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1/doc/src/source/administration/services/hdbpp/index.rst:8: WARNING: term not in glossary: hdb++ /builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1/doc/src/source/development/contributing/documentation-guide.rst:81: WARNING: unknown document: tutorials/documentation-workflow-tutorial /builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1/doc/src/source/getting-started/development/java/jtango-server.rst:90: WARNING: unknown document: ../../../tools-and-extensions/pogo/index /builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1/doc/src/source/getting-started/first-steps.rst:14: WARNING: unknown document: intsallation/index /builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1/doc/src/source/installation/tango-on-windows.rst:132: WARNING: term not in glossary: device servers /builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1/doc/src/source/installation/tango-on-windows.rst:140: WARNING: term not in glossary: device servers /builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1/doc/src/source/reference/glossary.rst:53: WARNING: term not in glossary: attribute quality /builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1/doc/src/source/tools-and-extensions/built-in/astor/config.rst:23: WARNING: unknown option: -DNO_PREF=true /builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1/doc/src/source/tools-and-extensions/built-in/atk/atk.rst:513: WARNING: Could not lex literal_block as "java". Highlighting skipped. /builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1/doc/src/source/tools-and-extensions/built-in/atk/atk.rst:573: WARNING: Could not lex literal_block as "java". Highlighting skipped. /builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1/doc/src/source/tools-and-extensions/built-in/atk/atk.rst:599: WARNING: Could not lex literal_block as "java". Highlighting skipped. /builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1/doc/src/source/tools-and-extensions/built-in/atk/atk.rst:961: WARNING: Could not lex literal_block as "java". Highlighting skipped. /builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1/doc/src/source/tools-and-extensions/built-in/atk/atk.rst:1046: WARNING: Could not lex literal_block as "java". Highlighting skipped. /builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1/doc/src/source/tools-and-extensions/built-in/atk/atk.rst:1477: WARNING: Could not lex literal_block as "java". Highlighting skipped. /builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1/doc/src/source/tools-and-extensions/built-in/atk/atk.rst:1486: WARNING: Could not lex literal_block as "java". Highlighting skipped. /builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1/doc/src/source/tools-and-extensions/built-in/atk/atk.rst:1495: WARNING: Could not lex literal_block as "java". Highlighting skipped. /builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1/doc/src/source/tools-and-extensions/built-in/jdraw/jdraw.rst:281: WARNING: Could not lex literal_block as "java". Highlighting skipped. /builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1/doc/src/source/tutorials-and-howtos/how-tos/how-to-create-inheritance-link.rst:64: WARNING: Could not lex literal_block as "cpp". Highlighting skipped. /builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1/doc/src/source/tutorials-and-howtos/how-tos/how-to-start-device-server.rst:14: WARNING: undefined label: astro_manual (if the link has no caption the label must precede a section header) /builds/science-team/tango/debian/output/tango-9.3.4~rc1+dfsg1/doc/src/source/tutorials-and-howtos/how-tos/how-use-vectors-set-attributes.rst:42: WARNING: Could not lex literal_block as "python". Highlighting skipped.
@picca Thx. https://github.com/tango-controls/TangoSourceDistribution/pull/55/commits now has the fix for the wrong SONAME as well.
Task list:
Wait for at least 2 weeks before to do the next steps to give some time to get feedback from the first testers