From acd2ededd14dbc9ac130717de9aeaafd840ca8b6 Mon Sep 17 00:00:00 2001 From: Rich Mattes Date: Mar 19 2017 23:20:32 +0000 Subject: Fix FTBFS issues (rhbz#1424099) Add interface_table.h as a dependency to libplayerinterface, to ensure that the file is generated before the library is compiled. Fix various issues that stemmed from the gcc7 upgrade. Clean up spec file: remove clean section, use buildroot macro, and use an out-of-tree cmake build --- diff --git a/player-3.0.2-cpp11.patch b/player-3.0.2-cpp11.patch index 843c9aa..f90ddb1 100644 --- a/player-3.0.2-cpp11.patch +++ b/player-3.0.2-cpp11.patch @@ -1,6 +1,18 @@ +diff -up ./client_libs/libplayerc++/bindings/ruby/playercpp.i.cpp11 ./client_libs/libplayerc++/bindings/ruby/playercpp.i +--- ./client_libs/libplayerc++/bindings/ruby/playercpp.i.cpp11 2017-03-19 18:50:04.074744694 -0400 ++++ ./client_libs/libplayerc++/bindings/ruby/playercpp.i 2017-03-19 18:50:15.532188950 -0400 +@@ -48,7 +48,7 @@ + } + catch (const PlayerCc::PlayerError &e) { + static VALUE playererror = rb_define_class("PlayerError", rb_eStandardError); +- rb_raise(playererror, e.GetErrorStr().c_str()); ++ rb_raise(playererror, "%s", e.GetErrorStr().c_str()); + } + } + diff -up ./server/drivers/mixed/erratic/erratic.cc.cpp11 ./server/drivers/mixed/erratic/erratic.cc --- ./server/drivers/mixed/erratic/erratic.cc.cpp11 2009-01-24 18:14:21.000000000 -0500 -+++ ./server/drivers/mixed/erratic/erratic.cc 2016-02-23 21:57:10.076216414 -0500 ++++ ./server/drivers/mixed/erratic/erratic.cc 2017-03-19 18:08:43.213289331 -0400 @@ -555,8 +555,8 @@ int Erratic::Connect() accel_packet = new ErraticPacket(); accel_command[0] = (command_e)set_max_trans_acc; @@ -24,8 +36,8 @@ diff -up ./server/drivers/mixed/erratic/erratic.cc.cpp11 ./server/drivers/mixed/ this->Send(accel_packet); } else if(this->motor_max_rot_accel != 0) { diff -up ./server/drivers/mixed/p2os/p2os.cc.cpp11 ./server/drivers/mixed/p2os/p2os.cc ---- ./server/drivers/mixed/p2os/p2os.cc.cpp11 2016-02-23 21:57:32.339085119 -0500 -+++ ./server/drivers/mixed/p2os/p2os.cc 2016-02-23 21:58:20.457962734 -0500 +--- ./server/drivers/mixed/p2os/p2os.cc.cpp11 2009-08-07 04:48:58.000000000 -0400 ++++ ./server/drivers/mixed/p2os/p2os.cc 2017-03-19 18:08:43.214289370 -0400 @@ -1193,8 +1193,8 @@ int P2OS::MainSetup() { accel_command[0] = SETA; @@ -49,8 +61,8 @@ diff -up ./server/drivers/mixed/p2os/p2os.cc.cpp11 ./server/drivers/mixed/p2os/p this->SendReceive(&accel_packet,false); } diff -up ./server/drivers/mixed/p2os/robot_params.cc.cpp11 ./server/drivers/mixed/p2os/robot_params.cc ---- ./server/drivers/mixed/p2os/robot_params.cc.cpp11 2016-02-23 22:02:50.158486543 -0500 -+++ ./server/drivers/mixed/p2os/robot_params.cc 2016-02-23 22:12:42.737609170 -0500 +--- ./server/drivers/mixed/p2os/robot_params.cc.cpp11 2010-06-28 00:12:42.000000000 -0400 ++++ ./server/drivers/mixed/p2os/robot_params.cc 2017-03-19 18:08:43.214289370 -0400 @@ -419,7 +419,7 @@ RobotParams_t amigo_params = 0, 0, @@ -114,3 +126,15 @@ diff -up ./server/drivers/mixed/p2os/robot_params.cc.cpp11 ./server/drivers/mixe 0, { { 100, 100, 90 }, +diff -up ./server/drivers/position/roboteq/roboteq.cc.cpp11 ./server/drivers/position/roboteq/roboteq.cc +--- ./server/drivers/position/roboteq/roboteq.cc.cpp11 2017-03-19 18:36:24.957834025 -0400 ++++ ./server/drivers/position/roboteq/roboteq.cc 2017-03-19 18:36:30.996070068 -0400 +@@ -1263,7 +1263,7 @@ int roboteq::ProcessPosition1dCmd(int mo + } + position_value = (unsigned char) (fabs(position) / rad_per_tick); + PLAYER_MSG1(MESSAGE_DEBUG,"Setting position_value to %d",position_value); +- if (motors_enabled == false || motor_enabled[motor_index] == false) { ++ if (motors_enabled == false || *motor_enabled[motor_index] == false) { + position_value = 0; + PLAYER_MSG0(MESSAGE_INFO, "Warning, the motors are disabled! Enable them before use."); + } diff --git a/player-3.0.2-interfacetable.patch b/player-3.0.2-interfacetable.patch new file mode 100644 index 0000000..d01259b --- /dev/null +++ b/player-3.0.2-interfacetable.patch @@ -0,0 +1,13 @@ +diff -up ./libplayerinterface/CMakeLists.txt.interfacetable ./libplayerinterface/CMakeLists.txt +--- ./libplayerinterface/CMakeLists.txt.interfacetable 2017-03-19 18:23:52.526290942 -0400 ++++ ./libplayerinterface/CMakeLists.txt 2017-03-19 18:24:20.501366791 -0400 +@@ -90,7 +90,8 @@ SET (playerinterfaceSrcs ${playerxdr_h} + functiontable.c + addr_util.c + interface_util.c +- ${functiontable_gen_h}) ++ ${functiontable_gen_h} ++ ${player_interfaces_h}) + + IF (PLAYER_OS_QNX) + SET (interfaceLibFlag -lrpc) diff --git a/player.spec b/player.spec index 41cf0ce..9321b63 100644 --- a/player.spec +++ b/player.spec @@ -27,7 +27,7 @@ Patch11: %{name}-3.0.2.libstatgrab-0.90.patch Patch12: %{name}-3.0.2.boost155.patch Patch13: %{name}-3.0.2.opencv3.patch Patch14: %{name}-3.0.2-cpp11.patch - +Patch15: %{name}-3.0.2-interfacetable.patch # Sort order: build tools, feature libs, within alphabetically, group related # entries on single line (most dominant lib first or alphabetically) @@ -158,26 +158,28 @@ are experimental. %patch12 -p1 %patch13 -p2 -b .opencv3 %patch14 -p0 -b .cpp11 - +%patch15 -p0 -b .interfacetable find . -name '*.c' -exec chmod -x {} \; find . -name '*.cc' -exec chmod -x {} \; find . -name '*.cpp' -exec chmod -x {} \; find . -name '*.h' -exec chmod -x {} \; %build +mkdir build; pushd build export LDFLAGS="%{?__global_ldflags} -lpthread" -%cmake %{?_cmake_skip_rpath} -DBUILD_DOCUMENTATION=ON -DBUILD_PLAYERCC=ON -DSWIG_EXECUTABLE=/usr/bin/swig -DBUILD_PLAYERCC_BOOST=ON -DBUILD_PYTHONC_BINDINGS=ON -DBUILD_PYTHONCPP_BINDINGS=ON -DBUILD_EXAMPLES=ON -DBUILD_RUBYCPP_BINDINGS=ON -DBoost_USE_MULTITHREAD=ON -DUNICAP_DIR=/usr -DRUBY_BINDINGS_INSTALL_DIR=%{ruby_vendorarchdir} . -make -make doc +%cmake %{?_cmake_skip_rpath} -DBUILD_DOCUMENTATION=ON -DBUILD_PLAYERCC=ON -DSWIG_EXECUTABLE=/usr/bin/swig -DBUILD_PLAYERCC_BOOST=ON -DBUILD_PYTHONC_BINDINGS=ON -DBUILD_PYTHONCPP_BINDINGS=ON -DBUILD_EXAMPLES=ON -DBUILD_RUBYCPP_BINDINGS=ON -DBoost_USE_MULTITHREAD=ON -DUNICAP_DIR=/usr -DRUBY_BINDINGS_INSTALL_DIR=%{ruby_vendorarchdir} .. +popd + +make -C build %{?_smp_mflags} +make doc -C build %install -rm -rf $RPM_BUILD_ROOT -make install DESTDIR=$RPM_BUILD_ROOT -mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/%{name} -mkdir -p $RPM_BUILD_ROOT/%{_libdir}/%{name} -mv $RPM_BUILD_ROOT/%{_datadir}/%{name}/config $RPM_BUILD_ROOT/%{_sysconfdir}/%{name} -find $RPM_BUILD_ROOT -name '*.la' -exec rm {} \; -rm -rf $RPM_BUILD_ROOT/%{_docdir}/* +%make_install -C build DESTDIR=%{buildroot} +mkdir -p %{buildroot}/%{_sysconfdir}/%{name} +mkdir -p %{buildroot}/%{_libdir}/%{name} +mv %{buildroot}/%{_datadir}/%{name}/config %{buildroot}/%{_sysconfdir}/%{name} +find %{buildroot} -name '*.la' -exec rm {} \; +rm -rf %{buildroot}/%{_docdir}/* desktop-file-install \ %if 0%{?fedora} && 0%{?fedora} < 19 @@ -200,9 +202,6 @@ desktop-file-install \ --dir=${RPM_BUILD_ROOT}%{_datadir}/applications \ %{SOURCE3} -%clean -rm -rf $RPM_BUILD_ROOT - %post -p /sbin/ldconfig %postun -p /sbin/ldconfig @@ -235,7 +234,7 @@ rm -rf $RPM_BUILD_ROOT %license COPYING COPYING.lib %doc doc/*.txt %doc doc/*.html -%doc doc/player-docs +%doc build/doc/player-docs %files -n ruby-%{name} %{ruby_vendorarchdir}/*.so