Bug 2227391

Summary: libqhullcpp.a needs to be compiled with -fPIC
Product: Red Hat Enterprise Linux 9 Reporter: Orion Poplawski <orion>
Component: qhullAssignee: Matej Mužila <mmuzila>
Status: NEW --- QA Contact: RHEL CS Apps Subsystem QE <rhel-cs-apps-subsystem-qe>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 9.2CC: nforro
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Orion Poplawski 2023-07-29 02:15:59 UTC
Description of problem:

When trying to build gdl for EPEL9, I'm getting the following compile error:

cd /builddir/build/BUILD/gdl-1.0.2/build-python/src && /usr/bin/cmake -E cmake_link_script CMakeFiles/gdl.dir/link.txt --verbose=1
/usr/bin/g++ -fPIC -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fcommon -fopenmp -DNDEBUG -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -shared  -o GDL.so CMakeFiles/gdl.dir/CFMTLexer.cpp.o CMakeFiles/gdl.dir/FMTIn.cpp.o CMakeFiles/gdl.dir/FMTLexer.cpp.o CMakeFiles/gdl.dir/FMTOut.cpp.o CMakeFiles/gdl.dir/FMTParser.cpp.o CMakeFiles/gdl.dir/GDLInterpreter.cpp.o CMakeFiles/gdl.dir/GDLLexer.cpp.o CMakeFiles/gdl.dir/GDLParser.cpp.o CMakeFiles/gdl.dir/GDLTreeParser.cpp.o CMakeFiles/gdl.dir/datatypes.cpp.o CMakeFiles/gdl.dir/convol.cpp.o CMakeFiles/gdl.dir/convol2.cpp.o CMakeFiles/gdl.dir/smooth.cpp.o CMakeFiles/gdl.dir/basic_op.cpp.o CMakeFiles/gdl.dir/basic_op_new.cpp.o CMakeFiles/gdl.dir/getas.cpp.o CMakeFiles/gdl.dir/basic_op_add.cpp.o CMakeFiles/gdl.dir/basic_op_sub.cpp.o CMakeFiles/gdl.dir/basic_op_mult.cpp.o CMakeFiles/gdl.dir/basic_op_div.cpp.o CMakeFiles/gdl.dir/default_io.cpp.o CMakeFiles/gdl.dir/ifmt.cpp.o CMakeFiles/gdl.dir/ofmt.cpp.o CMakeFiles/gdl.dir/datatypes_minmax.cpp.o CMakeFiles/gdl.dir/allix.cpp.o CMakeFiles/gdl.dir/arrayindex.cpp.o CMakeFiles/gdl.dir/assocdata.cpp.o CMakeFiles/gdl.dir/basegdl.cpp.o CMakeFiles/gdl.dir/basic_fun.cpp.o CMakeFiles/gdl.dir/basic_fun_cl.cpp.o CMakeFiles/gdl.dir/basic_fun_jmg.cpp.o CMakeFiles/gdl.dir/calendar.cpp.o CMakeFiles/gdl.dir/color.cpp.o CMakeFiles/gdl.dir/convert2.cpp.o CMakeFiles/gdl.dir/dcommon.cpp.o CMakeFiles/gdl.dir/dcompiler.cpp.o CMakeFiles/gdl.dir/dialog.cpp.o CMakeFiles/gdl.dir/dinterpreter.cpp.o CMakeFiles/gdl.dir/dnode.cpp.o CMakeFiles/gdl.dir/dpro.cpp.o CMakeFiles/gdl.dir/dSFMT/dSFMT.c.o CMakeFiles/gdl.dir/dstructdesc.cpp.o CMakeFiles/gdl.dir/dstructfactory.cxx.o CMakeFiles/gdl.dir/dstructgdl.cpp.o CMakeFiles/gdl.dir/dvar.cpp.o CMakeFiles/gdl.dir/envt.cpp.o CMakeFiles/gdl.dir/extrat.cpp.o CMakeFiles/gdl.dir/exists_fun.cpp.o CMakeFiles/gdl.dir/fftw.cpp.o CMakeFiles/gdl.dir/file.cpp.o CMakeFiles/gdl.dir/fmtnode.cpp.o CMakeFiles/gdl.dir/gdlarray.cpp.o CMakeFiles/gdl.dir/gdleventhandler.cpp.o CMakeFiles/gdl.dir/gdlexception.cpp.o CMakeFiles/gdl.dir/gdlgstream.cpp.o CMakeFiles/gdl.dir/gdlxstream.cpp.o CMakeFiles/gdl.dir/gdljournal.cpp.o CMakeFiles/gdl.dir/gdlhelp.cpp.o CMakeFiles/gdl.dir/gdlpsstream.cpp.o CMakeFiles/gdl.dir/gdlsvgstream.cpp.o CMakeFiles/gdl.dir/gdlwidget.cpp.o CMakeFiles/gdl.dir/gdlwidgeteventhandler.cpp.o CMakeFiles/gdl.dir/gdlwxstream.cpp.o CMakeFiles/gdl.dir/gdlzstream.cpp.o CMakeFiles/gdl.dir/getfmtast.cpp.o CMakeFiles/gdl.dir/graphicsdevice.cpp.o CMakeFiles/gdl.dir/basic_pro.cpp.o CMakeFiles/gdl.dir/basic_pro_jmg.cpp.o CMakeFiles/gdl.dir/brent.cpp.o CMakeFiles/gdl.dir/grib.cpp.o CMakeFiles/gdl.dir/gsl_fun.cpp.o CMakeFiles/gdl.dir/gsl_matrix.cpp.o CMakeFiles/gdl.dir/hash.cpp.o CMakeFiles/gdl.dir/hdf5_fun.cpp.o CMakeFiles/gdl.dir/hdf_fun.cpp.o CMakeFiles/gdl.dir/hdf_pro.cpp.o CMakeFiles/gdl.dir/histogram.cpp.o CMakeFiles/gdl.dir/image.cpp.o CMakeFiles/gdl.dir/initct.cpp.o CMakeFiles/gdl.dir/initsysvar.cpp.o CMakeFiles/gdl.dir/interpolate.cpp.o CMakeFiles/gdl.dir/interpol.cpp.o CMakeFiles/gdl.dir/io.cpp.o CMakeFiles/gdl.dir/labelregion.cpp.o CMakeFiles/gdl.dir/lapack.cpp.o CMakeFiles/gdl.dir/least_squares.cpp.o CMakeFiles/gdl.dir/libinit.cpp.o CMakeFiles/gdl.dir/libinit_ac.cpp.o CMakeFiles/gdl.dir/libinit_cl.cpp.o CMakeFiles/gdl.dir/libinit_gm.cpp.o CMakeFiles/gdl.dir/libinit_jmg.cpp.o CMakeFiles/gdl.dir/libinit_mes.cpp.o CMakeFiles/gdl.dir/libinit_ng.cpp.o CMakeFiles/gdl.dir/libinit_jp.cpp.o CMakeFiles/gdl.dir/libinit_exists.cpp.o CMakeFiles/gdl.dir/linearprogramming.cpp.o CMakeFiles/gdl.dir/list.cpp.o CMakeFiles/gdl.dir/magick_cl.cpp.o CMakeFiles/gdl.dir/math_fun.cpp.o CMakeFiles/gdl.dir/math_fun_ac.cpp.o CMakeFiles/gdl.dir/math_fun_gm.cpp.o CMakeFiles/gdl.dir/math_fun_jmg.cpp.o CMakeFiles/gdl.dir/math_fun_ng.cpp.o CMakeFiles/gdl.dir/math_utl.cpp.o CMakeFiles/gdl.dir/matrix_cholesky.cpp.o CMakeFiles/gdl.dir/matrix_invert.cpp.o CMakeFiles/gdl.dir/mpi.cpp.o CMakeFiles/gdl.dir/ncdf_att_cl.cpp.o CMakeFiles/gdl.dir/ncdf_cl.cpp.o CMakeFiles/gdl.dir/ncdf_dim_cl.cpp.o CMakeFiles/gdl.dir/ncdf_var_cl.cpp.o CMakeFiles/gdl.dir/ncdf4_group.cpp.o CMakeFiles/gdl.dir/newprognode.cpp.o CMakeFiles/gdl.dir/nullgdl.cpp.o CMakeFiles/gdl.dir/objects.cpp.o CMakeFiles/gdl.dir/overload.cpp.o CMakeFiles/gdl.dir/plotting_axis.cpp.o CMakeFiles/gdl.dir/plotting_contour.cpp.o CMakeFiles/gdl.dir/plotting_convert_coord.cpp.o CMakeFiles/gdl.dir/plotting_cursor.cpp.o CMakeFiles/gdl.dir/plotting_device.cpp.o CMakeFiles/gdl.dir/plotting_erase.cpp.o CMakeFiles/gdl.dir/plotting_image.cpp.o CMakeFiles/gdl.dir/plotting_misc.cpp.o CMakeFiles/gdl.dir/plotting_oplot.cpp.o CMakeFiles/gdl.dir/plotting_plot.cpp.o CMakeFiles/gdl.dir/plotting_plots.cpp.o CMakeFiles/gdl.dir/plotting_polyfill.cpp.o CMakeFiles/gdl.dir/plotting_shade_surf.cpp.o CMakeFiles/gdl.dir/plotting_surface.cpp.o CMakeFiles/gdl.dir/plotting_windows.cpp.o CMakeFiles/gdl.dir/plotting_xyouts.cpp.o CMakeFiles/gdl.dir/plotting.cpp.o CMakeFiles/gdl.dir/print.cpp.o CMakeFiles/gdl.dir/print_tree.cpp.o CMakeFiles/gdl.dir/prognode.cpp.o CMakeFiles/gdl.dir/prognode_lexpr.cpp.o CMakeFiles/gdl.dir/prognodeexpr.cpp.o CMakeFiles/gdl.dir/projections.cpp.o CMakeFiles/gdl.dir/randomgenerators.cpp.o CMakeFiles/gdl.dir/read.cpp.o CMakeFiles/gdl.dir/saverestore.cpp.o CMakeFiles/gdl.dir/semshm.cpp.o CMakeFiles/gdl.dir/sigfpehandler.cpp.o CMakeFiles/gdl.dir/sorting.cpp.o CMakeFiles/gdl.dir/str.cpp.o CMakeFiles/gdl.dir/terminfo.cpp.o CMakeFiles/gdl.dir/tiff.cxx.o CMakeFiles/gdl.dir/triangulation.cpp.o CMakeFiles/gdl.dir/typetraits.cpp.o CMakeFiles/gdl.dir/where.cpp.o CMakeFiles/gdl.dir/widget.cpp.o CMakeFiles/gdl.dir/Shapefiles.cpp.o CMakeFiles/gdl.dir/sax.cpp.o CMakeFiles/gdl.dir/qhull.cpp.o  -lantlr -ldl -lncurses -lform -lreadline -lhistory -lz -lgsl -lgslcblas -ltirpc -lplplot -lplplotcxx -lpng -lz -fopenmp -pthread -lwx_baseu-3.2 -lwx_gtk3u_core-3.2 -lGraphicsMagick -lGraphicsMagick++ -ltiff -lgeotiff -lnetcdf -lmfhdf -ldf -lz -ljpeg -lhdf5 -lfftw3 -lfftw3f -lproj -lpython3.9 -ludunits2 -leccodes -Wl,-Bstatic -lqhullcpp -Wl,-Bdynamic -lqhull_r -lglpk -lshp -lexpat -lgsl -lgslcblas -ltirpc -lplplot -lplplotcxx -lpng -lwx_baseu-3.2 -lwx_gtk3u_core-3.2 -lGraphicsMagick -lGraphicsMagick++ -ltiff -lgeotiff -lnetcdf -lmfhdf -ldf -lz -ljpeg -lhdf5 -lfftw3 -lfftw3f -lproj -lpython3.9 -ludunits2 -leccodes -Wl,-Bstatic -lqhullcpp -Wl,-Bdynamic -lqhull_r -lglpk -lshp -lexpat 
/builddir/build/BUILD/gdl-1.0.2/src/minmax_include.cpp:353: warning: type 'struct .omp_data_s.435' violates the C++ One Definition Rule [-Wodr]
  353 | #pragma omp parallel num_threads(GDL_NTHREADS)
      | 
