diff --git a/gnuradio-3.7.5-size_t.patch b/gnuradio-3.7.5-size_t.patch new file mode 100644 index 0000000..f55d4a4 --- /dev/null +++ b/gnuradio-3.7.5-size_t.patch @@ -0,0 +1,403 @@ +--- a/cmake/Modules/GrSwig.cmake ++++ a/cmake/Modules/GrSwig.cmake +@@ -105,18 +105,6 @@ endfunction(GR_SWIG_MAKE_DOCS) + macro(GR_SWIG_MAKE name) + set(ifiles ${ARGN}) + +- # Shimming this in here to take care of a SWIG bug with handling +- # vector and vector (on 32-bit machines) and +- # vector (on 64-bit machines). Use this to test +- # the size of size_t, then set SIZE_T_32 if it's a 32-bit machine +- # or not if it's 64-bit. The logic in gr_type.i handles the rest. +- INCLUDE(CheckTypeSize) +- CHECK_TYPE_SIZE("size_t" SIZEOF_SIZE_T) +- CHECK_TYPE_SIZE("unsigned int" SIZEOF_UINT) +- if(${SIZEOF_SIZE_T} EQUAL ${SIZEOF_UINT}) +- list(APPEND GR_SWIG_FLAGS -DSIZE_T_32) +- endif(${SIZEOF_SIZE_T} EQUAL ${SIZEOF_UINT}) +- + #do swig doc generation if specified + if(GR_SWIG_DOC_FILE) + set(GR_SWIG_DOCS_SOURCE_DEPS ${GR_SWIG_SOURCE_DEPS}) +--- a/docs/doxygen/other/thread_affinity.dox ++++ a/docs/doxygen/other/thread_affinity.dox +@@ -50,7 +50,7 @@ Each block has two new data members: + A block can set and unset its affinity at any time using the + following member functions: + +-- gr::block::set_processor_affinity(const std::vector &mask) ++- gr::block::set_processor_affinity(const std::vector &mask) + - gr::block::unset_processor_affinity() + + Where \p mask is a vector of core numbers to set the thread's affinity +@@ -76,7 +76,7 @@ to that affinity setting. + The gr::hier_block2 class supports the same API interface to the block + thread affinity: + +-- gr::hier_block2::set_processor_affinity(const std::vector &mask) ++- gr::hier_block2::set_processor_affinity(const std::vector &mask) + - gr::hier_block2::unset_processor_affinity() + - gr::hier_block2::processor_affinity() + +--- a/gnuradio-runtime/include/gnuradio/basic_block.h ++++ a/gnuradio-runtime/include/gnuradio/basic_block.h +@@ -375,13 +375,13 @@ namespace gr { + d_msg_handlers[which_port] = msg_handler_t(msg_handler); + } + +- virtual void set_processor_affinity(const std::vector &mask) ++ virtual void set_processor_affinity(const std::vector &mask) + { throw std::runtime_error("set_processor_affinity not overloaded in child class."); } + + virtual void unset_processor_affinity() + { throw std::runtime_error("unset_processor_affinity not overloaded in child class."); } + +- virtual std::vector processor_affinity() ++ virtual std::vector processor_affinity() + { throw std::runtime_error("processor_affinity not overloaded in child class."); } + }; + +--- a/gnuradio-runtime/include/gnuradio/block.h ++++ a/gnuradio-runtime/include/gnuradio/block.h +@@ -532,9 +532,9 @@ namespace gr { + /*! + * \brief Set the thread's affinity to processor core \p n. + * +- * \param mask a vector of ints of the core numbers available to this block. ++ * \param mask a vector of std::size_t of the core numbers available to this block. + */ +- void set_processor_affinity(const std::vector &mask); ++ void set_processor_affinity(const std::vector &mask); + + /*! + * \brief Remove processor affinity to a specific core. +@@ -544,7 +544,7 @@ namespace gr { + /*! + * \brief Get the current processor affinity. + */ +- std::vector processor_affinity() { return d_affinity; } ++ std::vector processor_affinity() { return d_affinity; } + + /*! + * \brief Get the current thread priority in use +@@ -589,7 +589,7 @@ namespace gr { + int d_max_noutput_items; // value of max_noutput_items for this block + int d_min_noutput_items; + tag_propagation_policy_t d_tag_propagation_policy; // policy for moving tags downstream +- std::vector d_affinity; // thread affinity proc. mask ++ std::vector d_affinity; // thread affinity proc. mask + int d_priority; // thread priority level + bool d_pc_rpc_set; + bool d_update_rate; // should sched update rel rate? +--- a/gnuradio-runtime/include/gnuradio/block_detail.h ++++ a/gnuradio-runtime/include/gnuradio/block_detail.h +@@ -174,10 +174,10 @@ namespace gr { + * \brief Set core affinity of block to the cores in the vector + * mask. + * +- * \param mask a vector of ints of the core numbers available to ++ * \param mask a vector of std::size_t of the core numbers available to + * this block. + */ +- void set_processor_affinity(const std::vector &mask); ++ void set_processor_affinity(const std::vector &mask); + + /*! + * \brief Unset core affinity. +--- a/gnuradio-runtime/include/gnuradio/hier_block2.h ++++ a/gnuradio-runtime/include/gnuradio/hier_block2.h +@@ -216,7 +216,7 @@ namespace gr { + * + * \param mask a vector of ints of the core numbers available to this block. + */ +- void set_processor_affinity(const std::vector &mask); ++ void set_processor_affinity(const std::vector &mask); + + /*! + * \brief Remove processor affinity for all blocks in hier_block2. +@@ -232,7 +232,7 @@ namespace gr { + * interface. If any block has been individually set, then this + * call could be misleading. + */ +- std::vector processor_affinity(); ++ std::vector processor_affinity(); + }; + + /*! +--- a/gnuradio-runtime/include/gnuradio/thread/thread.h ++++ a/gnuradio-runtime/include/gnuradio/thread/thread.h +@@ -77,7 +77,7 @@ namespace gr { + * do support in this way since 10.5 is not what we want or can + * use in this fashion). + */ +- GR_RUNTIME_API void thread_bind_to_processor(const std::vector &mask); ++ GR_RUNTIME_API void thread_bind_to_processor(const std::vector &mask); + + /*! \brief Convineince function to bind the current thread to a single core. + * +@@ -89,7 +89,7 @@ namespace gr { + * do support in this way since 10.5 is not what we want or can + * use in this fashion). + */ +- GR_RUNTIME_API void thread_bind_to_processor(int n); ++ GR_RUNTIME_API void thread_bind_to_processor(std::size_t n); + + /*! \brief Bind a thread to a set of cores. + * +@@ -104,7 +104,7 @@ namespace gr { + * use in this fashion). + */ + GR_RUNTIME_API void thread_bind_to_processor(gr_thread_t thread, +- const std::vector &mask); ++ const std::vector &mask); + + + /*! \brief Convineince function to bind the a thread to a single core. +--- a/gnuradio-runtime/lib/block.cc ++++ a/gnuradio-runtime/lib/block.cc +@@ -325,7 +325,7 @@ namespace gr { + } + + void +- block::set_processor_affinity(const std::vector &mask) ++ block::set_processor_affinity(const std::vector &mask) + { + d_affinity = mask; + if(d_detail) { +--- a/gnuradio-runtime/lib/block_detail.cc ++++ a/gnuradio-runtime/lib/block_detail.cc +@@ -220,7 +220,7 @@ namespace gr { + } + + void +- block_detail::set_processor_affinity(const std::vector &mask) ++ block_detail::set_processor_affinity(const std::vector &mask) + { + if(threaded) { + try { +--- a/gnuradio-runtime/lib/hier_block2.cc ++++ a/gnuradio-runtime/lib/hier_block2.cc +@@ -159,7 +159,7 @@ namespace gr { + } + + void +- hier_block2::set_processor_affinity(const std::vector &mask) ++ hier_block2::set_processor_affinity(const std::vector &mask) + { + d_detail->set_processor_affinity(mask); + } +@@ -170,7 +170,7 @@ namespace gr { + d_detail->unset_processor_affinity(); + } + +- std::vector ++ std::vector + hier_block2::processor_affinity() + { + return d_detail->processor_affinity(); +--- a/gnuradio-runtime/lib/hier_block2_detail.cc ++++ a/gnuradio-runtime/lib/hier_block2_detail.cc +@@ -685,7 +685,7 @@ namespace gr { + } + + void +- hier_block2_detail::set_processor_affinity(const std::vector &mask) ++ hier_block2_detail::set_processor_affinity(const std::vector &mask) + { + basic_block_vector_t tmp = d_fg->calc_used_blocks(); + for(basic_block_viter_t p = tmp.begin(); p != tmp.end(); p++) { +@@ -702,7 +702,7 @@ namespace gr { + } + } + +- std::vector ++ std::vector + hier_block2_detail::processor_affinity() + { + basic_block_vector_t tmp = d_fg->calc_used_blocks(); +--- a/gnuradio-runtime/lib/hier_block2_detail.h ++++ a/gnuradio-runtime/lib/hier_block2_detail.h +@@ -54,9 +54,9 @@ namespace gr { + void unlock(); + void flatten_aux(flat_flowgraph_sptr sfg) const; + +- void set_processor_affinity(const std::vector &mask); ++ void set_processor_affinity(const std::vector &mask); + void unset_processor_affinity(); +- std::vector processor_affinity(); ++ std::vector processor_affinity(); + + private: + // Private implementation data +--- a/gnuradio-runtime/lib/thread/thread.cc ++++ a/gnuradio-runtime/lib/thread/thread.cc +@@ -40,33 +40,33 @@ namespace gr { + } + + void +- thread_bind_to_processor(int n) ++ thread_bind_to_processor(std::size_t n) + { +- std::vector mask(1, n); ++ std::vector mask(1, n); + thread_bind_to_processor(get_current_thread_id(), mask); + } + + void +- thread_bind_to_processor(const std::vector &mask) ++ thread_bind_to_processor(const std::vector &mask) + { + thread_bind_to_processor(get_current_thread_id(), mask); + } + + void +- thread_bind_to_processor(gr_thread_t thread, int n) ++ thread_bind_to_processor(gr_thread_t thread, std::size_t n) + { +- std::vector mask(1, n); ++ std::vector mask(1, n); + thread_bind_to_processor(thread, mask); + } + + void +- thread_bind_to_processor(gr_thread_t thread, const std::vector &mask) ++ thread_bind_to_processor(gr_thread_t thread, const std::vector &mask) + { + //DWORD_PTR mask = (1 << n); + DWORD_PTR dword_mask = 0; + +- std::vector _mask = mask; +- std::vector::iterator itr; ++ std::vector _mask = mask; ++ std::vector::iterator itr; + for(itr = _mask.begin(); itr != _mask.end(); itr++) + dword_mask |= (1 << (*itr)); + +@@ -171,25 +171,25 @@ namespace gr { + } + + void +- thread_bind_to_processor(int n) ++ thread_bind_to_processor(std::size_t n) + { + // Not implemented on OSX + } + + void +- thread_bind_to_processor(gr_thread_t thread, int n) ++ thread_bind_to_processor(gr_thread_t thread, std::size_t n) + { + // Not implemented on OSX + } + + void +- thread_bind_to_processor(const std::vector &mask) ++ thread_bind_to_processor(const std::vector &mask) + { + // Not implemented on OSX + } + + void +- thread_bind_to_processor(gr_thread_t thread, const std::vector &mask) ++ thread_bind_to_processor(gr_thread_t thread, const std::vector &mask) + { + // Not implemented on OSX + } +@@ -254,32 +254,32 @@ namespace gr { + } + + void +- thread_bind_to_processor(int n) ++ thread_bind_to_processor(std::size_t n) + { +- std::vector mask(1, n); ++ std::vector mask(1, n); + thread_bind_to_processor(get_current_thread_id(), mask); + } + + void +- thread_bind_to_processor(const std::vector &mask) ++ thread_bind_to_processor(const std::vector &mask) + { + thread_bind_to_processor(get_current_thread_id(), mask); + } + + void +- thread_bind_to_processor(gr_thread_t thread, int n) ++ thread_bind_to_processor(gr_thread_t thread, std::size_t n) + { +- std::vector mask(1, n); ++ std::vector mask(1, n); + thread_bind_to_processor(thread, mask); + } + + void +- thread_bind_to_processor(gr_thread_t thread, const std::vector &mask) ++ thread_bind_to_processor(gr_thread_t thread, const std::vector &mask) + { + cpu_set_t set; + size_t len = sizeof(cpu_set_t); +- std::vector _mask = mask; +- std::vector::iterator itr; ++ std::vector _mask = mask; ++ std::vector::iterator itr; + + CPU_ZERO(&set); + for(itr = _mask.begin(); itr != _mask.end(); itr++) +--- a/gnuradio-runtime/swig/block.i ++++ a/gnuradio-runtime/swig/block.i +@@ -98,9 +98,9 @@ class gr::block : public gr::basic_block + float pc_work_time_total(); + + // Methods to manage processor affinity. +- void set_processor_affinity(const std::vector &mask); ++ void set_processor_affinity(const std::vector &mask); + void unset_processor_affinity(); +- std::vector processor_affinity(); ++ std::vector processor_affinity(); + + // Methods to manage thread priority + int active_thread_priority(); +--- a/gnuradio-runtime/swig/gr_types.i ++++ a/gnuradio-runtime/swig/gr_types.i +@@ -80,15 +80,4 @@ namespace std { + %template(gr_vector_vector_complexf) std::vector< std::vector< std::complex > >; + %template(gr_vector_vector_complexd) std::vector< std::vector< std::complex > >; + +-// Fix for Issue #529 +-#ifdef SIZE_T_32 +- // On 32-bit systems, whenever we see std::vector, replace it +- // with vector +- %apply std::vector { std::vector }; +-#else +- // On 64-bit systems, whenever we see std::vector, replace it +- // with vector +- %apply std::vector { std::vector }; +-#endif +- + #endif /* SWIG_GR_TYPES_I */ +--- a/gnuradio-runtime/swig/hier_block2.i ++++ a/gnuradio-runtime/swig/hier_block2.i +@@ -87,9 +87,9 @@ namespace gr { + void message_port_register_hier_in(pmt::pmt_t port_id); + void message_port_register_hier_out(pmt::pmt_t port_id); + +- void set_processor_affinity(const std::vector &mask); ++ void set_processor_affinity(const std::vector &mask); + void unset_processor_affinity(); +- std::vector processor_affinity(); ++ std::vector processor_affinity(); + + gr::hier_block2_sptr to_hier_block2(); // Needed for Python type coercion + }; +--- a/gr-blocks/lib/qa_gr_top_block.cc ++++ a/gr-blocks/lib/qa_gr_top_block.cc +@@ -278,7 +278,7 @@ void qa_top_block::t11_set_block_affinity() + gr::block_sptr src (gr::blocks::null_source::make(sizeof(float))); + gr::block_sptr snk (gr::blocks::null_sink::make(sizeof(float))); + +- std::vector set(1, 0), ret; ++ std::vector set(1, 0), ret; + src->set_processor_affinity(set); + + tb->connect(src, 0, snk, 0); diff --git a/gnuradio.spec b/gnuradio.spec index 479f764..68db03a 100644 --- a/gnuradio.spec +++ b/gnuradio.spec @@ -28,7 +28,7 @@ Name: gnuradio Version: 3.7.5 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Software defined radio framework Group: Applications/Engineering @@ -67,6 +67,9 @@ Requires: PyQwt, PyOpenGL %endif Obsoletes: usrp < 3.3.0-1 Obsoletes: grc < 0.80-1 +# rhbz#1143914, patch approved by upstream to be used as distro specific +# patch, upstream report: http://gnuradio.org/redmine/issues/728 +Patch0: gnuradio-3.7.5-size_t.patch %description GNU Radio is a collection of software that when combined with minimal @@ -104,6 +107,7 @@ GNU Radio examples %prep %setup -q +%patch0 -p1 -b .size_t #force regeneration of cached moc output files find . -name "*_moc.cc" -exec rm {} \; @@ -191,6 +195,11 @@ rm -rf %{buildroot} %{_datadir}/gnuradio/examples %changelog +* Tue Oct 7 2014 Jaroslav Škarvada - 3.7.5-3 +- Fixed swig bug regarding size_t (by size_t patch) + This fixes building on s390 + Resolves: rhbz#1143914 + * Wed Sep 17 2014 Jaroslav Škarvada - 3.7.5-2 - Added PyOpenGL requirement Resolves: rhbz#1049770