Giter Club home page Giter Club logo

cbflib's People

Contributors

ezlateva avatar graeme-winter avatar jcbollinger avatar jonwright avatar ndevenish avatar peterc-dls avatar phyy-nx avatar yayahjb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cbflib's Issues

can you use a valid package name in the setup.py

When I try to depende on pycbf with the egg name, I get this error message

I: pybuild base:232: python3.9 setup.py clean 
error in cctbx setup command: 'install_requires' must be a string or list of strings containing valid project/version requirement specifiers; Parse error at "'_pycbf'": Expected W:(abcd...)
E: pybuild pybuild:353: clean: plugin distutils failed with: exit code=1: python3.9 setup.py clean 
  1. could you use pycbf instead of _pycbf
  2. couls you switch to setuptool sinstead of distutils whcih will be remove in Python 3.12

Thanks for considering

how to build the documentation

I am trying to build the documentation bug I have this error message.

$ ./make-docs.sh 
Running 'doxygen'...
Extracting data...
warning: failed to load external entity "doc/src/doxygen2xml.xsl"
cannot parse doc/src/doxygen2xml.xsl
processing escape sequences...
sed: impossible de lire doc/doc.xml: Aucun fichier ou dossier de ce type
Indexing...
warning: failed to load external entity "doc/doc.xml"
unable to parse doc/doc.xml
Generating HTML...
warning: failed to load external entity "doc/src/xml2html.xsl"
cannot parse doc/src/xml2html.xsl
Done.

some files are missing ?

pycbf 0.9.7 does not pass tests out of the box.

Hello, I am preparing the cbflib 0.9.7 package for Debian.

I now have a package built with only the Python3 version pf pycbf. I want to add autopkgtest in order to have integration tests which checks that nothing break when a dependency change. So my first attempt was to execute the 4 test of the pycbf directory. But it end-up with this error

$python3 pycbf_test1.py 
Traceback (most recent call last):
  File "/home/experiences/instrumentation/picca/debian/science-team/cbflib/pycbf/pycbf_test1.py", line 4, in <module>
    object.read_file(b"../img2cif_packed.cif",pycbf.MSG_DIGEST)
  File "/usr/lib/python3/dist-packages/pycbf.py", line 2009, in read_file
    return _pycbf.cbf_handle_struct_read_file(self, filename, headers)
TypeError: in method 'cbf_handle_struct_read_file', argument 2 of type 'char *

This issue cause also troubles when I try to run the dxtbx test suite.

This problem seems to be related to the handling of string/bytes.

Can you reproduce this issue on your system ?

thanks

nexus2cbf test optimization-dependent crashes

I am building and CBFLib 0.9.6 from the distribution package available at SourceForge, on CentOS Linux 8 (x86_64), using the distribution's GCC toochain version 8.3.1. The library, wrappers, and example programs all built successfully, but when I ran the tests, nexus2cbf crashed:

LD_LIBRARY_PATH=/home/jbolling/tmp/cbflib-CBFlib-0.9.6/solib:$LD_LIBRARY_PATH;export LD_LIBRARY_PATH; cd /home/jbolling/tmp/cbflib-CBFlib-0.9.6/minicbf_test; time /home/jbolling/tmp/cbflib-CBFlib-0.9.6/bin/nexus2cbf \
-o i19-1.cbf i19-1.h5
HDF5-DIAG: Error detected in HDF5 (1.8.18) thread 0:
  #000: H5D.c line 342 in H5Dopen2(): no name
    major: Invalid arguments to routine
    minor: Bad value
HDF5-DIAG: Error detected in HDF5 (1.8.18) thread 0:
  #000: H5L.c line 1183 in H5Literate(): link iteration failed
    major: Symbol table
    minor: Iteration failed
  #001: H5Gint.c line 844 in H5G_iterate(): error iterating over links
    major: Symbol table
    minor: Iteration failed
  #002: H5Gobj.c line 708 in H5G__obj_iterate(): can't iterate over symbol table
    major: Symbol table
    minor: Iteration failed
  #003: H5Gstab.c line 566 in H5G__stab_iterate(): iteration operator failed
    major: Symbol table
    minor: Can't move to next iterator location
  #004: H5B.c line 1221 in H5B_iterate(): B-tree iteration failed
    major: B-Tree node
    minor: Iteration failed
  #005: H5B.c line 1177 in H5B_iterate_helper(): B-tree iteration failed
    major: B-Tree node
    minor: Iteration failed
  #006: H5Gnode.c line 1039 in H5G__node_iterate(): iteration operator failed
    major: Symbol table
    minor: Can't move to next iterator location
HDF5-DIAG: Error detected in HDF5 (1.8.18) thread 0:
  #000: H5L.c line 1183 in H5Literate(): link iteration failed
    major: Symbol table
    minor: Iteration failed
  #001: H5Gint.c line 844 in H5G_iterate(): error iterating over links
    major: Symbol table
    minor: Iteration failed
  #002: H5Gobj.c line 708 in H5G__obj_iterate(): can't iterate over symbol table
    major: Symbol table
    minor: Iteration failed
  #003: H5Gstab.c line 566 in H5G__stab_iterate(): iteration operator failed
    major: Symbol table
    minor: Can't move to next iterator location
  #004: H5B.c line 1221 in H5B_iterate(): B-tree iteration failed
    major: B-Tree node
    minor: Iteration failed
  #005: H5B.c line 1177 in H5B_iterate_helper(): B-tree iteration failed
    major: B-Tree node
    minor: Iteration failed
  #006: H5Gnode.c line 1039 in H5G__node_iterate(): iteration operator failed
    major: Symbol table
    minor: Can't move to next iterator location
HDF5-DIAG: Error detected in HDF5 (1.8.18) thread 0:
  #000: H5L.c line 1183 in H5Literate(): link iteration failed
    major: Symbol table
    minor: Iteration failed
  #001: H5Gint.c line 844 in H5G_iterate(): error iterating over links
    major: Symbol table
    minor: Iteration failed
  #002: H5Gobj.c line 708 in H5G__obj_iterate(): can't iterate over symbol table
    major: Symbol table
    minor: Iteration failed
  #003: H5Gstab.c line 566 in H5G__stab_iterate(): iteration operator failed
    major: Symbol table
    minor: Can't move to next iterator location
  #004: H5B.c line 1221 in H5B_iterate(): B-tree iteration failed
    major: B-Tree node
    minor: Iteration failed
  #005: H5B.c line 1177 in H5B_iterate_helper(): B-tree iteration failed
    major: B-Tree node
    minor: Iteration failed
  #006: H5Gnode.c line 1039 in H5G__node_iterate(): iteration operator failed
    major: Symbol table
    minor: Can't move to next iterator location
An error occured, will not try to write the file 'i19-1.cbf'
Time to convert 'i19-1.cbf': 0.006s

real    0m0.008s
user    0m0.006s
sys     0m0.002s
make: *** [Makefile_LINUX_64:2230: extra] Error 1

I found, however, that if I used the default Makefile instead of Makefile_LINUX_64, then the same test ran successfully. Ultimately, I traced the issue to optimization level. nexus2cbf works if everything is built with optimization -O3 (default Makefile), but not if everything is built with optimization -O2 (Makefile_LINUX_64 and Makefile_LINUX).

There is a clear workaround here, of course, but optimization-dependent misbehavior is usually a sign of a deeper problem, especially when it is the more aggressive optimization level that is required for (apparently) correct behavior.

cif_img.dic: standardise the "photons per second" unit name and describe the unit in the ITEM_UNITS_LIST loop

Issue was noticed in the cif_img.dic dictionary, version 1.8.5.

The photons per second unit appear a single time in the dictionary in the definition of the _diffrn_radiation.beam_flux data item. The usage of this item has two minor issues:

  • Unit name photons per second uses spaces to separate words while all other units from the dictionary use underscores (e.g. degrees_squared, counts_per_photon). It would be more consistent to rename it to photons_per_second.
  • All units used in the dictionary are described in the ITEM_UNITS_LISTloop (_item_units_list.code, _item_units_list.detail) except for the photons per second. The missing description should be added.

I can create a relevant PR if the proposed changes are acceptable.

New external data pointers do not allow for individually-compressed files

proteindiffraction.org contains archives where the top-level downloadable file is a tar file, and the individual files are compressed using gzip or bzip2. This way of storing files is not anticipated by the external data pointer definitions, which assume that compression is performed on the overall archive only (e.g. tar.gz or tar.bz2). I propose adding a new column to array_data, _array_data.external_file_compression with enumerated values corresponding to common compression formats. Where the value for this attribute is not 'None', after a file has been downloaded and extracted it will be decompressed according to the specified format.

Automatic detection of CBF_DONT_USE_LONG_LONG

CBF_DONT_USE_LONG_LONG could be automated.

Create this checkint.c

#include <limits.h>
#if LONG_MAX == LLONG_MAX
#error LONG=LLONG
#endif

Detect by return code such as

$(CC) -E checkint.c || echo #define CBF_DONT_USE_LONG_LONG >> longflag.h

