[teqc] helpful tip of week 1923

Lou Estey lou at unavco.org
Wed Nov 16 08:04:01 MST 2016

This week's tip: the "build" line

Given that last week the next official version of teqc (2016Nov7) was released,
this might be a good time to bring up the "build" information, which I mentioned
in last week's tip.

But first, the version.  The version ID for teqc is just the current date of the
C source code.  Of course, the C source code has to be compiled into a binary in
order to run and we do that compiling here and release the binary executables for
platforms that have a wide enough user base and that we can reasonably support here

Each compilation requires an operating system (OS) and a compiler with pertinent
libraries on that OS running on some specific hardware creating an executable meant
to run on that OS version (and perhaps others) and similar hardware.  The build line
attempts to codify this information for each separate compilation.

The build information is a printable ASCII string of characters and shows up
when you run, say, `teqc +id` or `teqc +ver`.  It also is written out to each and
every RINEX header as a RINEX comment line if teqc is writing out a RINEX file for
any type (i.e. GNSS observations, navigation messages, or meteorological data).
Because the build information is also written out in a RINEX comment line, the
length of the ASCII string is limited to a maximum of 60 characters.

In addition to the version, the build is the piece of information that you need
to send to me so that I know exactly which binary you are running.  The build line
also contains information that some of you might find interesting and sometimes useful.

Each build line is split into five parts or fields, separated by a '|' symbol.
Let's take a look at one of these build lines, say, the build line for the Mingw-64
build of teqc for 64-bit Windows:


The first field is a shorthand description of the OS, in this case 'Linux2.6.32-279.el6.x86_64'.
Yes, the 64-bit executable for Windows is currently compiled on a Linux system, using
what's called a cross-compiler (i.e. a compiler and libraries on one system that is
meant to make an executable to be run on a completely different system).

The second field is a shorthand description of the hardware on which the OS is
running during compilation, in this case 'x86_64' meaning Intel x86 64-bit.

The third field is a shorthand for the compiler that was used to make the build,
in this case just 'gcc'.

The fourth field is a shorthand for the OS on which this build is intended to run,
in this case 'Win64-MinGW64', or Windows 64-bit as a MinGW 64-bit executable.

The fifth field is a shorthand for the hardware on which the OS is expected to
be running when this teqc executable is attempted to be run.  In this case, the
shorthand is '=', which means "equal to the second field".

That's the way it's supposed to be anyway.  It's gotten complicated with OSs like
Apple's OS X (now 'macOS' at 10.12 'Sierra').  For some time, Apple's default gcc
has really linked to Clang (https://en.wikipedia.org/wiki/Clang), but I still list
is as 'gcc':

OSX ker:10.10.3|Core i5|gcc 4.3 -m64|OSX ker:10.10+|=+

Then again, for the gcc 4.2 build, I think the compiler really is gcc (via Homebrew):

OSX ker:10.10.3|Core i5|gcc 4.2 -m64|OSX ker:10.10+|=+

... and we think this build should also work on older Mac hardware that used Intel.
Here at UNAVCO I compile teqc on a Mac maintained our D&T group, and I just noticed
that the D&T group had upgraded the OS to OS X 10.11.6 'El Capitan' (not 10.10.3 'Yosemite'),
so that field in these two build lines is not correct.  But you get the idea.

This scheme for representing each build was developed for the code that became teqc
before "teqc" itself actually existed (back in mid-1996) and it has been moving along
with the code ever since, so you will find it for even the very first version of teqc.

Happy teqc-ing!


Louis H. Estey, Ph.D.              office:  [+001] 303-381-7456
UNAVCO, 6350 Nautilus Drive           FAX:  [+001] 303-381-7451
Boulder, CO  80301-5554            e-mail:  lou  unavco.org
      WWW:  http://www.unavco.org   http://jules.unavco.org

"If the universe is the answer, what is the question?"
                                                -- Leon Lederman

Past helpful tips:

week 1894: using teqc config files - http://postal.unavco.org/pipermail/teqc/2016/002067.html
week 1895: qc of high-rate data - http://postal.unavco.org/pipermail/teqc/2016/002071.html
week 1896: UNIX/Linux shells for Windows - http://postal.unavco.org/pipermail/teqc/2016/002072.html
week 1897: '-' vs. '+' teqc options - http://postal.unavco.org/pipermail/teqc/2016/002076.html
week 1898: auto-identification of formats - http://postal.unavco.org/pipermail/teqc/2016/002092.html
week 1899: auto-identification vs. format flags - http://postal.unavco.org/pipermail/teqc/2016/002096.html
week 1900: square brackets in options - http://postal.unavco.org/pipermail/teqc/2016/002105.html
week 1901: using option '+mds' - http://postal.unavco.org/pipermail/teqc/2016/002108.html
week 1902: qc results w/ problematic nav messages - http://postal.unavco.org/pipermail/teqc/2016/002113.html
week 1903: '-no_orb[it]' and '-no_pos[ition]' options - http://postal.unavco.org/pipermail/teqc/2016/002115.html
week 1904: '-week' option - http://postal.unavco.org/pipermail/teqc/2016/002117.html
week 1905: using '+bcf' for XYZ/geodetic conversion - http://postal.unavco.org/pipermail/teqc/2016/002126.html
week 1906: the '+v[erify]' option - http://postal.unavco.org/pipermail/teqc/2016/002128.html
week 1907: '+C2', '+L5', "+L6', '+L7', '+L8', and '+all' options - http://postal.unavco.org/pipermail/teqc/2016/002130.html
week 1908: no doppler shortcut; RINEX L2 - http://postal.unavco.org/pipermail/teqc/2016/002131.html
week 1909: using paths w/ file names - http://postal.unavco.org/pipermail/teqc/2016/002132.html
week 1910: the (un)importance of file names - http://postal.unavco.org/pipermail/teqc/2016/002133.html
week 1911: notices, warnings, and errors - http://postal.unavco.org/pipermail/teqc/2016/002134.html
week 1912: the '-max_rx_SVs' option - http://postal.unavco.org/pipermail/teqc/2016/002137.html
week 1913: the end of '++igs' and '+igs' - http://postal.unavco.org/pipermail/teqc/2016/002140.html
week 1914: splicing together RINEX files - http://postal.unavco.org/pipermail/teqc/2016/002144.html
week 1915: using '-O.int' and '-O.dec' - http://postal.unavco.org/pipermail/teqc/2016/002145.html
week 1916: '+doy' option - http://postal.unavco.org/pipermail/teqc/2016/002146.html
week 1917: '-tbin' and '-ast' options - http://postal.unavco.org/pipermail/teqc/2016/002152.html
week 1918: mp12 RMS before/after Oct 2013 - http://postal.unavco.org/pipermail/teqc/2016/002158.html
week 1919: the global windowing options - http://postal.unavco.org/pipermail/teqc/2016/002159.html
week 1920: '-M.dec' and '-N.dec' options - http://postal.unavco.org/pipermail/teqc/2016/002163.html
week 1921: combining time filtering options - http://postal.unavco.org/pipermail/teqc/2016/002176.html
week 1922: helping me (or someone else on the list) help you - http://postal.unavco.org/pipermail/teqc/2016/002187.html

More information about the teqc mailing list