/builddir/build/BUILD/gdl-1.0.2/src/where_inc.cpp:203: note: a different type is defined in another translation unit
  203 | #pragma omp parallel num_threads(nchunk) //shared(partialCount,part) //if (nEl >= CpuTPOOL_MIN_ELTS && (CpuTPOOL_MAX_ELTS == 0 || CpuTPOOL_MAX_ELTS >= nEl))
      | 
/builddir/build/BUILD/gdl-1.0.2/src/datatypes_minmax.cpp:77: note: the first difference of corresponding definitions is field 'start'
   77 |             SizeT start, SizeT stop, SizeT step, DLong valIx, bool useAbs) {
      | 
/builddir/build/BUILD/gdl-1.0.2/src/where_inc.cpp:174: note: a field with different name is defined in another translation unit
  174 | void Data_<Sp>::Where(DLong* &ret, SizeT &passed_count, bool comp, DLong* &comp_ret) {
      | 
/builddir/build/BUILD/gdl-1.0.2/src/minmax_include.cpp:257: warning: type 'struct .omp_data_s.532' violates the C++ One Definition Rule [-Wodr]
  257 | #pragma omp parallel num_threads(GDL_NTHREADS)
      | 
/builddir/build/BUILD/gdl-1.0.2/src/where_inc.cpp:47: note: a different type is defined in another translation unit
   47 | #pragma omp parallel num_threads(nchunk) //shared(partialCount,part) //if (nEl >= CpuTPOOL_MIN_ELTS && (CpuTPOOL_MAX_ELTS == 0 || CpuTPOOL_MAX_ELTS >= nEl))
      | 
/builddir/build/BUILD/gdl-1.0.2/src/datatypes_minmax.cpp:85: note: the first difference of corresponding definitions is field 'start'
   85 |             SizeT start, SizeT stop, SizeT step, DLong valIx, bool useAbs) {
      | 
/builddir/build/BUILD/gdl-1.0.2/src/where_inc.cpp:18: note: a field with different name is defined in another translation unit
   18 | void Data_<Sp>::Where(DLong64* &ret, SizeT &passed_count, bool comp, DLong64* &comp_ret) {
      | 
/builddir/build/BUILD/gdl-1.0.2/src/minmax_include.cpp:353: warning: type 'struct .omp_data_s.533' violates the C++ One Definition Rule [-Wodr]
  353 | #pragma omp parallel num_threads(GDL_NTHREADS)
      | 
/builddir/build/BUILD/gdl-1.0.2/src/where_inc.cpp:126: note: a different type is defined in another translation unit
  126 | #pragma omp parallel num_threads(nchunk) //shared(partialCount,part) //if (nEl >= CpuTPOOL_MIN_ELTS && (CpuTPOOL_MAX_ELTS == 0 || CpuTPOOL_MAX_ELTS >= nEl))
      | 
/builddir/build/BUILD/gdl-1.0.2/src/datatypes_minmax.cpp:85: note: the first difference of corresponding definitions is field 'start'
   85 |             SizeT start, SizeT stop, SizeT step, DLong valIx, bool useAbs) {
      | 
/builddir/build/BUILD/gdl-1.0.2/src/where_inc.cpp:18: note: a field with different name is defined in another translation unit
   18 | void Data_<Sp>::Where(DLong64* &ret, SizeT &passed_count, bool comp, DLong64* &comp_ret) {
      | 
/builddir/build/BUILD/gdl-1.0.2/src/libinit.cpp: In function 'LibInit':
/builddir/build/BUILD/gdl-1.0.2/src/libinit.cpp:74: note: variable tracking size limit exceeded with '-fvar-tracking-assignments', retrying without
   74 | void LibInit()
      | 
/usr/bin/ld: /usr/lib/gcc/x86_64-redhat-linux/11/../../../../lib64/libqhullcpp.a(QhullVertexSet.cpp.o): warning: relocation against `_ZTIN8orgQhull10QhullErrorE' in read-only section `.text.unlikely[.text.unlikely.group]'
/usr/bin/ld: /usr/lib/gcc/x86_64-redhat-linux/11/../../../../lib64/libqhullcpp.a(PointCoordinates.cpp.o): relocation R_X86_64_PC32 against symbol `_ZNKSt5ctypeIcE8do_widenEc' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status


Version-Release number of selected component (if applicable):
1:7.2.1-9.el9

Comment 1 Orion Poplawski 2023-07-29 02:20:54 UTC
This is fixed in Fedora:

* Sun Oct 02 2022 Orion Poplawski <orion> - 1:7.2.1-11
- Compile libqhullcpp with -fPIC