and add #include "longflag.h" to cbf.h

Converted master to main

CBFlib master was converted to main. Downstream developers should convert their local repositories with:

git branch -m master main
git fetch origin
git branch -u origin/main main

errosr and warnings reported by the Debian lintian tool

Hello, you can find some warning and errors reported by lintian.

https://lintian.debian.org/sources/cbflib

I am wondering if you could help solve the

sourcce-is-missing : sources are missing for these 4 files ?

national-encoding : files are not encoded in utf8 but other type
/include$ file *

cbf_airy_disk.h: ASCII text
cbf_alloc.h: ISO-8859 text
cbf_ascii.h: ISO-8859 text
cbf_binary.h: ISO-8859 text
cbf_byte_offset.h: ISO-8859 text
cbf_canonical.h: ISO-8859 text
cbf_codes.h: ISO-8859 text
cbf_compress.h: ISO-8859 text
cbf_context.h: ISO-8859 text
cbf_copy.h: UTF-8 Unicode text
cbff.h: UTF-8 Unicode text
cbf_file.h: ISO-8859 text
cbf_getopt.h: C source, ASCII text
cbf.h: ASCII text
cbf_hdf5_filter.h: ASCII text
cbf_hdf5.h: UTF-8 Unicode text
cbf_lex.h: ISO-8859 text
cbf_minicbf_header.h: ASCII text
cbf_nibble_offset.h: ISO-8859 text
cbf_packed.h: ISO-8859 text
cbf_predictor.h: ISO-8859 text
cbf_read_binary.h: ISO-8859 text
cbf_read_mime.h: ISO-8859 text
cbf_simple.h: ISO-8859 text
cbf_string.h: ISO-8859 text
cbf_stx.h: C source, ASCII text
cbf_tree.h: ISO-8859 text
cbf_ulp.h: C source, ASCII text
cbf_uncompressed.h: ISO-8859 text
cbf_write_binary.h: ISO-8859 text
cbf_write.h: ISO-8859 text
cbf_ws.h: UTF-8 Unicode text
global.h: C source, ASCII text
img.h: C source, ASCII text
md5.h: C source, ASCII text

there is a few spelling error :)

and more problématic from my point of view is this one

exit-in-shared-library

thanks for considering

Fred

Are we supposed to use 0.9.7?

