ADD: new track message, Entity class and Position class

This commit is contained in:
Henry Winkel
2022-12-20 17:20:35 +01:00
parent 469ecfb099
commit 98ebb563a8
2114 changed files with 482360 additions and 24 deletions

View File

@@ -0,0 +1,495 @@
#! /bin/sh
#
# tar.gz and zip distrib files copied to $DEVELSOURCE
# html documentation rsync'ed to $WEBDIST/htdocs/C++/$VERSION/
#
# Windows version ready to build in
# $WINDOWSBUILD/GeographicLib-$VERSION/BUILD-vc10{,-x64}
# after ./build installer is copied to
# $DEVELSOURCE/GeographicLib-$VERSION-win{32,64}.exe
#
# Built version ready to install in /usr/local in
# relc/GeographicLib-$VERSION/BUILD-system
#
# gita - check out from git, create package with cmake
# gitb - check out from git, check various builds in the non-release tree
# gitr - new release branch
# relb - release package, build with autoconf
# relc - release package, build with cmake
# relx - cmake release package inventory
# rely - autoconf release package inventory
# instb - installed files, autoconf
# instc - installed files, cmake
set -e
umask 0022
# The following files contain version information:
# pom.xml
# CMakeLists.txt (PROJECT_VERSION_* LIBVERSION_*)
# NEWS
# configure.ac (AC_INIT, GEOGRAPHICLIB_VERSION_* LT_*)
# develop/test-distribution.sh
# doc/GeographicLib.dox.in (3 places)
# maxima
# maxima/geodesic.mac
START=`date +%s`
DATE=`date +%F`
VERSION=2.1.2
SUFFIX=
DISTVERSION=$VERSION$SUFFIX
BRANCH=main
TEMP=/home/scratch/geographiclib-dist
if test `hostname` = petrel; then
DEVELSOURCE=$HOME/geographiclib
WINDEVELSOURCE=//datalake-pr-smb/vt-open/ckarney/geographiclib
WINDOWSBUILD=/var/tmp
else
DEVELSOURCE=/u/geographiclib
WINDEVELSOURCE=//datalake-pr-smb/vt-open/ckarney/geographiclib
WINDOWSBUILD=/u/temp
fi
WINDOWSBUILDWIN=//datalake-pr-smb/vt-open/ckarney/temp
GITSOURCE=file://$DEVELSOURCE
WEBDIST=/home/ckarney/web/geographiclib-web
mkdir -p $WEBDIST/htdocs/C++
NUMCPUS=4
HAVEINTEL=
test -d $TEMP || mkdir $TEMP
rm -rf $TEMP/*
mkdir $TEMP/gita # Package creation via cmake
mkdir $TEMP/gitb # Non release testing
mkdir $TEMP/gitr # For release branch
(cd $TEMP/gitr; git clone -b $BRANCH $GITSOURCE)
(cd $TEMP/gita; git clone -b $BRANCH file://$TEMP/gitr/geographiclib)
(cd $TEMP/gitb; git clone -b $BRANCH file://$TEMP/gitr/geographiclib)
echo ==============================================================
echo Make a source package in $TEMP/gita/geographiclib/BUILD
cd $TEMP/gita/geographiclib
cmake -S . -B BUILD
(cd BUILD && make dist)
# cp $TEMP/gita/geographiclib/BUILD/distrib/GeographicLib-$DISTVERSION.{zip,tar.gz} $DEVELSOURCE/data-distrib/distrib-C++/
echo ==============================================================
echo Unpack source package in $TEMP/rel bcx
mkdir $TEMP/rel{b,c,x}
tar xfpzC BUILD/distrib/GeographicLib-$DISTVERSION.tar.gz $TEMP/relb # Version for autoconf
tar xfpzC BUILD/distrib/GeographicLib-$DISTVERSION.tar.gz $TEMP/relc # Version for cmake+mvn
tar xfpzC BUILD/distrib/GeographicLib-$DISTVERSION.tar.gz $TEMP/relx # for listing
echo ==============================================================
echo Unpack devel cmake distribution in $TEMP/relx and list in $TEMP/files.x
(
cd $TEMP/relx
find . -type f | sort -u > ../files.x
)
echo ==============================================================
echo Make a release for Windows testing in $WINDOWSBUILD/GeographicLib-$VERSION
rm -rf $WINDOWSBUILD/GeographicLib-$VERSION
unzip -qq -d $WINDOWSBUILD BUILD/distrib/GeographicLib-$DISTVERSION.zip
cat > $WINDOWSBUILD/GeographicLib-$VERSION/mvn-build <<'EOF'
#! /bin/sh -exv
unset GEOGRAPHICLIB_DATA
# for v in 2019 2017 2015 2013 2012 2010; do
for v in 2019 2017 2015; do
for a in 64 32; do
echo ========== maven $v-$a ==========
rm -rf c:/scratch/geog-mvn-$v-$a
mvn -Dcmake.compiler=vc$v -Dcmake.arch=$a \
-Dcmake.project.bin.directory=c:/scratch/geog-mvn-$v-$a install
done
done
EOF
chmod +x $WINDOWSBUILD/GeographicLib-$VERSION/mvn-build
cp pom.xml $WINDOWSBUILD/GeographicLib-$VERSION/
# for ver in 10 11 12 14 15 16; do
for ver in 14 15 16; do
for arch in win32 x64; do
pkg=vc$ver-$arch
gen="Visual Studio $ver"
installer=
# N.B. update CPACK_NSIS_INSTALL_ROOT in CMakeLists.txt and
# update documentation examples if VS version for binary
# installer changes.
test "$ver" = 14 && installer=y
(
echo "#! /bin/sh -exv"
echo echo ========== cmake $pkg ==========
echo b=c:/scratch/geog-$pkg
echo rm -rf \$b \$bc //datalake-pr-smb/vt-open/ckarney/pkg-$pkg/GeographicLib-$VERSION/\*
echo 'unset GEOGRAPHICLIB_DATA'
echo cmake -G \"$gen\" -A $arch -D BUILD_BOTH_LIBS=ON -D CMAKE_INSTALL_PREFIX=//datalake-pr-smb/vt-open/ckarney/pkg-$pkg/GeographicLib-$VERSION -D PACKAGE_DEBUG_LIBS=ON -D CONVERT_WARNINGS_TO_ERRORS=ON -D EXAMPLEDIR= -S . -B \$b
echo cmake --build \$b --config Debug --target ALL_BUILD
echo cmake --build \$b --config Debug --target RUN_TESTS
echo cmake --build \$b --config Debug --target INSTALL
echo cmake --build \$b --config Release --target ALL_BUILD
echo cmake --build \$b --config Release --target exampleprograms
echo cmake --build \$b --config Release --target RUN_TESTS
echo cmake --build \$b --config Release --target INSTALL
echo cmake --build \$b --config Release --target PACKAGE
test "$installer" &&
echo cp \$b/GeographicLib-$DISTVERSION-*.exe $WINDEVELSOURCE/ ||
true
) > $WINDOWSBUILD/GeographicLib-$VERSION/build-$pkg
chmod +x $WINDOWSBUILD/GeographicLib-$VERSION/build-$pkg
done
done
cat > $WINDOWSBUILD/GeographicLib-$VERSION/test-all <<'EOF'
#! /bin/sh
(
for d in build-*; do
./$d
done
./mvn-build
) >& build.log
EOF
chmod +x $WINDOWSBUILD/GeographicLib-$VERSION/test-all
echo ==============================================================
echo Set up release branch in $TEMP/gitr/geographiclib
cd $TEMP/gitr/geographiclib
git checkout release
git config user.email charles@karney.com
git ls-files | sort > ../files.old
(
cd $TEMP/gitb/geographiclib
git ls-files | sort
) > ../files.current
cut -f3- -d/ $TEMP/files.x | sort > ../files.new
(
cd ..
comm -23 files.old files.new | grep -v gitattributes > files.delete || true
comm -23 files.new files.current > files.relonly
comm -12 files.new files.current > files.main
comm -13 files.delete files.new > files.add
comm -13 files.old files.new > files.add
comm -12 files.old files.new > files.common
)
(
S=$TEMP/relx/GeographicLib-$VERSION
C=$TEMP/gitb/geographiclib
test -s ../files.delete && xargs git rm -f < ../files.delete
cat ../files.main ../files.relonly |
sed -e 's%[^/][^/]*$%%' -e 's%/$%%' | sort -u | grep -v '^$' |
while read d; do
test -d $d || mkdir -p $d
done
while read f; do
if cmp $S/$f $f >& /dev/null; then :
else
cp -p $S/$f $f
git add $f
fi
done < ../files.relonly
while read f; do
test -d `dirname $f` || mkdir `dirname $f`
git checkout $BRANCH $f
if cmp $S/$f $f >& /dev/null; then :
else
cp -p $S/$f $f
git add $f
fi
done < ../files.main
git checkout $BRANCH .gitattributes
for i in 1 2 3 4 5; do
find -type d -empty | xargs -r rmdir
done
)
rm -rf GeographicLib-$VERSION
rm -f java/.gitignore
for ((i=0; i<7; ++i)); do
find * -type d -empty | xargs -r rmdir
done
echo ==============================================================
echo CMake build in $TEMP/relc/GeographicLib-$VERSION/BUILD install to $TEMP/instc
cd $TEMP/relc/GeographicLib-$VERSION
cmake -D BUILD_BOTH_LIBS=ON -D BUILD_DOCUMENTATION=ON -D USE_BOOST_FOR_EXAMPLES=ON -D CONVERT_WARNINGS_TO_ERRORS=ON -D CMAKE_INSTALL_PREFIX=$TEMP/instc -S . -B BUILD
(
cd BUILD
make package_source
make -j$NUMCPUS all
make test
make exampleprograms
make install
# rsync -a --delete doc/html/ $WEBDIST/htdocs/C++/$VERSION/
)
echo ==============================================================
echo List installed files fron cmake build in $TEMP/instc to $TEMP/files.c
(
cd $TEMP/instc
find . -type f | sort -u > ../files.c
)
echo ==============================================================
echo Make distribution from release tree with cmake
cd $TEMP/relc/GeographicLib-$VERSION
cmake -S . -B BUILD-dist
(cd BUILD-dist && make package_source)
echo ==============================================================
echo Unpack release cmake distribution in $TEMP/relz and list in $TEMP/files.z
mkdir $TEMP/relz
tar xfpzC BUILD-dist/GeographicLib-$VERSION.tar.gz $TEMP/relz
(
cd $TEMP/relz
find . -type f | sort -u > ../files.z
)
echo ==============================================================
echo CMake build in $TEMP/relc/GeographicLib-$VERSION/BUILD-system install to /usr/local
cmake -D BUILD_BOTH_LIBS=ON -D CONVERT_WARNINGS_TO_ERRORS=ON -S . -B BUILD-system
(cd BUILD-system && make -j$NUMCPUS all&& make test)
if test "$HAVEINTEL"; then
echo ==============================================================
echo CMake build for intel in $TEMP/relc/GeographicLib-$VERSION/BUILD-intel
env FC=ifort CC=icc CXX=icpc cmake -D BUILD_BOTH_LIBS=ON -D CONVERT_WARNINGS_TO_ERRORS=ON -S . -B BUILD-intel
(
cd BUILD-intel
make -j$NUMCPUS all
make test
make exampleprograms
)
fi
echo ==============================================================
echo Check build with configure in $TEMP/relb/GeographicLib-$VERSION/BUILD-config to $TEMP/instb
cd $TEMP/relb/GeographicLib-$VERSION
mkdir BUILD-config
cd BUILD-config
../configure --prefix=$TEMP/instb
make -j$NUMCPUS
make install
cd ..
if test "$HAVEINTEL"; then
echo ==============================================================
echo Check build with configure + intell in $TEMP/relb/GeographicLib-$VERSION/BUILD-config-intel
mkdir BUILD-config-intel
cd BUILD-config-intel
env FC=ifort CC=icc CXX=icpc ../configure
make -j$NUMCPUS
cd ..
fi
echo ==============================================================
echo Make source dist with autoconf $TEMP/relb/GeographicLib-$VERSION/BUILD-dist
mkdir BUILD-dist
cd BUILD-dist
../configure
make dist-gzip
echo ==============================================================
echo Unpack release autoconf distribution in $TEMP/rely and list in $TEMP/files.z
mkdir $TEMP/rely
tar xfpzC geographiclib-$VERSION.tar.gz $TEMP/rely
mv $TEMP/rely/{geographiclib,GeographicLib}-$VERSION
cd $TEMP/rely
find . -type f | sort -u > ../files.y
echo ==============================================================
echo List installed files fron autoconf build in $TEMP/instb to $TEMP/files.b
mv $TEMP/instb/share/doc/{geographiclib,GeographicLib}
cd $TEMP/instb
find . -type f | sort -u > ../files.b
echo ==============================================================
echo CMake build of devel tree in $TEMP/gitb/geographiclib/BUILD
cd $TEMP/gitb/geographiclib
cmake -D BUILD_BOTH_LIBS=ON -D BUILD_DOCUMENTATION=ON -D USE_BOOST_FOR_EXAMPLES=ON -D CONVERT_WARNINGS_TO_ERRORS=ON -S . -B BUILD
(cd BUILD && make -j$NUMCPUS && make -j$NUMCPUS develprograms)
cp $DEVELSOURCE/include/mpreal.h include/
# Skip 4 for now because of various boost bugs
for p in 1 3 5; do
echo ==============================================================
echo CMake build of devel tree at precision $p in $TEMP/gitb/geographiclib/BUILD-$p
mkdir BUILD-$p
cmake -D USE_BOOST_FOR_EXAMPLES=ON -D GEOGRAPHICLIB_PRECISION=$p -S . -B BUILD-$p
(
cd BUILD-$p
make -j$NUMCPUS all
if test $p -ne 1; then
make test
fi
make -j$NUMCPUS develprograms
make -j$NUMCPUS exampleprograms
)
done
echo ==============================================================
echo Compile and run little test program
cd $TEMP
cat > testprogram.cpp <<EOF
#include <iostream>
#include <iomanip>
#include <GeographicLib/Constants.hpp>
#include <GeographicLib/DMS.hpp>
#include <GeographicLib/LambertConformalConic.hpp>
int main() {
using namespace GeographicLib;
double
// These are the constants for Pennsylvania South, EPSG:3364
// https://www.spatialreference.org/ref/epsg/3364/
a = Constants::WGS84_a(), // major radius
f = 1/298.257222101, // inverse flattening (GRS80)
lat1 = DMS::Decode(40,58), // standard parallel 1
lat2 = DMS::Decode(39,56), // standard parallel 2
k1 = 1, // scale on std parallels
lat0 = DMS::Decode(39,20), // latitude of origin
lon0 = -DMS::Decode(77,45), // longitude of origin
fe = 600000, // false easting
fn = 0; // false northing
LambertConformalConic PASouth(a, f, lat1, lat2, k1);
double x0, y0;
PASouth.Forward(lon0, lat0, lon0, x0, y0); // Transform origin point
x0 -= fe; y0 -= fn; // Combine result with false origin
double lat = 39.95, lon = -75.17; // Philadelphia
double x, y;
PASouth.Forward(lon0, lat, lon, x, y);
x -= x0; y -= y0; // Philadelphia in PA South coordinates
std::cout << std::fixed << std::setprecision(3)
<< x << " " << y << "\n";
return 0;
}
EOF
for i in b c; do
cp testprogram.cpp testprogram$i.cpp
g++ -c -g -O3 -I$TEMP/inst$i/include testprogram$i.cpp
g++ -g -o testprogram$i testprogram$i.o -Wl,-rpath=$TEMP/inst$i/lib \
-L$TEMP/inst$i/lib -lGeographicLib
./testprogram$i
done
echo ==============================================================
echo Verify library versions of cmake and autoconf builds are the same and other checks
libversion=`find $TEMP/instc/lib -type f \
-name 'libGeographicLib.so.*' -printf "%f" |
sed 's/libGeographicLib\.so\.//'`
test -f $TEMP/instb/lib/libGeographicLib.so.$libversion ||
echo autoconf/cmake library so mismatch
CONFIG_FILE=$TEMP/gitr/geographiclib/configure
CONFIG_MAJOR=`grep ^GEOGRAPHICLIB_VERSION_MAJOR= $CONFIG_FILE | cut -f2 -d=`
CONFIG_MINOR=`grep ^GEOGRAPHICLIB_VERSION_MINOR= $CONFIG_FILE | cut -f2 -d=`
CONFIG_PATCH=`grep ^GEOGRAPHICLIB_VERSION_PATCH= $CONFIG_FILE | cut -f2 -d=`
CONFIG_VERSIONA=`grep ^PACKAGE_VERSION= $CONFIG_FILE | cut -f2 -d= |
cut -f2 -d\'`
CONFIG_VERSION=$CONFIG_MAJOR.$CONFIG_MINOR
test "$CONFIG_PATCH" = 0 || CONFIG_VERSION=$CONFIG_VERSION.$CONFIG_PATCH
test "$CONFIG_VERSION" = "$VERSION" || echo autoconf version number mismatch
test "$CONFIG_VERSIONA" = "$VERSION" || echo autoconf version string mismatch
cd $TEMP/relx/GeographicLib-$VERSION
(
echo Files with trailing spaces:
find . -type f | egrep -v 'config\.guess|Makefile\.in|\.m4|\.png|\.gif' |
while read f; do
tr -d '\r' < $f | grep ' $' > /dev/null && echo $f || true
done
echo
echo Files with tabs:
find . -type f |
egrep -v '[Mm]akefile|\.html|\.m4|\.png|\.gif' |
egrep -v '\.sh|depcomp|install-sh|/config\.|configure$|compile|missing' |
xargs grep -l ' ' || true
echo
echo Files with multiple newlines:
find . -type f |
egrep -v \
'/Makefile\.in|\.1\.html|\.png|\.gif|/ltmain|/config|\.m4' |
while read f; do
tr 'X\n' 'xX' < $f | grep XXX > /dev/null && echo $f || true
done
echo
echo Files with no newline at end:
find . -type f |
egrep -v '\.png|\.gif' |
while read f; do
n=`tail -1 $f | wc -l`; test $n -eq 0 && echo $f || true
done
echo
echo Files with extra newlines at end:
find . -type f |
egrep -v '/configure|/ltmain.sh|\.png|\.gif|\.1\.html' |
while read f; do
n=`tail -1 $f | wc -w`; test $n -eq 0 && echo $f || true
done
echo
) > $TEMP/badfiles.txt
cat $TEMP/badfiles.txt
cat > $TEMP/tasks.txt <<EOF
# install built version
sudo make -C $TEMP/relc/GeographicLib-$VERSION/BUILD-system install
# commit and tag release branch
cd $TEMP/gitr/geographiclib
# Check .gitignore files!
git add -A
git commit -m "Version $VERSION ($DATE)"
git tag -m "Version $VERSION ($DATE)" r$VERSION
git push
git push --tags
# tag main branch
cd $DEVELSOURCE
git tag -m "Version $VERSION ($DATE)" v$VERSION
git push --all
git push --tags
# Also to do
# post release notices
# set default download files
# make -f makefile-admin distrib-{cgi,html}
# update home brew
# dir = /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
# branch = geographiclib/$VERSION
# file = Formula/geographiclib.rb
# brew install --build-from-source geographiclib
# commit message = geographiclib $VERSION
# update vcpkg git@github.com:microsoft/vcpkg
# dir = ports/geographiclib
# ./vcpkg install 'geographiclib[tools]'
# binaries in installed/x64-linux/tools/geographiclib
# libs in installed/x64-linux/{include,lib,debug/lib}
# ./vcpkg x-add-version geographiclib
# commit message = [geographiclib] Update to version $VERSION
# update conda-forge
# url = git@github.com:conda-forge/geographiclib-cpp-feedstock
# conda build recipe
# upload matlab packages
# update binaries for cgi applications
# trigger build on build-open
EOF
echo cat $TEMP/tasks.txt
cat $TEMP/tasks.txt
END=`date +%s`
echo Elapsed time $((END-START)) secs