I'm left unsure if 0.9.7 is supposed to be used externally, or if it's just an internal/alpha partial release before something considered ready for production:

  • pycbf apparently un-regenerated (#59)
  • https://github.com/cbflib/cbflib is not updated (which my understanding was to be the new home)
  • The README still says 0.9.6:

    cbflib/README

    Lines 14 to 18 in 5232590

    CBFlib
    README
    Information for CBFlib 0.9.6 release of 4 December 2018
  • CBFlib.html still says 0.9.5:

    cbflib/doc/CBFlib.html

    Lines 111 to 115 in 5232590

    <b>An API for CBF/imgCIF<br />
    Crystallographic Binary Files with ASCII Support</b><br />
    Version 0.9.5<BR>
    27 April 2014<BR>
    rev 22 February 2015<br />
  • The official(?) web site http://www.bernstein-plus-sons.com/software/CBF/ still says 0.9.6
  • The CMakeLists.txt still says 0.9.6 (and tries to download the 0.9.6 test data):
    # Version 0.9.6 06 November 2018 #
  • The CBFlib internal version still says that it is 0.9.6 (Since this is the most important actual baked-in version number, this is possibly the biggest signal that I shouldn't be using 0.9.7):

    cbflib/include/cbf.h

    Lines 262 to 264 in 5232590

    #define CBF_VERS_MAJOR 0 /* For major interface/format changes */
    #define CBF_VERS_MINOR 9 /* For minor interface/format changes */
    #define CBF_VERS_RELEASE 6 /* For tweaks, bug-fixes, or development */
  • The github release page says "Initial CBFlib-0.9.7" whereas the previous release says "CBFlib-0.9.6 Production Release"
  • The branch https://github.com/yayahjb/cbflib/tree/CBFlib-0.9.7-devel on this repository is still actively under development
  • The github PR cbflib#1 for development is unmerged but up-to-date with the CBFlib-devel branch, indicating that it is actively maintained

It is fine if this is the case - I am just unsure if I should put time into diagnosing the issues I'm having or whether I should just wait for a complete release!

Reversing origin/size/stride cbf2nexus NXdectector_module from fast-slow to slow-fast

I just found what I think is a serious error on my part in the cbf2nexus handling of detector modules: I seem to have presented the origin, size and stride for the modules in fast to slow order (the normal convention in CBF), but for NeXus, I think I should have converted to slow to fast order. I will change the default to be slow to fast, to comply with NeXus conventions, add a command line flag to allow the fast to slow order still to be produced, and add something in both the master file and the output log to make it clear which convention was being used.

Is this agreeable?

cbf2nexus appears to have an O(n^2) feature

Using cbf2nexus to make an NXmx file from a few hundred CBF files I find that the initial file compression tasks are very fast:

Time to convert 'l-cyst_01_00005.cbf': 0.050s
Time to read 'l-cyst_01_00006.cbf': 0.000s
Time to convert 'l-cyst_01_00006.cbf': 0.070s
Time to read 'l-cyst_01_00007.cbf': 0.000s
Time to convert 'l-cyst_01_00007.cbf': 0.060s
Time to read 'l-cyst_01_00008.cbf': 0.000s
Time to convert 'l-cyst_01_00008.cbf': 0.070s
Time to read 'l-cyst_01_00009.cbf': 0.000s
Time to convert 'l-cyst_01_00009.cbf': 0.070s
Time to read 'l-cyst_01_00010.cbf': 0.000s
Time to convert 'l-cyst_01_00010.cbf': 0.050s
Time to read 'l-cyst_01_00011.cbf': 0.010s
Time to convert 'l-cyst_01_00011.cbf': 0.060s
Time to read 'l-cyst_01_00012.cbf': 0.000s
Time to convert 'l-cyst_01_00012.cbf': 0.080s
Time to read 'l-cyst_01_00013.cbf': 0.000s
Time to convert 'l-cyst_01_00013.cbf': 0.060s
Time to read 'l-cyst_01_00014.cbf': 0.000s
Time to convert 'l-cyst_01_00014.cbf': 0.070s
Time to read 'l-cyst_01_00015.cbf': 0.000s
Time to convert 'l-cyst_01_00015.cbf': 0.070s
Time to read 'l-cyst_01_00016.cbf': 0.010s
Time to convert 'l-cyst_01_00016.cbf': 0.060s
Time to read 'l-cyst_01_00017.cbf': 0.000s
Time to convert 'l-cyst_01_00017.cbf': 0.070s
Time to read 'l-cyst_01_00018.cbf': 0.000s

However after a few hundred images these slow down a great deal:

Time to convert 'l-cyst_01_00686.cbf': 1.690s
Time to read 'l-cyst_01_00687.cbf': 0.000s
Time to convert 'l-cyst_01_00687.cbf': 1.690s
Time to read 'l-cyst_01_00688.cbf': 0.010s
Time to convert 'l-cyst_01_00688.cbf': 1.700s
Time to read 'l-cyst_01_00689.cbf': 0.000s
Time to convert 'l-cyst_01_00689.cbf': 1.690s
Time to read 'l-cyst_01_00690.cbf': 0.010s
Time to convert 'l-cyst_01_00690.cbf': 1.740s
Time to read 'l-cyst_01_00691.cbf': 0.000s
Time to convert 'l-cyst_01_00691.cbf': 1.720s
Time to read 'l-cyst_01_00692.cbf': 0.000s
Time to convert 'l-cyst_01_00692.cbf': 1.720s
Time to read 'l-cyst_01_00693.cbf': 0.000s
Time to convert 'l-cyst_01_00693.cbf': 1.720s
Time to read 'l-cyst_01_00694.cbf': 0.000s
Time to convert 'l-cyst_01_00694.cbf': 1.740s
Time to read 'l-cyst_01_00695.cbf': 0.000s
Time to convert 'l-cyst_01_00695.cbf': 1.750s
Time to read 'l-cyst_01_00696.cbf': 0.000s
Time to convert 'l-cyst_01_00696.cbf': 1.740s
Time to read 'l-cyst_01_00697.cbf': 0.000s
Time to convert 'l-cyst_01_00697.cbf': 1.750s
Time to read 'l-cyst_01_00698.cbf': 0.010s
Time to convert 'l-cyst_01_00698.cbf': 1.750s
Time to read 'l-cyst_01_00699.cbf': 0.000s
Time to convert 'l-cyst_01_00699.cbf': 1.760s
Time to read 'l-cyst_01_00700.cbf': 0.000s
Time to convert 'l-cyst_01_00700.cbf': 1.760s
Time to read 'l-cyst_01_00701.cbf': 0.000s

Thought it may be worth checking in the code to see if there is some loop which scales as #frames squared or similar?

UTF8-encoded attributes cause nexus->cbf to fail

A file containing UTF8-encoded strings for NX_class cause library routine cbf_write_nx2cbf to fail. This can be fixed by adding the line:

        CBF_H5CALL(H5Tset_cset(*type,H5T_CSET_UTF8));

to cbf_H5Tcreate_string however this then leads to ASCII-encoded string attributes to cause an error. A proper fix would presumably detect the appropriate string type and set the character set accordingly.

Use of `_diffrn_scan_axis.angle_range` inconsistent

_diffrn_scan_axis.angle_range is currently defined as "The range from the starting position for the specified axis in degrees.". Read in conjunction with the chapter in volume G, this could be interpreted as the range of starting positions for the beginning of a step, or the difference between the starting position and the final position at the end of the final step. I prefer the latter interpretation, which is supported by Examples 2 and 3 for the diffrn_scan category. So, looking at line 7695 for a single-frame scan the range is given as 1.0 degree, which is the total angular range of the scan.

However, Example 1 above the previous example has 201 frames, each covering 0.1 degrees, and the scan range is given as 20.0. This suggests that range refers to the range in starting positions for each step. This cannot be reconciled by supposing that Example 1 involved no scanning of the axis during data collection as _diffrn_scan_frame_axis.angle_increment is 0.1

Can I suggest either correcting Example 1 or Examples 2 and 3, and improving the definition text to clarify which interpretation is correct?

cif2cbf disagrees with img2cif and makecbf

The package's "basic" tests compare the outputs of img2cif, makecbf, and cif2cbf. These tests are presently reporting discrepancies because cif2cbf includes an X-Binary-Size-Third-Dimension: header in the binary sections it emits, but the other two programs do not.

Children of `_diffrn.id` missing

Various categories in imgCIF have names starting with diffrn (e.g. diffrn_scan_axis, diffrn_scan). I believe it is implied that a child data name of _diffrn.id is present in the category in these cases, but such child data names are not always defined by the dictionary. Am I correct in suggesting that these data names should be added to the relevant categories and to the category keys as well? I believe it is correct to say that for most data files these child data names can be left out as they implicitly take the value of _diffrn.id for data blocks containing data from a single wavelength, so there are no implications for existing data files of these data names being added in.

cbflib fails to build with gcc9

[filiperosset@raw ~]$ cd rpmbuild/my/CBFlib/
[filiperosset@raw CBFlib]$ fedpkg local
warning: Macro expanded in comment on line 110: %{_bindir}/convert_image

warning: Macro expanded in comment on line 110: %{_bindir}/convert_image

setting SOURCE_DATE_EPOCH=1562112000
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.A4lFSS

  • umask 022

  • cd /home/filiperosset/rpmbuild/my/CBFlib

  • cd /home/filiperosset/rpmbuild/my/CBFlib

  • rm -rf CBFlib-0.9.6

  • /usr/bin/gzip -dc /home/filiperosset/rpmbuild/my/CBFlib/CBFlib-0.9.6.tar.gz

  • /usr/bin/tar -xof -

  • STATUS=0

  • '[' 0 -ne 0 ']'

  • cd CBFlib-0.9.6

  • /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .

  • iconv -f iso8859-15 -t utf-8 doc/cif_img_1.5.3_8Jul07.dic

  • mv -f doc/cif_img_1.5.3_8Jul07.dic.conv doc/cif_img_1.5.3_8Jul07.dic

  • rm doc/.symlinks

  • rm doc/.undosymlinks

  • chmod 644 examples/adscimg2cbf.c examples/adscimg2cbf_sub.c examples/arvai_test.c examples/cbf2adscimg.c examples/cbf2adscimg_sub.c examples/cbf2nexus.c examples/cbf_standardize_numbers.c examples/cbf_tail.c examples/cbf_testxfelread.c examples/changtestcompression.c examples/cif2c.c examples/cif2cbf.c examples/convert_image.c examples/convert_minicbf.c examples/dps_peaksearch.c examples/img2cif.c examples/makecbf.c examples/minicbf2nexus.c examples/nexus2cbf.c examples/roi_peaksearch.c examples/seqmatchsub.c examples/sequence_match.c examples/test_cbf_airy_disk.c examples/testalloc.c examples/testcbf.c examples/testflat.c examples/testflatpacked.c examples/testhdf5.c examples/testreals.c examples/testtree.c examples/testulp.c examples/tiff2cbf.c

  • RPM_EC=0
    ++ jobs -p

  • exit 0
    Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.cG8HOP

  • umask 022

  • cd /home/filiperosset/rpmbuild/my/CBFlib

  • cd CBFlib-0.9.6

  • cd src

  • gcc -fPIC -DCBF_DONT_USE_LONG_LONG -D_USE_XOPEN_EXTENDED -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -c cbf.c cbf_airy_disk.c cbf_alloc.c cbf_ascii.c cbf_binary.c cbf_byte_offset.c cbf_canonical.c cbf_codes.c cbf_compress.c cbf_context.c cbf_copy.c cbf_file.c cbf_getopt.c cbf_hdf5.c cbf_hdf5_filter.c cbf_lex.c cbf_minicbf_header.c cbf_nibble_offset.c cbf_packed.c cbf_predictor.c cbf_read_binary.c cbf_read_mime.c cbf_simple.c cbf_string.c cbf_stx.c cbf_tree.c cbf_ulp.c cbf_uncompressed.c cbf_write.c cbf_write_binary.c cbf_ws.c cbff.c fgetln.c img.c md5c.c -I../include/
    In file included from /usr/include/string.h:494,
    from cbf.c:266:
    In function 'strncpy',
    inlined from 'cbf_validate' at cbf.c:7605:6:
    /usr/include/bits/string_fortified.h:106:10: warning: '__builtin_strncpy' output may be truncated copying 80 bytes from a string of length 81 [-Wstringop-truncation]
    106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    In function 'strncpy',
    inlined from 'cbf_validate' at cbf.c:7686:25:
    /usr/include/bits/string_fortified.h:106:10: warning: '__builtin_strncpy' output may be truncated copying 80 bytes from a string of length 81 [-Wstringop-truncation]
    106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    In file included from /usr/include/string.h:494,
    from cbf_context.c:262:
    In function 'strncpy',
    inlined from 'cbf_copy_string' at cbf_context.c:937:21:
    /usr/include/bits/string_fortified.h:106:10: warning: '__builtin_strncpy' output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
    106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    cbf_context.c: In function 'cbf_copy_string':
    cbf_context.c:909:13: note: length computed here
    909 | n = strlen(string);
    | ^~~~~~~~~~~~~~
    In file included from /usr/include/string.h:494,
    from cbf_context.c:262:
    In function 'strncpy',
    inlined from 'cbf_copy_string' at cbf_context.c:922:21:
    /usr/include/bits/string_fortified.h:106:10: warning: '__builtin_strncpy' output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
    106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    cbf_context.c: In function 'cbf_copy_string':
    cbf_context.c:909:13: note: length computed here
    909 | n = strlen(string);
    | ^~~~~~~~~~~~~~
    cbf_hdf5.c: In function 'cbf_write_nx2cbf__cbfcat_op':
    cbf_hdf5.c:20819:38: warning: implicit declaration of function 'cbf_read_h5file_group'; did you mean 'cbf_read_h5file'? [-Wimplicit-function-declaration]
    20819 | error |= cbf_read_h5file_group(cbf,nx,nx->flags,(hid_t)object);
    | ^~~~~~~~~~~~~~~~~~~~~
    | cbf_read_h5file
    cbf_hdf5.c:20811:48: warning: unused variable 'indent' [-Wunused-variable]
    20811 | const unsigned int indent = table->indent;
    | ^~~~~~
    cbf_hdf5.c:20784:31: warning: unused variable 'nxpdb_found' [-Wunused-variable]
    20784 | const int nxpdb_found = _cbf_Attrval(object,"NXpdb_class", &NXpdb_class);
    | ^~~~~~~~~~~
    cbf_hdf5.c: In function 'cbf_write_nx2cbf__cbfdb_op':
    cbf_hdf5.c:20933:48: warning: unused variable 'indent' [-Wunused-variable]
    20933 | const unsigned int indent = table->indent;
    | ^~~~~~
    cbf_hdf5.c:20906:31: warning: unused variable 'nxpdb_found' [-Wunused-variable]
    20906 | const int nxpdb_found = _cbf_Attrval(object,"NXpdb_class", &NXpdb_class);
    | ^~~~~~~~~~~
    cbf_hdf5.c: In function 'cbf_write_nx2cbf__entry_op':
    cbf_hdf5.c:21797:48: warning: unused variable 'indent' [-Wunused-variable]
    21797 | const unsigned int indent = table->indent;
    | ^~~~~~
    cbf_hdf5.c:21716:31: warning: unused variable 'nxpdb_found' [-Wunused-variable]
    21716 | const int nxpdb_found = _cbf_Attrval(object,"NXpdb_class", &NXpdb_class);
    | ^~~~~~~~~~~
    cbf_hdf5.c: In function 'cbf_write_nx2cbf':
    cbf_hdf5.c:22516:36: warning: variable 'node' set but not used [-Wunused-but-set-variable]
    22516 | cbf_node * node = NULL;
    | ^~~~
    cbf_hdf5.c:22769:25: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
    22769 | if (pixel_offset_name[i]) free((void*)pixel_offset_name[i]);pixel_offset_name[i]=NULL;
    | ^~
    cbf_hdf5.c:22769:85: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    22769 | if (pixel_offset_name[i]) free((void*)pixel_offset_name[i]);pixel_offset_name[i]=NULL;
    | ^~~~~~~~~~~~~~~~~
    cbf_hdf5.c:22770:25: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
    22770 | if (pixel_offset_long_name[i]) free((void*)pixel_offset_long_name[i]);pixel_offset_long_name[i]=NULL;
    | ^~
    cbf_hdf5.c:22770:95: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    22770 | if (pixel_offset_long_name[i]) free((void*)pixel_offset_long_name[i]);pixel_offset_long_name[i]=NULL;
    | ^~~~~~~~~~~~~~~~~~~~~~
    cbf_hdf5.c:22771:25: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
    22771 | if (pixel_size_name[i]) free((void*)pixel_size_name[i]);pixel_size_name[i]=NULL;
    | ^~
    cbf_hdf5.c:22771:81: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    22771 | if (pixel_size_name[i]) free((void*)pixel_size_name[i]);pixel_size_name[i]=NULL;
    | ^~~~~~~~~~~~~~~
    cbf_hdf5.c:22110:30: warning: variable 'data_row' set but not used [-Wunused-but-set-variable]
    22110 | unsigned int data_row = 0x0;
    | ^~~~~~~~
    cbf_hdf5.c:22836:32: warning: variable 'diffrn_scan_axis' set but not used [-Wunused-but-set-variable]
    22836 | cbf_node * diffrn_scan_axis = NULL;
    | ^~~~~~~~~~~~~~~~
    cbf_hdf5.c: In function 'cbf_write_cbf2nx__array_structure_list_axis':
    cbf_hdf5.c:26493:50: warning: unused variable 'rotation_axis_path' [-Wunused-variable]
    26493 | const char * rotation_axis_path = NULL;
    | ^~~~~~~~~~~~~~~~~~
    cbf_hdf5.c: In function 'cbf_write_cbf2nx__cbf_general_axes':
    cbf_hdf5.c:26704:26: warning: unused variable 'equipment_component' [-Wunused-variable]
    26704 | const char * equipment_component = NULL;
    | ^~~~~~~~~~~~~~~~~~~
    cbf_hdf5.c: In function 'cbf_write_cbf2nx__axis':
    cbf_hdf5.c:27034:28: warning: variable 'axis_rotation_axis' set but not used [-Wunused-but-set-variable]
    27034 | cbf_node * axis_rotation_axis = NULL;
    | ^~~~~~~~~~~~~~~~~~
    cbf_hdf5.c: In function 'cbf_h5ds_store_as_column':
    cbf_hdf5.c:29166:40: warning: unused variable 'close' [-Wunused-variable]
    29166 | char open, close;
    | ^~~~~
    cbf_hdf5.c:29166:34: warning: unused variable 'open' [-Wunused-variable]
    29166 | char open, close;
    | ^~~~
    cbf_hdf5.c:28931:21: warning: variable 'type_order' set but not used [-Wunused-but-set-variable]
    28931 | H5T_order_t type_order;
    | ^~~~~~~~~~
    cbf_hdf5.c:28925:16: warning: unused variable 'byte_order' [-Wunused-variable]
    28925 | char * byte_order;
    | ^~~~~~~~~~
    cbf_hdf5.c:28903:14: warning: unused variable 'buffer' [-Wunused-variable]
    28903 | char buffer[25];
    | ^~~~~~
    cbf_hdf5.c: In function 'cbf_object_visit':
    cbf_hdf5.c:30752:42: warning: variable 'checked_digest' set but not used [-Wunused-but-set-variable]
    30752 | int binary_id, bits, sign, type, checked_digest, realarray = 0;
    | ^~~~~~~~~~~~~~
    cbf_hdf5.c:30752:36: warning: variable 'type' set but not used [-Wunused-but-set-variable]
    30752 | int binary_id, bits, sign, type, checked_digest, realarray = 0;
    | ^~~~
    cbf_hdf5.c:30708:32: warning: variable 'atcbf' set but not used [-Wunused-but-set-variable]
    30708 | int save_incbf, incbf, atcbf; /* within or at NXpdb or CBF_cif, etc. /
    | ^~~~~
    cbf_hdf5.c:30707:36: warning: unused variable 'atnexus' [-Wunused-variable]
    30707 | int save_innexus, innexus, atnexus; /
    within or at NXentry */
    | ^~~~~~~
    cbf_hdf5.c: In function 'cbf_read_h5file_group':
    cbf_hdf5.c:31937:13: warning: unused variable 'errorcode' [-Wunused-variable]
    31937 | int errorcode = 0;
    | ^~~~~~~~~
    cbf_hdf5.c:31933:19: warning: unused variable 'node' [-Wunused-variable]
    31933 | cbf_node *node;
    | ^~~~
    At top level:
    cbf_hdf5.c:20853:16: warning: 'cbf_write_nx2cbf__cbfdb_op' defined but not used [-Wunused-function]
    20853 | static int cbf_write_nx2cbf__cbfdb_op
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~
    cbf_hdf5.c:20641:16: warning: 'cbf_write_nx2cbf__cbfcat_op' defined but not used [-Wunused-function]
    20641 | static int cbf_write_nx2cbf__cbfcat_op
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    cbf_hdf5.c:9133:16: warning: 'cbf_require_nxdetectors' defined but not used [-Wunused-function]
    9133 | static int cbf_require_nxdetectors(const cbf_handle handle,
    | ^~~~~~~~~~~~~~~~~~~~~~~
    cbf_hdf5.c: In function 'cbf_get_nxdata_field_name2':
    cbf_hdf5.c:6345:37: warning: '%06d' directive writing between 6 and 10 bytes into a region of size 7 [-Wformat-overflow=]
    6345 | sprintf(buffer,"%06d",block);
    | ^~~~
    cbf_hdf5.c:6345:36: note: directive argument in the range [1, 2147483647]
    6345 | sprintf(buffer,"%06d",block);
    | ^~~~~~
    In file included from /usr/include/stdio.h:867,
    from /usr/include/H5Epublic.h:20,
    from /usr/include/hdf5.h:26,
    from ../include/cbf.h:253,
    from cbf_hdf5.c:258:
    /usr/include/bits/stdio2.h:36:10: note: '__builtin___sprintf_chk' output between 7 and 11 bytes into a destination of size 7
    36 | return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    37 | __bos (__s), __fmt, __va_arg_pack ());
    | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    cbf_hdf5.c: In function '_cbf_nx2cbfDread_scalar_string':
    cbf_hdf5.c:18976:30: warning: 'llvalue' may be used uninitialized in this function [-Wmaybe-uninitialized]
    18976 | *value = _cbf_strdup(*lvalue);
    | ^~~~~~~~~~~~~~~~~~~~
    In file included from /usr/include/string.h:494,
    from ../include/cbf_hdf5.h:265,
    from cbf_hdf5.c:260:
    In function 'strncat',
    inlined from 'cbf_create_h5handle2' at cbf_hdf5.c:17932:9:
    /usr/include/bits/string_fortified.h:136:10: warning: '__builtin___strncat_chk' output may be truncated copying 10 bytes from a string of length 11 [-Wstringop-truncation]
    136 | return __builtin___strncat_chk (__dest, __src, __len, __bos (__dest));
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    In function 'strncat',
    inlined from 'cbf_create_h5handle2' at cbf_hdf5.c:17934:9:
    /usr/include/bits/string_fortified.h:136:10: warning: '__builtin___strncat_chk' output may be truncated copying 50 bytes from a string of length 53 [-Wstringop-truncation]
    136 | return __builtin___strncat_chk (__dest, __src, __len, __bos (__dest));
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    In function 'strncat',
    inlined from 'cbf_create_h5handle2u' at cbf_hdf5.c:18014:9:
    /usr/include/bits/string_fortified.h:136:10: warning: '__builtin___strncat_chk' output may be truncated copying 10 bytes from a string of length 11 [-Wstringop-truncation]
    136 | return __builtin___strncat_chk (__dest, __src, __len, __bos (__dest));
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    In function 'strncat',
    inlined from 'cbf_create_h5handle2u' at cbf_hdf5.c:18016:9:
    /usr/include/bits/string_fortified.h:136:10: warning: '__builtin___strncat_chk' output may be truncated copying 50 bytes from a string of length 53 [-Wstringop-truncation]
    136 | return __builtin___strncat_chk (__dest, __src, __len, __bos (__dest));
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    In file included from /usr/include/string.h:494,
    from ../include/cbf_minicbf_header.h:264,
    from cbf_minicbf_header.c:259:
    In function 'strncpy',
    inlined from 'cbf_append_string.part.0' at cbf_minicbf_header.c:325:9:
    /usr/include/bits/string_fortified.h:106:10: warning: '__builtin_strncpy' output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
    106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    cbf_minicbf_header.c: In function 'cbf_append_string.part.0':
    cbf_minicbf_header.c:302:18: note: length computed here
    302 | srclen = strlen(src);
    | ^~~~~~~~~~~
    In file included from /usr/include/string.h:494,
    from ../include/cbf_minicbf_header.h:264,
    from cbf_minicbf_header.c:259:
    In function 'strncat',
    inlined from 'cbf_append_string.part.0' at cbf_minicbf_header.c:313:13:
    /usr/include/bits/string_fortified.h:136:10: warning: '__builtin_strncat' output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
    136 | return __builtin___strncat_chk (__dest, __src, __len, __bos (__dest));
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    cbf_minicbf_header.c: In function 'cbf_append_string.part.0':
    cbf_minicbf_header.c:302:18: note: length computed here
    302 | srclen = strlen(src);
    | ^~~~~~~~~~~
    cbf_nibble_offset.c: In function 'cbf_compress_nibble_offset':
    cbf_nibble_offset.c:936:21: warning: 'dmode[0]' may be used uninitialized in this function [-Wmaybe-uninitialized]
    936 | curmode = dmode[inrun];
    | ~~~~~~~~^~~~~~~~~~~~~~
    cbf_simple.c: In function 'cbf_set_reference_beam_center':
    cbf_simple.c:8587:44: warning: variable 'ncenter2' set but not used [-Wunused-but-set-variable]
    8587 | double nindex1, nindex2, ncenter1, ncenter2;
    | ^~~~~~~~
    cbf_simple.c:8587:34: warning: variable 'ncenter1' set but not used [-Wunused-but-set-variable]
    8587 | double nindex1, nindex2, ncenter1, ncenter2;
    | ^~~~~~~~
    cbf_stx.c: In function 'cbf_lex_wrapper':
    cbf_stx.c:370:13: warning: variable 'cbffile' set but not used [-Wunused-but-set-variable]
    370 | cbf_file *cbffile;
    | ^~~~~~~
    At top level:
    cbf_stx.c:827:26: warning: 'yytname' defined but not used [-Wunused-const-variable=]
    827 | static const char *const yytname[] =
    | ^~~~~~~
    img.c: In function 'img_read_mar345header':
    img.c:1334:44: warning: array subscript -1 is outside array bounds of 'char[65]' [-Warray-bounds]
    1334 | for (C = C64+strlen(C64)-1; (C != C64-1 && *C == ' '); C-- ) *C = '\0';
    | ~~~^

    img.c:1230:8: note: while referencing 'C64'
    1230 | char C64[65], D64[65], *C, *D, *E;
    | ^~~

  • gcc -shared -Wl,-soname,libcbf.so.0 -o libcbf.so.0.0.0 cbf.o cbf_airy_disk.o cbf_alloc.o cbf_ascii.o cbf_binary.o cbf_byte_offset.o cbf_canonical.o cbf_codes.o cbf_compress.o cbf_context.o cbf_copy.o cbf_file.o cbf_getopt.o cbf_hdf5.o cbf_hdf5_filter.o cbf_lex.o cbf_minicbf_header.o cbf_nibble_offset.o cbf_packed.o cbf_predictor.o cbf_read_binary.o cbf_read_mime.o cbf_simple.o cbf_string.o cbf_stx.o cbf_tree.o cbf_ulp.o cbf_uncompressed.o cbf_write.o cbf_write_binary.o cbf_ws.o cbff.o fgetln.o img.o md5c.o -lhdf5 -lz -lm

  • rm cbf.o cbf_airy_disk.o cbf_alloc.o cbf_ascii.o cbf_binary.o cbf_byte_offset.o cbf_canonical.o cbf_codes.o cbf_compress.o cbf_context.o cbf_copy.o cbf_file.o cbf_getopt.o cbf_hdf5.o cbf_hdf5_filter.o cbf_lex.o cbf_minicbf_header.o cbf_nibble_offset.o cbf_packed.o cbf_predictor.o cbf_read_binary.o cbf_read_mime.o cbf_simple.o cbf_string.o cbf_stx.o cbf_tree.o cbf_ulp.o cbf_uncompressed.o cbf_write.o cbf_write_binary.o cbf_ws.o cbff.o fgetln.o img.o md5c.o

  • gfortran -fPIC -fno-range-check -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -c fcb_atol_wcnt.f90 fcb_ci_strncmparr.f90 fcb_nblen_array.f90 fcb_read_byte.f90 fcb_read_line.f90 fcb_skip_whitespace.f90 -I../include/
    fcb_atol_wcnt.f90:10:31:

    10 | INTEGER, PARAMETER :: I0=Z'30',& !IACHAR('0')
    | 1
    Warning: Conversion from 'INTEGER(16)' to 'INTEGER(4)' at (1) [-Wconversion]
    fcb_atol_wcnt.f90:11:1:

    11 | I9=Z'39',& !IACHAR('9')
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_atol_wcnt.f90:11:10:

    11 | I9=Z'39',& !IACHAR('9')
    | 1
    Warning: Conversion from 'INTEGER(16)' to 'INTEGER(4)' at (1) [-Wconversion]
    fcb_atol_wcnt.f90:12:1:

    12 | IM=Z'2D',& !IACHAR('-')
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_atol_wcnt.f90:12:10:

    12 | IM=Z'2D',& !IACHAR('-')
    | 1
    Warning: Conversion from 'INTEGER(16)' to 'INTEGER(4)' at (1) [-Wconversion]
    fcb_atol_wcnt.f90:13:1:

    13 | IP=Z'2B',& !IACHAR('+')
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_atol_wcnt.f90:13:10:

    13 | IP=Z'2B',& !IACHAR('+')
    | 1
    Warning: Conversion from 'INTEGER(16)' to 'INTEGER(4)' at (1) [-Wconversion]
    fcb_atol_wcnt.f90:14:1:

    14 | SP=Z'20',& !IACHAR(' ')
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_atol_wcnt.f90:14:10:

    14 | SP=Z'20',& !IACHAR(' ')
    | 1
    Warning: Conversion from 'INTEGER(16)' to 'INTEGER(4)' at (1) [-Wconversion]
    fcb_atol_wcnt.f90:15:1:

    15 | HT=Z'09' !tab position in the ASCII code
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_atol_wcnt.f90:15:10:

    15 | HT=Z'09' !tab position in the ASCII code
    | 1
    Warning: Conversion from 'INTEGER(16)' to 'INTEGER(4)' at (1) [-Wconversion]
    fcb_atol_wcnt.f90:23:1:

    23 | K=ARRAY(I)
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_atol_wcnt.f90:24:1:

    24 | IF (K.GE.I0 .AND. K.LE.I9 ) THEN
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_atol_wcnt.f90:25:1:

    25 | FCB_ATOL_WCNT = FCB_ATOL_WCNT*10+(K-I0)
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_atol_wcnt.f90:26:1:

    26 | BLANK = -1
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_atol_wcnt.f90:27:1:

    27 | IF (VORZEICHEN.EQ.0) VORZEICHEN=1
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_atol_wcnt.f90:28:1:

    28 | ELSE IF (K.EQ.IM .OR. K.EQ.IP ) THEN
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_atol_wcnt.f90:29:1:

    29 | IF (VORZEICHEN.NE.0) EXIT
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_atol_wcnt.f90:30:1:

    30 | IF (K.EQ.IM) VORZEICHEN =-1
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_atol_wcnt.f90:31:1:

    31 | IF (K.EQ.IP) VORZEICHEN = 1
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_atol_wcnt.f90:32:1:

    32 | ELSE IF (K.EQ.SP .OR. K.EQ.HT ) THEN
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_atol_wcnt.f90:33:1:

    33 | IF (BLANK.LT.0) EXIT
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_atol_wcnt.f90:34:1:

    34 | BLANK = BLANK+1
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_atol_wcnt.f90:35:1:

    35 | ELSE
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_atol_wcnt.f90:36:1:

    36 | EXIT
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_atol_wcnt.f90:37:1:

    37 | END IF
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_atol_wcnt.f90:38:1:

    38 | CNT = CNT+1
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_ci_strncmparr.f90:17:1:

    17 | J=0
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_ci_strncmparr.f90:18:1:

    18 | IF (I.LE.LEN(STRING)) THEN
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_ci_strncmparr.f90:19:1:

    19 | J=IACHAR(STRING(I:I))
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_ci_strncmparr.f90:20:1:

    20 | IF ((J.GE.IA).AND.(J.LE.IZ))J=J+UP
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_ci_strncmparr.f90:21:1:

    21 | ENDIF
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_ci_strncmparr.f90:22:1:

    22 | K=0
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_ci_strncmparr.f90:23:1:

    23 | IF (I.LE.N) THEN
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_ci_strncmparr.f90:24:1:

    24 | K=ARRAY(I)
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_ci_strncmparr.f90:25:1:

    25 | IF ((K.GE.IA).AND.(K.LE.IZ))K=K+UP
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_ci_strncmparr.f90:26:1:

    26 | ENDIF
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_ci_strncmparr.f90:27:1:

    27 | FCB_CI_STRNCMPARR = J-K
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_ci_strncmparr.f90:28:1:

    28 | IF (J.NE.K)EXIT
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_nblen_array.f90:12:1:

    12 | IF (FCB_NBLEN_ARRAY.NE.0)EXIT
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_nblen_array.f90:13:1:

    13 | J=ARRAY(I)
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_nblen_array.f90:14:1:

    14 | IF ((J.NE.IACHAR(' ')).AND.(J.NE.Z'09').AND.(J.NE.Z'0A').AND. &
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_nblen_array.f90:15:1:

    15 | (J.NE.Z'0D').AND.(J.NE.0)) FCB_NBLEN_ARRAY = I
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_read_byte.f90:2:1:

    2 | REC_IN_FILE,BYTE_IN_FILE,IBYTE)
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_read_byte.f90:13:12:

    13 | IBYTE=0
    | 1
    Warning: Conversion from 'INTEGER(4)' to 'INTEGER(1)' at (1) [-Wconversion]
    fcb_read_byte.f90:28:26:

    28 | BUFFER(K) = 0
    | 1
    Warning: Conversion from 'INTEGER(4)' to 'INTEGER(1)' at (1) [-Wconversion]
    fcb_read_line.f90:2:1:

    2 | BYTE_IN_FILE,REC_IN_FILE,BUFFER,LINE,N,LINELEN)
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:2:1:

    2 | FCB_BYTES_IN_REC,BYTE_IN_FILE,REC_IN_FILE,BUFFER,&
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:3:1:

    3 | LINE,N,LINELEN,ICUR,FRESH_LINE)
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:14:1:

    14 | FRESH_LINE
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:16:1:

    16 | LAST_CHAR
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:24:1:

    24 | ICUR = LINELEN+1
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:25:1:

    25 | RETURN
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:31:1:

    31 | IF ((IC.LE.LINELEN).AND.(LINE(IC).NE.IACHAR(' ')).AND. &
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:32:1:

    32 | (LINE(IC).NE.Z'09').AND.(LINE(IC).NE.IACHAR('(')) )EXIT
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:34:1:

    34 | IF (IC.GT.LINELEN) THEN
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:35:1:

    35 | FCB_SKIP_WHITESPACE = FCB_READ_LINE (TAPIN,LAST_CHAR, &
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:36:1:

    36 | FCB_BYTES_IN_REC,BYTE_IN_FILE,REC_IN_FILE,BUFFER,&
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:37:1:

    37 | LINE,N,LINELEN)
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:38:1:

    38 | IF (FCB_SKIP_WHITESPACE.NE.0) RETURN
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:39:1:

    39 | IC = 1
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:40:1:

    40 | IF ((LINELEN.EQ.0) &
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:41:1:

    41 | .OR.(FCB_NBLEN_ARRAY(LINE(1:LINELEN),LINELEN).EQ.0) &
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:42:1:

    42 | .OR.(FCB_NBLEN_ARRAY(LINE(1:1),1).NE.0)) THEN
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:41:1:

    41 | .OR.(FCB_NBLEN_ARRAY(LINE(1:LINELEN),LINELEN).EQ.0) &
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:42:1:

    42 | .OR.(FCB_NBLEN_ARRAY(LINE(1:1),1).NE.0)) THEN
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:43:1:

    43 | FRESH_LINE = 1
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:44:1:

    44 | ICUR = LINELEN+1
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:45:1:

    45 | RETURN
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:46:1:

    46 | END IF
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:47:1:

    47 | ELSE
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:48:1:

    48 | IF (LINE(IC) .EQ. IACHAR('(')) THEN
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:49:1:

    49 | IC = IC+1
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:50:1:

    50 | COMMENT_LEVEL = COMMENT_LEVEL+1
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:51:1:

    51 | DO
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:52:1:

    52 | IF (COMMENT_LEVEL.EQ.0)EXIT
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:53:1:

    53 | IF (IC.GT.LINELEN) THEN
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:54:1:

    54 | FCB_SKIP_WHITESPACE=FCB_READ_LINE(TAPIN,LAST_CHAR, &
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:55:1:

    55 | FCB_BYTES_IN_REC,BYTE_IN_FILE,REC_IN_FILE, &
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:56:1:

    56 | BUFFER,LINE,N,LINELEN)
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:57:1:

    57 | IF (FCB_SKIP_WHITESPACE.NE.0) RETURN
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:58:1:

    58 | IC = 1
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:59:1:

    59 | IF ((LINELEN.EQ.0).OR. &
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:60:1:

    60 | (FCB_NBLEN_ARRAY(LINE(1:LINELEN),LINELEN).EQ.0) &
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:61:1:

    61 | .OR. FCB_NBLEN_ARRAY(LINE(1:1),1).NE.0) THEN
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:60:1:

    60 | (FCB_NBLEN_ARRAY(LINE(1:LINELEN),LINELEN).EQ.0) &
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:61:1:

    61 | .OR. FCB_NBLEN_ARRAY(LINE(1:1),1).NE.0) THEN
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:62:1:

    62 | FRESH_LINE = 1
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:63:1:

    63 | ICUR = LINELEN+1
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:64:1:

    64 | RETURN
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:65:1:

    65 | END IF
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:66:1:

    66 | ELSE
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:67:1:

    67 | SELECT CASE (LINE(IC))
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:68:1:

    68 | CASE (Z'5C') ! backslash
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:69:1:

    69 | IC = IC+1 ! force skip of next character
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:70:1:

    70 | CASE (Z'28') ! open paren
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:71:1:

    71 | COMMENT_LEVEL = COMMENT_LEVEL+1;
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:72:1:

    72 | CASE (Z'29') ! close paren
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:73:1:

    73 | COMMENT_LEVEL = COMMENT_LEVEL-1;
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:74:1:

    74 | END SELECT
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:75:1:

    75 | IC = IC+1;
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:76:1:

    76 | END IF
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:77:1:

    77 | END DO
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:78:1:

    78 | ELSE
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:79:1:

    79 | IC = IC+1;
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:80:1:

    80 | END IF
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]
    fcb_skip_whitespace.f90:81:1:

    81 | END IF
    | 1
    Warning: Nonconforming tab character at (1) [-Wtabs]

  • gfortran -shared -Wl,-soname,libfcb.so.0 -o libfcb.so.0.0.0 fcb_atol_wcnt.o fcb_ci_strncmparr.o fcb_nblen_array.o fcb_read_byte.o fcb_read_line.o fcb_skip_whitespace.o

  • cd ../examples

  • utilsublist='adscimg2cbf
    cbf2adscimg
    adscimg2cbf'

  • for i in $utilsublist

  • gcc -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection adscimg2cbf.c adscimg2cbf_sub.c -I../include ../src/libcbf.so.0.0.0 -o adscimg2cbf -lm
    adscimg2cbf.c: In function 'main':
    adscimg2cbf.c:245:27: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
    245 | strstrhit = cbf_cistrnstr(argv[iarg], flags[j], strlen(flags[j]));
    | ^
    adscimg2cbf.c:176:10: warning: unused variable 'thickness' [-Wunused-variable]
    176 | double thickness=0.;
    | ^~~~~~~~~
    adscimg2cbf.c:162:7: warning: variable 'cbf_status' set but not used [-Wunused-but-set-variable]
    162 | int cbf_status;
    | ^~~~~~~~~~
    In file included from /usr/include/string.h:494,
    from adscimg2cbf.c:13:
    In function 'strncpy',
    inlined from 'gethd.constprop' at adscimg2cbf.c:31:3:
    /usr/include/bits/string_fortified.h:106:10: warning: '__builtin_strncpy' output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
    106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    adscimg2cbf.c: In function 'gethd.constprop':
    adscimg2cbf.c:28:7: note: length computed here
    28 | l = strlen (field);
    | ^~~~~~~~~~~~~~
    adscimg2cbf_sub.c: In function 'adscimg2cbf_sub2':
    adscimg2cbf_sub.c:793:20: warning: passing argument 1 of 'convertroi' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
    793 | if (convertroi(roi, smv_size1, smv_size2,
    | ^~~
    adscimg2cbf_sub.c:433:22: note: expected 'char *' but argument is of type 'const char *'
    433 | int convertroi(char *roi, int fastdim, int slowdim,
    | ~~~~~~^~~
    adscimg2cbf_sub.c:1727:27: warning: passing argument 1 of 'cbf_free_text' from incompatible pointer type [-Wincompatible-pointer-types]
    1727 | cbf_free_text(&log,NULL);
    | ^~~~
    | |
    | char **
    In file included from ../include/cbf_minicbf_header.h:262,
    from adscimg2cbf_sub.c:179:
    ../include/cbf_alloc.h:274:33: note: expected 'const char **' but argument is of type 'char **'
    274 | int cbf_free_text (const char **old_block, size_t *old_nelem);
    | ~~~~~~~~~~~~~^~~~~~~~~
    adscimg2cbf_sub.c:1868:30: warning: variable 'valmax' set but not used [-Wunused-but-set-variable]
    1868 | double valnew,valmin,valmax;
    | ^~~~~~
    adscimg2cbf_sub.c:1868:16: warning: variable 'valnew' set but not used [-Wunused-but-set-variable]
    1868 | double valnew,valmin,valmax;
    | ^~~~~~
    adscimg2cbf_sub.c:530:27: warning: unused variable 'kjcm' [-Wunused-variable]
    530 | int ki, kj, kicm, kjcm;
    | ^~~~
    adscimg2cbf_sub.c:530:21: warning: unused variable 'kicm' [-Wunused-variable]
    530 | int ki, kj, kicm, kjcm;
    | ^~~~
    adscimg2cbf_sub.c:522:28: warning: variable 'smv_bin_type' set but not used [-Wunused-but-set-variable]
    522 | int smv_bin, smv_adc, smv_bin_type;
    | ^~~~~~~~~~~~
    adscimg2cbf_sub.c: In function 'adscimg2cbf_sub':
    adscimg2cbf_sub.c:2075:34: warning: passing argument 4 of 'adscimg2cbf_sub2' makes integer from pointer without a cast [-Wint-conversion]
    2075 | NULL,NULL,NULL,NULL,
    | ^~~~
    | |
    | void *
    adscimg2cbf_sub.c:481:29: note: expected 'size_t' {aka 'long unsigned int'} but argument is of type 'void '
    481 | size_t old_int_data_size,
    | ~~~~~~~^~~~~~~~~~~~~~~~~
    In file included from /usr/include/string.h:494,
    from ../include/cbf_minicbf_header.h:264,
    from adscimg2cbf_sub.c:179:
    In function 'strncpy',
    inlined from 'gethd.constprop' at adscimg2cbf_sub.c:263:3:
    /usr/include/bits/string_fortified.h:106:10: warning: '__builtin_strncpy' output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
    106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    adscimg2cbf_sub.c: In function 'gethd.constprop':
    adscimg2cbf_sub.c:260:7: note: length computed here
    260 | l = strlen (field);
    | ^~~~~~~~~~~~~~
    adscimg2cbf_sub.c: In function 'adscimg2cbf_sub2':
    adscimg2cbf_sub.c:588:27: warning: '%s' directive writing up to 1023 bytes into a region of size between 0 and 1023 [-Wformat-overflow=]
    588 | sprintf(temp, "%s=%s;\n", s, s1);
    | ^~ ~~
    In file included from /usr/include/stdio.h:867,
    from /usr/include/H5Epublic.h:20,
    from /usr/include/hdf5.h:26,
    from ../include/cbf.h:253,
    from adscimg2cbf_sub.c:177:
    /usr/include/bits/stdio2.h:36:10: note: '__builtin___sprintf_chk' output between 4 and 2050 bytes into a destination of size 1024
    36 | return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    37 | __bos (__s), __fmt, __va_arg_pack ());
    | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    adscimg2cbf_sub.c:1846:53: warning: 'smooth_data_as_int' may be used uninitialized in this function [-Wmaybe-uninitialized]
    1846 | if (ki > 0 && smooth_data_as_int[(ki-1)
    (1+fasthigh-fastlow+fastpadlow+fastpadhigh)/(bin+1)+kj] > 0) {
    | ^
    /usr/bin/ld: ../src/libcbf.so.0.0.0: undefined reference to pcre_regcomp' /usr/bin/ld: ../src/libcbf.so.0.0.0: undefined reference to pcre_regexec'
    /usr/bin/ld: ../src/libcbf.so.0.0.0: undefined reference to `pcre_regfree'
    collect2: error: ld returned 1 exit status
    error: Bad exit status from /var/tmp/rpm-tmp.cG8HOP (%build)
    Macro expanded in comment on line 110: %{_bindir}/convert_image

    Bad exit status from /var/tmp/rpm-tmp.cG8HOP (%build)

RPM build errors:
Could not execute local: rpmbuild --define '_sourcedir /home/filiperosset/rpmbuild/my/CBFlib' --define '_specdir /home/filiperosset/rpmbuild/my/CBFlib' --define '_builddir /home/filiperosset/rpmbuild/my/CBFlib' --define '_srcrpmdir /home/filiperosset/rpmbuild/my/CBFlib' --define '_rpmdir /home/filiperosset/rpmbuild/my/CBFlib' --define 'dist %{?distprefix}.fc31' --define 'fedora 31' --eval '%undefine rhel' --define 'fc31 1' -ba /home/filiperosset/rpmbuild/my/CBFlib/CBFlib.spec | tee .build-0.9.6-1.fc31.log
[filiperosset@raw CBFlib]$

[filiperosset@raw CBFlib]$ gcc -v
Using built-in specs.
COLLECT_GCC=/usr/bin/gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/9/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,d,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl --enable-offload-targets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 9.1.1 20190605 (Red Hat 9.1.1-2) (GCC)
[filiperosset@raw CBFlib]$

Full CBF with still images causes some surprising problems

Not necessarily an issue report, more a case where we should have a think about the correct behaviour.

imgCIF header:

loop_
_diffrn_scan_axis.scan_id
_diffrn_scan_axis.axis_id
_diffrn_scan_axis.angle_start
_diffrn_scan_axis.angle_range
_diffrn_scan_axis.angle_increment
_diffrn_scan_axis.displacement_start
_diffrn_scan_axis.displacement_range
_diffrn_scan_axis.displacement_increment
SCAN1 GON_OMEGA  30.0000 0.0000 0.0000 0.0 0.0 0.0
SCAN1 GON_CHI    0.0000 0.0000 0.0000 0.0 0.0 0.0
SCAN1 GON_PHI    0.0000 0.0000 0.0000 0.0 0.0 0.0
SCAN1 DET_Z      0.0 0.0 0.0 209.35 0.0 0.0
SCAN1 DET_Y      0.0 0.0 0.0 0.0 0.0 0.0
SCAN1 DET_X      0.0 0.0 0.0 0.0 0.0 0.0

Code:

import pycbf, sys
h = pycbf.cbf_handle_struct()
h.read_widefile(sys.argv[1], pycbf.MSG_DIGEST)
g = h.construct_goniometer()
angles = tuple(g.get_rotation_range())

I would have expected angles to be 30, 30 but I get

dials.python bugreport.py grid_full_cbf_0005.cbf
Traceback (most recent call last):
  File "bugreport.py", line 5, in <module>
    angles = tuple(g.get_rotation_range())
  File "/Users/graeme/svn/cctbx/build/lib/pycbf.py", line 725, in get_rotation_range
    return _pycbf.cbf_positioner_struct_get_rotation_range(self)
Exception: CBFlib Error(s): CBF_NOTFOUND 

presumably because cbf_simple looks for axes which are changing - perhaps we should have Python bindings to a lower level, or handle this differently in cbflib? Example image attached.
grid_full_cbf_0005.zip

Missing some `external_data` items after merge into mainline

The latest version of cif_img.dic in the doc directory is 1.8.5, which (among other things) should contain the external data pointer work that was in jrh_ext_data branch. Comparing the two and correcting for the move to the array_data_external_data category, the following data names are missing and should be added back:

  1. _array_data.external_archive_path -> _array_data_external_data.archive_path

This describes the location of a file within an archive. It is distinct from _array_data_external_data.path which describes the location of a frame within a file, e.g. a location within an HDF5 file, which itself might be part of a larger archive.

  1. _array_data.external_archive_format -> _array_data_external_data.archive_format

This gives the format of the archive (e.g. .tar.gz) within which the file containing the frame is found.

cbflib does not compile on OS X El Capitan with up-to-date XCode

Not due to code itself but due to TIFFLIB:

..... snip ....

duplicate symbol _isspace in:
    CMakeFiles/tiff.dir/libtiff/tif_print.c.o
    CMakeFiles/tiff.dir/libtiff/tif_sprint.c.o
duplicate symbol ___sputc in:
    CMakeFiles/tiff.dir/libtiff/tif_aux.c.o
    CMakeFiles/tiff.dir/libtiff/tif_sprint.c.o
duplicate symbol _isalpha in:
    CMakeFiles/tiff.dir/libtiff/tif_print.c.o
    CMakeFiles/tiff.dir/libtiff/tif_sprint.c.o
duplicate symbol ___sputc in:
    CMakeFiles/tiff.dir/libtiff/tif_aux.c.o
    CMakeFiles/tiff.dir/libtiff/tif_strip.c.o
duplicate symbol ___sputc in:
    CMakeFiles/tiff.dir/libtiff/tif_aux.c.o
    CMakeFiles/tiff.dir/libtiff/tif_swab.c.o
duplicate symbol ___sputc in:
    CMakeFiles/tiff.dir/libtiff/tif_aux.c.o
    CMakeFiles/tiff.dir/libtiff/tif_thunder.c.o
duplicate symbol ___sputc in:
    CMakeFiles/tiff.dir/libtiff/tif_aux.c.o
    CMakeFiles/tiff.dir/libtiff/tif_tile.c.o
duplicate symbol ___sputc in:
    CMakeFiles/tiff.dir/libtiff/tif_aux.c.o
    CMakeFiles/tiff.dir/libtiff/tif_version.c.o
duplicate symbol ___sputc in:
    CMakeFiles/tiff.dir/libtiff/tif_aux.c.o
    CMakeFiles/tiff.dir/libtiff/tif_warning.c.o
duplicate symbol ___sputc in:
    CMakeFiles/tiff.dir/libtiff/tif_aux.c.o
    CMakeFiles/tiff.dir/libtiff/tif_write.c.o
duplicate symbol ___sputc in:
    CMakeFiles/tiff.dir/libtiff/tif_aux.c.o
    CMakeFiles/tiff.dir/libtiff/tif_zip.c.o
duplicate symbol ___sputc in:
    CMakeFiles/tiff.dir/libtiff/tif_aux.c.o
    CMakeFiles/tiff.dir/libtiff/tif_unix.c.o
ld: 118 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[5]: *** [libtiff.dylib] Error 1
make[4]: *** [CMakeFiles/tiff.dir/all] Error 2
make[3]: *** [all] Error 2
make[2]: *** [tiff-4.0.3-rev-29Sep13-prefix/src/tiff-4.0.3-rev-29Sep13-stamp/tiff-4.0.3-rev-29Sep13-build] Error 2
make[1]: *** [CMakeFiles/tiff-4.0.3-rev-29Sep13.dir/all] Error 2
make: *** [all] Error 2

This is a known problem with TIFFLIB I think

Configuration:

CBF_USE_FORTRAN=NO /Applications/CMake.app/Contents/bin/cmake ../cbflib/
make

testing later tifflib now (seems to be up to 4.0.6 on ftp://download.osgeo.org/libtiff - canonical source today?)

Building problem

As a following advise e-mail, I tried to install but still have a problem.

I tried to build the 'cbflib-master' as a command 'make' and 'cmake' both.

as a 'make' command , during the process 'make install'

libtool: install: (cd /root/lib && { ln -s -f libtiff.so.5.2.4 libtiff.so.5 || { rm -f libtiff.so.5 && ln -s libtiff.so.5.2.4 libtiff.so.5; }; })
libtool: install: (cd /root/lib && { ln -s -f libtiff.so.5.2.4 libtiff.so || { rm -f libtiff.so && ln -s libtiff.so.5.2.4 libtiff.so; }; })
libtool: install: /usr/bin/install -c .libs/libtiff.lai /root/lib/libtiff.la
libtool: error: error: cannot install 'libtiffxx.la' to a directory not ending in /usr/local/cbflib-master/lib
make[3]: *** [install-libLTLIBRARIES] Error 1
make[3]: Leaving directory /usr/local/cbflib-master/tiff-4.0.6_rev_3Nov16/libtiff' make[2]: *** [install-am] Error 2 make[2]: Leaving directory /usr/local/cbflib-master/tiff-4.0.6_rev_3Nov16/libtiff'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/usr/local/cbflib-master/tiff-4.0.6_rev_3Nov16'
make: *** [tiff-4.0.6_rev_3Nov16_INSTALL] Error 2

as 'cmake', during the 'make all' command

Scanning dependencies of target test_fcb_read_image
[ 13%] Building Fortran object CMakeFiles/test_fcb_read_image.dir/src/test_fcb_read_image.f90.o
Warning: Nonexistent include directory "/usr/local/cbflib-master/hdf5-1.8.14/include"
Warning: Nonexistent include directory "/usr/local/cbflib-master/tiff-4.0.3-rev-29Sep13/include"
make[2]: *** No rule to make target hdf5-1.8.14/lib/libhdf5.so', needed by bin/test_fcb_read_image'. Stop.
make[1]: *** [CMakeFiles/test_fcb_read_image.dir/all] Error 2
make: *** [all] Error 2

and after changing 'makefile'

Program to use to retrieve a URL

DOWNLOAD = wget -N
#DOWNLOAD ?= curl -O -L

mkdir -p /root/bin
mkdir -p /root/include
mkdir -p /root/include/cbflib
chmod -R 755 /root/include/cbflib
chmod 755 /root/lib/libcbf.a
cp /root/lib/libcbf.a /root/lib/libcbf_old.a
cp ./lib/libcbf.a /root/lib/libcbf.a
chmod 755 /root/lib/libimg.a
cp /root/lib/libimg.a /root/lib/libimg_old.a
cp ./lib/libimg.a /root/lib/libimg.a
chmod 755 /root/lib/libfcb.a
cp /root/lib/libfcb.a /root/lib/libfcb_old.a
cp ./lib/libfcb.a /root/lib/libfcb.a
chmod 755 /root/lib/libcbf.so
cp /root/lib/libcbf.so /root/lib/libcbf_old.so
cp ./lib/libcbf.so /root/lib/libcbf.so
cp: cannot stat ‘./lib/libcbf.so’: No such file or directory
make: *** [install] Error 1

same problem is happen still.

Procedure to regenerate pycbf?

I'm having trouble working out how to regenerate pycbf on the new release. it looks like the linux.sh file is maybe out of date, and it looks to me as though the files on release don't cleanly regenerate or even compile in latex, which is a prerequisite for the nuweb workflow.

Rough list of the most important Issues I've encountered:

  • The pycbf/CBFlib.txt file is (six years!) out of date:
    $ make $(pwd)/pycbf/CBFlib.txt
    make: '/home/cbfbuilder/cbflib/pycbf/CBFlib.txt' is up to date.
    $ touch doc/CBFlib.html
    $ make $(pwd)/pycbf/CBFlib.txt
    links -dump /home/cbfbuilder/cbflib/doc/CBFlib.html > /home/cbfbuilder/cbflib/pycbf/CBFlib.txt
    
  • Latex errors when attempting to regenerate the python bindings. Note that this isn't done in the Makefile on any normal build; not in make all, and not in make tests (which only builds _pycbf.so). This issue can be demonstrated by simply asking for pycbf.py (or pycbf.pdf, which is the actual rule for trying to regenerate the sources):
    $ make $(pwd)/pycbf/pycbf.py
    (cd /home/cbfbuilder/cbflib/pycbf; \
    
    ....
    
    (./pycbf.toc
    ! Missing $ inserted.
    <inserted text>
                    $
    l.16 ...th write logic added}{17}{subsection.10.4}
    
    ?
    
  • Generally the Makefile doesn't seem to build nuweb things properly e.g. the rule for make_pycbf.py is plain incorrect:
    $(PY3CBF)/make_pycbf.py: $(NUWEB_DEP) $(NUWEB_DEP2) $(PY3CBF)/make_pycbf.w
        (cd $(PY3CBF); $(NUWEB) make_pycbf.w)
    This runs nuweb only - the only output from this command is a new make_pycbf.tex. This latex script also seems to not compile (and is not checked in), so I am unable to confirm if the checked in code is an up-to-date regeneration.

Without being able to compile the nuweb sources, I can't regenerate anything that depends on them e.g. everything. So what am I doing wrong, how do I actually generate these?

Finally... I notice that you've kept the whole nuweb lifecycle in this release. I'd urge reconsideration for future releases, since it looks as though it's not being developed in a literate programming way any more, and looks as though it barely was - almost the entirety of most .w files appear to be plain sections with the pasted code, beyond the initial efforts at documentation in pycbf.w. It would make the build process considerably simpler, make it so that commit changes don't have the same change in three different files all over the place (.w, .tex, and the generated output), and eliminate the error of "forgetting to regenerate after changes" (see e.g. much of the noise on the now out-of-date #19, which hadn't been correctly regenerated in a while).

Separating imgCIF development from CBFlib?

I'm wondering if anybody sees an advantage in separating the development of imgCIF, the dictionary, from CBFlib the library? They are, after all, logically different. imgCIF could become a separate repository under yayahjb, or the COMCIFS organisation could be used, or indeed some other organisation. There is an imgCIF repository under COMCIFS at the moment that directs people here and has an older version of the dictionary.

It is possible to split a Git repository so that it retains the history of particular files, so for example it would be possible to create a new imgCIF repository that included all the history of the imgCIF.dic files (and only those files).

Cleanup for 0.9.7 release

In preparation for the upcoming 0.9.7 release we will be reviewing and removing stale branches. If you have any old favorites you wish to have retained, please post a comment to this issue by no later than 1 April 2021. -- Herbert

[CBF Filter Question] Looking for example file

Hello,

At the ESRF we are trying to add CBF compression into HDF5 files to our acquisition chain.

We would appreciate to have an example of CBF file with its equivalent CBF filter compressed HDF5 file. Is that possible?

Thanks!

how to avoid dials branded pycbf

Hello,

I am preparing a Debian package for dials and take care of libcbf in Debian (added python3-pycbf)

Im facing this issue[1] with the version branded by dials.
I would like to find a solution in order to be able to use the upstream cbflib instad of doing this brand.

So, I would like your opinion n the best way to solve this.

thanks for considering

Frederic

[1] cctbx/cctbx_project#475

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.