diff --git a/.gitignore b/.gitignore index 477f7c6..1311ac3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,32 +1 @@ -vfrnav-0.3.tar.gz -vfrnav-0.4.tar.gz -/vfrnav-0.5.tar.gz -/vfrnav-0.6.tar.gz -/vfrnav-0.7.tar.gz -/vfrnav-0.8.tar.gz -/vfrnav-0.9.tar.gz -/vfrnav-20120801.tar.gz -/vfrnav-20120810.tar.gz -/vfrnav-20120815.tar.gz -/vfrnav-20120831.tar.gz -/vfrnav-20121111.tar.gz -/vfrnav-20121212.tar.gz -/vfrnav-20130110.tar.gz -/vfrnav-20130113.tar.gz -/vfrnav-20130123.tar.gz -/vfrnav-20130303.tar.gz -/vfrnav-20130429.tar.gz -/vfrnav-20130510.tar.gz -/vfrnav-20130627.tar.gz -/vfrnav-20130723.tar.gz -/vfrnav-20130801.tar.gz -/vfrnav-20130829.tar.gz -/vfrnav-20130920.tar.gz -/vfrnav-20131127.tar.gz -/vfrnav-20140321.tar.gz -/vfrnav-20140510.tar.gz -/vfrnav-20141211.tar.gz -/vfrnav-20150429.tar.gz -/vfrnav-20160212.tar.gz -/vfrnav-20160429.tar.gz -/vfrnav-20180129.tar.gz +/vfrnav-*.tar.* diff --git a/sources b/sources index a37dd05..2b46145 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (vfrnav-20180129.tar.gz) = ee960f71f86fb44008a8b79134ef5a435896c0a3c07f0ada32156fde23442485d67a5746cf0d197c2ac64e2f2f9d930e534acfb1bef7ce1a39e1b986501d4f7d +SHA512 (vfrnav-20230429.tar.bz2) = 2014383e46ad03b4afd9c8153888ad36e43ec2827219e4e037f052bb0fabbefcf0de3d340e5298f42058341c5f8480239e9b0a33cf606a2349c13292c3b97a4d diff --git a/vfrnav-compile.patch b/vfrnav-compile.patch new file mode 100644 index 0000000..114fcfa --- /dev/null +++ b/vfrnav-compile.patch @@ -0,0 +1,127 @@ +--- vfrnav-20230429/src/metartaf.cc.orig 2025-01-07 13:51:24.837306522 +0100 ++++ vfrnav-20230429/src/metartaf.cc 2025-01-07 13:53:02.445841777 +0100 +@@ -497,7 +497,7 @@ + "from metar where " + get_querycoord(bbox, tran) + ") T1 where T1.observation_time in " + "(select T2.observation_time from metar T2 where T2.station_id = T1.station_id " + "order by T2.observation_time desc limit " + +- tran.quote(metarhistory) + ")", "Metar Taf Set METAR")); ++ tran.quote(metarhistory) + ")", std::string_view{"Metar Taf Set METAR"})); + for (pqxx::result::const_iterator ri(r.begin()), re(r.end()); ri != re; ++ri) { + std::pair ins(result.insert(Station(ri[0].as(), + Point(ri[2].as(), ri[1].as()), +@@ -513,7 +513,7 @@ + "from taf where " + get_querycoord(bbox, tran) + ") T1 where T1.issue_time in " + "(select T2.issue_time from taf T2 where T2.station_id = T1.station_id " + "order by T2.issue_time desc limit " + +- tran.quote(tafhistory) + ")", "Metar Taf Set TAF")); ++ tran.quote(tafhistory) + ")", std::string_view{"Metar Taf Set TAF"})); + for (pqxx::result::const_iterator ri(r.begin()), re(r.end()); ri != re; ++ri) { + std::pair ins(result.insert(Station(ri[0].as(), + Point(ri[2].as(), ri[1].as()), +@@ -556,7 +556,7 @@ + q += "valid_from <= " + tran.quote(tmax) + " and valid_to >= " + tran.quote(tmin); + if (!false) + std::cerr << "pg: sigmet query " << q << std::endl; +- pqxx::result r(tran.exec(q, "Briefing Pack SIGMET")); ++ pqxx::result r(tran.exec(q, std::string_view{"Briefing Pack SIGMET"})); + for (pqxx::result::const_iterator ri(r.begin()), re(r.end()); ri != re; ++ri) { + if (!false) + std::cerr << "pg: sigmet for " << ri[0].as() << " seq " << ri[8].as() +--- vfrnav-20230429/carto/osm.cc.orig 2025-01-07 13:55:20.693183894 +0100 ++++ vfrnav-20230429/carto/osm.cc 2025-01-07 13:56:31.305848028 +0100 +@@ -1783,7 +1783,7 @@ + "ST_AsBinary(ST_Transform(way,4326)) from planet_osm_point where way && " + get_queryrect(tran)); + if (false) + std::cerr << "OSM query: " << qstr << std::endl; +- pqxx::result r(tran.exec(qstr, "Briefing Pack OSM")); ++ pqxx::result r(tran.exec(qstr, std::string_view{"Briefing Pack OSM"})); + for (pqxx::result::const_iterator ri(r.begin()), re(r.end()); ri != re; ++ri) { + Tags tags; + tags.add_pg(to_str(ri[69])); +@@ -1894,7 +1894,7 @@ + "ST_AsBinary(ST_Transform(way,4326)) from planet_osm_line where way && " + get_queryrect(tran)); + if (false) + std::cerr << "OSM query: " << qstr << std::endl; +- pqxx::result r(tran.exec(qstr, "Briefing Pack OSM")); ++ pqxx::result r(tran.exec(qstr, std::string_view{"Briefing Pack OSM"})); + for (pqxx::result::const_iterator ri(r.begin()), re(r.end()); ri != re; ++ri) { + Tags tags; + tags.add_pg(to_str(ri[68])); +@@ -2005,7 +2005,7 @@ + "ST_AsBinary(ST_Transform(way,4326)) from planet_osm_roads where way && " + get_queryrect(tran)); + if (false) + std::cerr << "OSM query: " << qstr << std::endl; +- pqxx::result r(tran.exec(qstr, "Briefing Pack OSM")); ++ pqxx::result r(tran.exec(qstr, std::string_view{"Briefing Pack OSM"})); + for (pqxx::result::const_iterator ri(r.begin()), re(r.end()); ri != re; ++ri) { + Tags tags; + tags.add_pg(to_str(ri[68])); +@@ -2116,7 +2116,7 @@ + "ST_AsBinary(ST_Transform(way,4326)) from planet_osm_polygon where way && " + get_queryrect(tran)); + if (false) + std::cerr << "OSM query: " << qstr << std::endl; +- pqxx::result r(tran.exec(qstr, "Briefing Pack OSM")); ++ pqxx::result r(tran.exec(qstr, std::string_view{"Briefing Pack OSM"})); + for (pqxx::result::const_iterator ri(r.begin()), re(r.end()); ri != re; ++ri) { + Tags tags; + tags.add_pg(to_str(ri[68])); +--- vfrnav-20230429/cfmu/adr.cc.orig 2026-01-30 12:46:50.497664549 +0100 ++++ vfrnav-20230429/cfmu/adr.cc 2026-01-30 12:47:31.905992663 +0100 +@@ -77,13 +77,13 @@ + return u; + } catch (const std::runtime_error& e) { + } +- static const boost::uuids::uuid nsuuid = { ++ static const boost::uuids::uuid nsuuid = {{ + 0x5b, 0x20, 0xbd, 0x56, + 0x73, 0x8d, + 0x47, 0xcb, + 0xb1, 0xea, + 0x30, 0x0f, 0x31, 0x7e, 0x8b, 0x32 +- }; ++ }}; + return from_str(nsuuid, x.substr(pfx)); + } + +@@ -95,13 +95,13 @@ + + UUID UUID::from_countryborder(const std::string& x) + { +- static const boost::uuids::uuid nsuuid = { ++ static const boost::uuids::uuid nsuuid = {{ + 0x00, 0xff, 0xf6, 0xf3, + 0xff, 0xf5, + 0x43, 0x74, + 0x96, 0x3b, + 0x0b, 0x8f, 0x11, 0x34, 0x22, 0xb9 +- }; ++ }}; + return from_str(nsuuid, x); + } + +--- vfrnav-20230429/cfmu/adrgraph.cc.orig 2026-01-30 12:46:57.341079989 +0100 ++++ vfrnav-20230429/cfmu/adrgraph.cc 2026-01-30 12:47:44.106975328 +0100 +@@ -154,10 +154,10 @@ + + const float GraphEdge::maxmetric = std::numeric_limits::max(); + const float GraphEdge::invalidmetric = std::numeric_limits::quiet_NaN(); +-const boost::uuids::uuid GraphEdge::matchalluuid = { ++const boost::uuids::uuid GraphEdge::matchalluuid = {{ + 0xb7, 0xc9, 0xbe, 0x9a, 0x2e, 0xcb, 0x49, 0x03, + 0xb2, 0xd5, 0x58, 0xf9, 0xac, 0xbe, 0x36, 0x75 +-}; ++}}; + const UUID GraphEdge::matchall(matchalluuid); + + GraphEdge::GraphEdge(timetype_t tm, const Object::const_ptr_t& obj, unsigned int levels) +--- vfrnav-20230429/doc/flightdeck.tex.orig 2026-01-30 13:22:27.770429063 +0100 ++++ vfrnav-20230429/doc/flightdeck.tex 2026-01-30 13:22:41.561489169 +0100 +@@ -26,7 +26,7 @@ + \else + \documentclass[a4paper,10pt,dvips]{article} + \fi +-\usepackage[german,english]{babel} ++\usepackage[english]{babel} + \selectlanguage{english} + \usepackage{graphicx} + \usepackage[isolatin]{inputenc} diff --git a/vfrnav-octave-colors.patch b/vfrnav-octave-colors.patch new file mode 100644 index 0000000..296b41b --- /dev/null +++ b/vfrnav-octave-colors.patch @@ -0,0 +1,202 @@ +From 8b4a8056b9e2e7abcecef80dd29f58d5ff4d5f87 Mon Sep 17 00:00:00 2001 +From: Thomas Sailer +Date: Tue, 7 Jan 2025 12:21:15 +0100 +Subject: remove octave numeric colors as they are no longer supported in + octave 9 + + +diff --git a/doc/hamproptbl.m b/doc/hamproptbl.m +index 9fbb5e52..4a930668 100644 +--- a/doc/hamproptbl.m ++++ b/doc/hamproptbl.m +@@ -49,14 +49,14 @@ endfor; + fprintf(ftbl, "\n};\n"); + + f=figure("visible","on"); +-plot(afval,afcpc(1,:),"1+;CP 1;",... +- afval,afcpc(2,:),"2+;CP 2;",... +- afval,afctc(1,:),"3+;CT 1;",... +- afval,afctc(2,:),"4+;CT 2;",... +- min(afval):max(afval),polyval(afcpp(1,:),min(afval):max(afval)),"1-;CP J=0;",... +- min(afval):max(afval),polyval(afcpp(2,:),min(afval):max(afval)),"2-;CP J>=0.5;",... +- min(afval):max(afval),polyval(afctp(1,:),min(afval):max(afval)),"3-;CT J=0;",... +- min(afval):max(afval),polyval(afctp(2,:),min(afval):max(afval)),"4-;CT J>=0.5;"); ++plot(afval,afcpc(1,:),"r+;CP 1;",... ++ afval,afcpc(2,:),"g+;CP 2;",... ++ afval,afctc(1,:),"b+;CT 1;",... ++ afval,afctc(2,:),"m+;CT 2;",... ++ min(afval):max(afval),polyval(afcpp(1,:),min(afval):max(afval)),"r-;CP J=0;",... ++ min(afval):max(afval),polyval(afcpp(2,:),min(afval):max(afval)),"g-;CP J>=0.5;",... ++ min(afval):max(afval),polyval(afctp(1,:),min(afval):max(afval)),"b-;CT J=0;",... ++ min(afval):max(afval),polyval(afctp(2,:),min(afval):max(afval)),"m-;CT J>=0.5;"); + grid on; + xlabel("AF -- Activity Factor"); + ylabel("CP/CT Factor"); +@@ -64,10 +64,10 @@ title("CP/CT versus AF"); + print(f, "propafcpct.eps","-depsc2","-portrait","-color"); + + f=figure("visible","on"); +-plot(afval,afcpc(1,:)-polyval(afcpp(1,:),afval),"1+-;CP J=0 error;",... +- afval,afcpc(2,:)-polyval(afcpp(2,:),afval),"2+-;CP J>=0.5 error;",... +- afval,afctc(1,:)-polyval(afctp(1,:),afval),"3+-;CT J=0 error;",... +- afval,afctc(2,:)-polyval(afctp(2,:),afval),"4+-;CT J>=0.5 error;"); ++plot(afval,afcpc(1,:)-polyval(afcpp(1,:),afval),"r+-;CP J=0 error;",... ++ afval,afcpc(2,:)-polyval(afcpp(2,:),afval),"g+-;CP J>=0.5 error;",... ++ afval,afctc(1,:)-polyval(afctp(1,:),afval),"b+-;CT J=0 error;",... ++ afval,afctc(2,:)-polyval(afctp(2,:),afval),"m+-;CT J>=0.5 error;"); + grid on; + xlabel("AF -- Activity Factor"); + ylabel("CP/CT Factor Approximation Error"); +@@ -150,14 +150,14 @@ endfor; + fprintf(ftbl, "\n};\n\n"); + + f=figure("visible","on"); +-plot(zjstal,cpstal(1,:),"1+;CPstall 2 Blade;",... +- zjstal,cpstal(2,:),"2+;CPstall 4 Blade;",... +- zjstal,cpstal(3,:),"3+;CPstall 6 Blade;",... +- zjstal,cpstal(4,:),"4+;CPstall 8 Blade;",... +- min(zjstal):0.1:max(zjstal),polyval(cpstalp(1,:),min(zjstal):0.1:max(zjstal)),"1-;CPstall 2 Blade;",... +- min(zjstal):0.1:max(zjstal),polyval(cpstalp(2,:),min(zjstal):0.1:max(zjstal)),"2-;CPstall 4 Blade;",... +- min(zjstal):0.1:max(zjstal),polyval(cpstalp(3,:),min(zjstal):0.1:max(zjstal)),"3-;CPstall 6 Blade;",... +- min(zjstal):0.1:max(zjstal),polyval(cpstalp(4,:),min(zjstal):0.1:max(zjstal)),"4-;CPstall 8 Blade;"); ++plot(zjstal,cpstal(1,:),"r+;CPstall 2 Blade;",... ++ zjstal,cpstal(2,:),"g+;CPstall 4 Blade;",... ++ zjstal,cpstal(3,:),"b+;CPstall 6 Blade;",... ++ zjstal,cpstal(4,:),"m+;CPstall 8 Blade;",... ++ min(zjstal):0.1:max(zjstal),polyval(cpstalp(1,:),min(zjstal):0.1:max(zjstal)),"r-;CPstall 2 Blade;",... ++ min(zjstal):0.1:max(zjstal),polyval(cpstalp(2,:),min(zjstal):0.1:max(zjstal)),"g-;CPstall 4 Blade;",... ++ min(zjstal):0.1:max(zjstal),polyval(cpstalp(3,:),min(zjstal):0.1:max(zjstal)),"b-;CPstall 6 Blade;",... ++ min(zjstal):0.1:max(zjstal),polyval(cpstalp(4,:),min(zjstal):0.1:max(zjstal)),"m-;CPstall 8 Blade;"); + grid on; + xlabel("ZJ"); + ylabel("CP Stall"); +@@ -165,10 +165,10 @@ title("CP Stall versus ZJ"); + print(f,"propcpstal.eps","-depsc2","-portrait","-color"); + + f=figure("visible","on"); +-plot(zjstal,cpstal(1,:)-polyval(cpstalp(1,:),zjstal),"1+-;CPstall 2 Blade error;",... +- zjstal,cpstal(2,:)-polyval(cpstalp(2,:),zjstal),"2+-;CPstall 4 Blade error;",... +- zjstal,cpstal(3,:)-polyval(cpstalp(3,:),zjstal),"3+-;CPstall 6 Blade error;",... +- zjstal,cpstal(4,:)-polyval(cpstalp(4,:),zjstal),"4+-;CPstall 8 Blade error;"); ++plot(zjstal,cpstal(1,:)-polyval(cpstalp(1,:),zjstal),"r+-;CPstall 2 Blade error;",... ++ zjstal,cpstal(2,:)-polyval(cpstalp(2,:),zjstal),"g+-;CPstall 4 Blade error;",... ++ zjstal,cpstal(3,:)-polyval(cpstalp(3,:),zjstal),"b+-;CPstall 6 Blade error;",... ++ zjstal,cpstal(4,:)-polyval(cpstalp(4,:),zjstal),"m+-;CPstall 8 Blade error;"); + grid on; + xlabel("ZJ"); + ylabel("CP Stall Approximation Error"); +@@ -176,14 +176,14 @@ title("CP Stall versus ZJ Approximation Error"); + print(f,"propcpstalerr.eps","-depsc2","-portrait","-color"); + + f=figure("visible","on"); +-plot(zjstal,ctstal(1,:),"1+;CTstall 2 Blade;",... +- zjstal,ctstal(2,:),"2+;CTstall 4 Blade;",... +- zjstal,ctstal(3,:),"3+;CTstall 6 Blade;",... +- zjstal,ctstal(4,:),"4+;CTstall 8 Blade;",... +- min(zjstal):0.1:max(zjstal),polyval(ctstalp(1,:),min(zjstal):0.1:max(zjstal)),"1-;CTstall 2 Blade;",... +- min(zjstal):0.1:max(zjstal),polyval(ctstalp(2,:),min(zjstal):0.1:max(zjstal)),"2-;CTstall 4 Blade;",... +- min(zjstal):0.1:max(zjstal),polyval(ctstalp(3,:),min(zjstal):0.1:max(zjstal)),"3-;CTstall 6 Blade;",... +- min(zjstal):0.1:max(zjstal),polyval(ctstalp(4,:),min(zjstal):0.1:max(zjstal)),"4-;CTstall 8 Blade;"); ++plot(zjstal,ctstal(1,:),"r+;CTstall 2 Blade;",... ++ zjstal,ctstal(2,:),"g+;CTstall 4 Blade;",... ++ zjstal,ctstal(3,:),"b+;CTstall 6 Blade;",... ++ zjstal,ctstal(4,:),"m+;CTstall 8 Blade;",... ++ min(zjstal):0.1:max(zjstal),polyval(ctstalp(1,:),min(zjstal):0.1:max(zjstal)),"r-;CTstall 2 Blade;",... ++ min(zjstal):0.1:max(zjstal),polyval(ctstalp(2,:),min(zjstal):0.1:max(zjstal)),"g-;CTstall 4 Blade;",... ++ min(zjstal):0.1:max(zjstal),polyval(ctstalp(3,:),min(zjstal):0.1:max(zjstal)),"b-;CTstall 6 Blade;",... ++ min(zjstal):0.1:max(zjstal),polyval(ctstalp(4,:),min(zjstal):0.1:max(zjstal)),"m-;CTstall 8 Blade;"); + grid on; + xlabel("ZJ"); + ylabel("CT Stall"); +@@ -191,10 +191,10 @@ title("CT Stall versus ZJ"); + print(f,"propctstal.eps","-depsc2","-portrait","-color"); + + f=figure("visible","on"); +-plot(zjstal,ctstal(1,:)-polyval(ctstalp(1,:),zjstal),"1+-;CTstall 2 Blade error;",... +- zjstal,ctstal(2,:)-polyval(ctstalp(2,:),zjstal),"2+-;CTstall 4 Blade error;",... +- zjstal,ctstal(3,:)-polyval(ctstalp(3,:),zjstal),"3+-;CTstall 6 Blade error;",... +- zjstal,ctstal(4,:)-polyval(ctstalp(4,:),zjstal),"4+-;CTstall 8 Blade error;"); ++plot(zjstal,ctstal(1,:)-polyval(ctstalp(1,:),zjstal),"r+-;CTstall 2 Blade error;",... ++ zjstal,ctstal(2,:)-polyval(ctstalp(2,:),zjstal),"g+-;CTstall 4 Blade error;",... ++ zjstal,ctstal(3,:)-polyval(ctstalp(3,:),zjstal),"b+-;CTstall 6 Blade error;",... ++ zjstal,ctstal(4,:)-polyval(ctstalp(4,:),zjstal),"m+-;CTstall 8 Blade error;"); + grid on; + xlabel("ZJ"); + ylabel("CT Stall Approximation Error"); +diff --git a/doc/p28rperf.m b/doc/p28rperf.m +index c4b1e7f2..147da3e6 100644 +--- a/doc/p28rperf.m ++++ b/doc/p28rperf.m +@@ -113,12 +113,12 @@ io360altperf=[0 200 176 0 ; + alt=0:100:18000; + [p t rho]=icaoatmo(alt); + clf; +-plot(io360altperf(io360altperf(:,2)>0,2),io360altperf(io360altperf(:,2)>0,1),"+1;RPM=2700;",... +- io360altperf(io360altperf(:,3)>0,3),io360altperf(io360altperf(:,3)>0,1),"+2;RPM=2400;",... +- io360altperf(io360altperf(:,4)>0,4),io360altperf(io360altperf(:,4)>0,1),"+3;RPM=2100;",... +- P0/hp_to_ftlbfps*(rho/rho(1)-C)/(1-C),alt,"-1;RPM=2700;",... +- P0/hp_to_ftlbfps*(rho/rho(1)-C)/(1-C)*(2400/2700)^1.13,alt,"-2;RPM=2400;",... +- P0/hp_to_ftlbfps*(rho/rho(1)-C)/(1-C)*(2100/2700)^1.13,alt,"-3;RPM=2100;"); ++plot(io360altperf(io360altperf(:,2)>0,2),io360altperf(io360altperf(:,2)>0,1),"+r;RPM=2700;",... ++ io360altperf(io360altperf(:,3)>0,3),io360altperf(io360altperf(:,3)>0,1),"+g;RPM=2400;",... ++ io360altperf(io360altperf(:,4)>0,4),io360altperf(io360altperf(:,4)>0,1),"+b;RPM=2100;",... ++ P0/hp_to_ftlbfps*(rho/rho(1)-C)/(1-C),alt,"-r;RPM=2700;",... ++ P0/hp_to_ftlbfps*(rho/rho(1)-C)/(1-C)*(2400/2700)^1.13,alt,"-g;RPM=2400;",... ++ P0/hp_to_ftlbfps*(rho/rho(1)-C)/(1-C)*(2100/2700)^1.13,alt,"-b;RPM=2100;"); + title("IO-360-C Engine Full Throttle SHP versus Altitude"); + xlabel("Shaft Horse Power"); + ylabel("Altitude [ft]"); +@@ -137,12 +137,12 @@ for tt=1:3; + x=x/sum(x); + RPMC(tt)=(x(1)-1)/x(1); + endfor; +-plot(rho1(io360altperf(:,2)>0)/rho1(1),io360altperf(io360altperf(:,2)>0,2),"+1;RPM=2700;",... +- rho1(io360altperf(:,3)>0)/rho1(1),io360altperf(io360altperf(:,3)>0,3),"+2;RPM=2400;",... +- rho1(io360altperf(:,4)>0)/rho1(1),io360altperf(io360altperf(:,4)>0,4),"+3;RPM=2100;",... +- rho/rho(1),P0/hp_to_ftlbfps*(rho/rho(1)-C)/(1-C),"-1;RPM=2700;",... +- rho/rho(1),P0/hp_to_ftlbfps*(rho/rho(1)-C)/(1-C)*(2400/2700)^1.13,"-2;RPM=2400;",... +- rho/rho(1),P0/hp_to_ftlbfps*(rho/rho(1)-C)/(1-C)*(2100/2700)^1.13,"-3;RPM=2100;"); ++plot(rho1(io360altperf(:,2)>0)/rho1(1),io360altperf(io360altperf(:,2)>0,2),"+r;RPM=2700;",... ++ rho1(io360altperf(:,3)>0)/rho1(1),io360altperf(io360altperf(:,3)>0,3),"+g;RPM=2400;",... ++ rho1(io360altperf(:,4)>0)/rho1(1),io360altperf(io360altperf(:,4)>0,4),"+b;RPM=2100;",... ++ rho/rho(1),P0/hp_to_ftlbfps*(rho/rho(1)-C)/(1-C),"-r;RPM=2700;",... ++ rho/rho(1),P0/hp_to_ftlbfps*(rho/rho(1)-C)/(1-C)*(2400/2700)^1.13,"-g;RPM=2400;",... ++ rho/rho(1),P0/hp_to_ftlbfps*(rho/rho(1)-C)/(1-C)*(2100/2700)^1.13,"-b;RPM=2100;"); + title("IO-360-C Engine Full Throttle SHP versus Altitude"); + xlabel("Relative Density [relative]"); + ylabel("Shaft Horse Power"); +@@ -512,6 +512,7 @@ for plimidx=1:2; + ROD=zeros(length(vc),size(alt,2)); + rpm=zeros(length(vc),size(alt,2)); + dist=zeros(length(vc),size(alt,2)); ++ col=jet(length(vc)); + clf; + for vci=1:length(vc); + D=0.5*CD0*vc(vci)^2*mph_to_ftps^2*rho0*S+W^2./(0.5*vc(vci)^2*mph_to_ftps^2*rho0*S*pi*A*ee); +@@ -521,7 +522,7 @@ for plimidx=1:2; + ROD(vci,:)=vc(vci)*mph_to_kts*nmi_to_ft/60*sqrt(rho(1)./rho)/W.*(D-T); + #dist(vci,2:length(alt))=cumsum((alt(2:length(alt))-alt(1:length(alt)-1))./ROD(vci,1:length(alt)-1)/60*vc(vci).*sqrt(rho(1)./rho(1:length(alt)-1))); + dist(vci,2:length(alt))=cumsum((alt(2:length(alt))-alt(1:length(alt)-1))*W./(D-T)(1:length(alt)-1))/(mph_to_kts*nmi_to_ft); +- plot(ROD(vci,:),alt,sprintf("%u;VCAS=%5.1fMPH;",vci*2-1,vc(vci))); ++ plot(ROD(vci,:),alt,sprintf(";VCAS=%5.1fMPH;",vc(vci)),"color",col(vci,:)); + hold on; + endfor; + hold off; +@@ -535,7 +536,7 @@ for plimidx=1:2; + + clf; + for vci=1:length(vc); +- plot(dist(vci,:),alt,sprintf("%u;VCAS=%5.1fMPH;",vci*2-1,vc(vci))); ++ plot(dist(vci,:),alt,sprintf(";VCAS=%5.1fMPH;",vc(vci)),"color",col(vci,:)); + hold on; + endfor; + hold off; +@@ -549,7 +550,7 @@ for plimidx=1:2; + + clf; + for vci=1:length(vc); +- plot(rpm(vci,:),alt,sprintf("%u;VCAS=%5.1fMPH;",vci*2-1,vc(vci))); ++ plot(rpm(vci,:),alt,sprintf(";VCAS=%5.1fMPH;",vc(vci)),"color",col(vci,:)); + hold on; + endfor; + hold off; diff --git a/vfrnav.spec b/vfrnav.spec index 2f93f77..5e2dd7f 100644 --- a/vfrnav.spec +++ b/vfrnav.spec @@ -1,15 +1,26 @@ Name: vfrnav -Version: 20180129 -Release: 1%{?dist} +Version: 20230429 +Release: 37%{?dist} Summary: VFR/IFR Navigation -Group: Applications/Productivity -License: GPLv2+ -URL: http://www.baycom.org/~tom/vfrnav -Source0: http://download.gna.org/vfrnav/%{name}-%{version}.tar.gz +License: GPL-2.0-or-later +URL: https://gitlab.com/tsailer/vfrnav/ +Source: https://gitlab.com/tsailer/vfrnav/-/archive/%{version}/%{name}-%{version}.tar.bz2 +Patch: vfrnav-octave-colors.patch +Patch: vfrnav-compile.patch + +# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} %bcond_without webservice +%bcond_with wetterdl +%bcond_with osmium +BuildRequires: make +BuildRequires: autoconf-archive +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: libtool BuildRequires: gtkmm30-devel BuildRequires: libxml++-devel >= 2.14.0 BuildRequires: sqlite-devel >= 3.0 @@ -23,7 +34,9 @@ BuildRequires: cairomm-devel BuildRequires: cairo-devel BuildRequires: zfstream-devel BuildRequires: gettext +%ifarch %java_arches BuildRequires: antlr-C++ +%endif %ifnarch s390 s390x BuildRequires: pilot-link-devel %endif @@ -39,15 +52,14 @@ BuildRequires: libXScrnSaver-devel BuildRequires: evince-devel BuildRequires: libusb1-devel BuildRequires: libcurl-devel -BuildRequires: webkitgtk4-devel +BuildRequires: webkit2gtk4.1-devel BuildRequires: openjpeg2-devel BuildRequires: libsoup-devel BuildRequires: librsvg2-devel -BuildRequires: podofo-devel +BuildRequires: podofo0.9-devel BuildRequires: systemd-devel BuildRequires: transfig BuildRequires: texlive -BuildRequires: texlive-texconfig BuildRequires: texlive-latex BuildRequires: texlive-latex-bin-bin BuildRequires: texlive-epstopdf @@ -69,12 +81,22 @@ BuildRequires: dia BuildRequires: selinux-policy-devel BuildRequires: qrencode-devel BuildRequires: libarchive-devel +BuildRequires: yaml-cpp-devel +%if %{with osmium} +BuildRequires: libosmium-devel +%endif +BuildRequires: protozero-devel +BuildRequires: utf8cpp-devel +BuildRequires: expat-devel +BuildRequires: zlib-devel +BuildRequires: bzip2-devel +BuildRequires: lz4-devel Requires: libreoffice-core Requires: libreoffice-calc Requires: texlive Requires: texlive-latex Requires: texlive-latex-bin-bin -Requires: texlive-droid +Requires: texlive-droid Requires: texlive-contour Requires: texlive-truncate Requires: texlive-changebar @@ -83,7 +105,7 @@ Requires: texlive-xstring Requires: texlive-hyphenat Requires: tex(t2aenc.def) Requires: texlive-lh -Requires: texlive-xetex-def +Requires: texlive-xetex Requires: texlive-framed Requires: texlive-polyglossia Requires: texlive-multirow @@ -162,7 +184,6 @@ This is a navigation application for VFR and IFR flying. %package utils Summary: VFR Navigation Utilities -Group: Applications/Productivity Requires: %{name} = %{version} Requires: php Requires: php-mbstring @@ -172,18 +193,18 @@ Requires: /usr/bin/convert This package contains utilities for database creation and manipulation for the VFR navigation application. +%if %{with wetterdl} %package wetterdl Summary: VFR Navigation Weather Downloader -Group: Applications/Productivity Requires: %{name} = %{version} %description wetterdl This package contains a downloader application for weather pictures from flugwetter.de and other sources. +%endif %package validatorservice Summary: VFR Navigation CFMU Validator Service -Group: Applications/Productivity Requires: %{name} = %{version} Requires: %{name}-selinux = %{version} Requires: xorg-x11-server-Xvfb @@ -195,7 +216,6 @@ this package contains a local socket validator server. %package selinux Summary: VFR Navigation selinux module -Group: Applications/Productivity Requires: %{name} = %{version} BuildArch: noarch Requires: selinux-policy @@ -208,7 +228,6 @@ This package contains the selinux module required for vfrnav %if %{with webservice} %package webservice Summary: VFR Navigation CFMU Autorouter Webservice -Group: Applications/Productivity Requires: %{name} = %{version} Requires: %{name}-validatorservice = %{version} Requires: %{name}-selinux = %{version} @@ -219,20 +238,26 @@ This package contains a webservice for the CFMU Autorouter. %endif %prep -%autosetup +%autosetup -p1 +autoreconf -fiv + +# Create a sysusers.d config file +cat >vfrnav.sysusers.conf < $i.tmp @@ -266,6 +291,10 @@ rm -f $RPM_BUILD_ROOT/%{_sysconfdir}/vfrnav/cfmuwsusers.json rm -f $RPM_BUILD_ROOT/%{_libdir}/libvfrnav.so rm -f $RPM_BUILD_ROOT/%{_libdir}/libvfrnav.la rm -f $RPM_BUILD_ROOT/%{_libdir}/libvfrnav.a +rm -f $RPM_BUILD_ROOT/%{_libdir}/libvfrnavcarto.a +rm -f $RPM_BUILD_ROOT/%{_libdir}/libvfrnavcarto.la +rm -f $RPM_BUILD_ROOT/%{_libdir}/libvfrnavcarto.so + rm -f $RPM_BUILD_ROOT/%{_libexecdir}/%{name}/web-extensions/libcfmuwebextension.a rm -f $RPM_BUILD_ROOT/%{_libexecdir}/%{name}/web-extensions/libcfmuwebextension.la @@ -286,11 +315,16 @@ rm -f $RPM_BUILD_ROOT/lib/systemd/system/cfmuautoroute.socket rm -f $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/cfmuautoroute %endif -%pre validatorservice -getent group vfrnav &>/dev/null || groupadd -r vfrnav -getent passwd vfrnav &>/dev/null || \ -useradd -g vfrnav -d /var/lib/vfrnav -M -r -s /sbin/nologin \ - -c "Special user account to be used by vfrnav cfmuautoroute/cfmuvalidate services" vfrnav +%if %{with wetterdl} +%else +rm -f $RPM_BUILD_ROOT/%{_bindir}/wetterdl.py +rm -f $RPM_BUILD_ROOT/%{_datadir}/applications/wetterdl.desktop +rm -f $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/32x32/apps/wetterdl.png +rm -f $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/48x48/apps/wetterdl.png +%endif + +install -m0644 -D vfrnav.sysusers.conf %{buildroot}%{_sysusersdir}/vfrnav.conf + %post selinux /usr/sbin/semodule -i %{_datadir}/selinux/packages/%{name}/%{name}.pp >/dev/null 2>&1 || : @@ -327,6 +361,8 @@ fi %{_libdir}/libreoffice/share/registry/vfrnav.xcd %{_libdir}/libvfrnav.so.0 %{_libdir}/libvfrnav.so.0.0.0 +%{_libdir}/libvfrnavcarto.so.0 +%{_libdir}/libvfrnavcarto.so.0.0.0 %{_bindir}/vfrnav %{_bindir}/vfrnavaideditor %{_bindir}/vfrwaypointeditor @@ -403,12 +439,24 @@ fi %{_bindir}/weatherfplan %{_bindir}/vfrnavgrib2dump %{_bindir}/vfrnavgrib2fcst +%{_bindir}/vfrdbbasulmimport +%{_bindir}/vfrnavmodes +%if %{with osmium} +%{_bindir}/osmbdry2shp +%{_bindir}/osm2odb +%{_bindir}/osm2sdb +%endif +%{_bindir}/odbquery +%{_bindir}/sdbquery +%{_bindir}/cartoquery +%if %{with wetterdl} %files wetterdl %{_bindir}/wetterdl.py %{_datadir}/applications/wetterdl.desktop %{_datadir}/icons/hicolor/32x32/apps/wetterdl.png %{_datadir}/icons/hicolor/48x48/apps/wetterdl.png +%endif %files validatorservice /lib/systemd/system/cfmuvalidate.service @@ -417,6 +465,7 @@ fi %dir %attr(0755,vfrnav,vfrnav) /run/vfrnav %dir %attr(0750,vfrnav,vfrnav) /run/vfrnav/validator %dir %attr(0750,vfrnav,vfrnav) /var/lib/vfrnav +%{_sysusersdir}/vfrnav.conf %files selinux %{_datadir}/selinux/packages/%{name}/vfrnav.pp @@ -432,6 +481,308 @@ fi %endif %changelog +* Fri Jul 17 2026 Fedora Release Engineering - 20230429-37 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild + +* Fri Jun 19 2026 Sandro Mani - 20230429-36 +- Rebuild (gdal) + +* Sat Jun 13 2026 Yaakov Selkowitz - 20230429-35 +- Rebuilt for openssl 4.0 + +* Sun Mar 22 2026 Björn Esser - 20230429-34 +- Rebuild (jsoncpp) + +* Fri Feb 27 2026 Orion Poplawski - 20230429-33 +- Rebuild for octave 11.1 + +* Wed Feb 18 2026 Thomas Sailer - 20230429-32 +- fix requires + +* Sun Jan 25 2026 Elliott Sales de Andrade - 20230429-31 +- Drop support for i686 + +* Sat Jan 17 2026 Fedora Release Engineering - 20230429-30 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Wed Jan 14 2026 Jitka Plesnikova - 20230429-29 +- Rebuild for new gpsd + +* Sun Nov 23 2025 Sandro Mani - 20230429-28 +- Rebuild (gdal) + +* Tue Oct 28 2025 Sandro Mani - 20230429-27 +- Rebuild (geos) + +* Wed Sep 03 2025 Sandro Mani - 20230429-26 +- Rebuild (geos) + +* Thu Aug 07 2025 Orion Poplawski - 20230429-25 +- Rebuild for Octave 10.2 + +* Tue Jul 29 2025 Sandro Mani - 20230429-24 +- Rebuild (gdal) + +* Fri Jul 25 2025 Fedora Release Engineering - 20230429-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Tue May 27 2025 Remi Collet - 20230429-22 +- rebuild for new gpsd + +* Wed Mar 05 2025 Sandro Mani - 20230429-21 +- Rebuild (geos) + +* Thu Feb 27 2025 Björn Esser - 20230429-20 +- Rebuild (jsoncpp) + +* Tue Feb 11 2025 Zbigniew Jędrzejewski-Szmek - 20230429-19 +- Add sysusers.d config file to allow rpm to create users/groups automatically + +* Sun Feb 02 2025 Orion Poplawski - 20230429-18 +- Rebuild with gsl 2.8 + +* Sun Jan 19 2025 Fedora Release Engineering - 20230429-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Tue Jan 07 2025 Thomas Sailer - 20230429-16 +- fixes for octave 9 + +* Mon Dec 23 2024 Björn Esser - 20230429-15 +- Rebuild (libpqxx) + +* Thu Nov 14 2024 Orion Poplawski - 20230429-14 +- Rebuild for octave 9.2 + +* Fri Nov 08 2024 Sandro Mani - 20230429-13 +- Rebuild (gdal) + +* Fri Oct 25 2024 Orion Poplawski - 20230429-12 +- Rebuild for yaml-cpp 0.8 + +* Tue Sep 10 2024 Sandro Mani - 20230429-11 +- Rebuild (geos) + +* Sat Jul 20 2024 Fedora Release Engineering - 20230429-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Thu Jun 06 2024 Sandro Mani - 20230429-9 +- Rebuild (geos) + +* Mon May 13 2024 Sandro Mani - 20230429-8 +- Rebuild (gdal) + +* Sat Jan 27 2024 Fedora Release Engineering - 20230429-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Wed Nov 15 2023 Sandro Mani - 20230429-6 +- Rebuild (gdal) + +* Sun Nov 12 2023 Sandro Mani - 20230429-5 +- Rebuild (geos) + +* Wed Aug 16 2023 Sandro Mani - 20230429-4 +- Switch to BR podofo0.9-devel + +* Sat Jul 22 2023 Fedora Release Engineering - 20230429-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Thu Jul 06 2023 Sandro Mani - 20230429-2 +- Rebuild (geos) + +* Wed May 17 2023 Thomas Sailer - 20230429-1 +- update to 20230429 + +* Thu May 11 2023 Sandro Mani - 20201231-40 +- Rebuild (gdal) + +* Sat Apr 08 2023 Orion Poplawski - 20201231-39 +- Rebuild with octave 8.1.0 + +* Tue Jan 24 2023 Adam Williamson - 20201231-38 +- rebuild for new libgps + +* Sat Jan 21 2023 Fedora Release Engineering - 20201231-37 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Tue Nov 15 2022 Richard Shaw - 20201231-36 +- Rebuild for yaml-cpp 0.7.0. + +* Tue Nov 15 2022 Sandro Mani - 20201231-35 +- Rebuild (geos) + +* Sat Nov 12 2022 Sandro Mani - 20201231-34 +- Rebuild (gdal) + +* Tue Nov 08 2022 Richard Shaw - 20201231-33 +- Rebuild for yaml-cpp 0.7.0. + +* Tue Aug 23 2022 Mamoru TASAKA - 20201231-32 +- Restrict BR: antlr to %%java_arches + +* Tue Aug 23 2022 Mamoru TASAKA - 20201231-31 +- Rebuild for gsl-2.7.1 + +* Sat Jul 23 2022 Fedora Release Engineering - 20201231-30 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Sun Jul 03 2022 Sandro Mani - 20201231-29 +- Rebuild (geos) + +* Tue Jun 07 2022 Sandro Mani - 20201231-28 +- Rebuild (geos) + +* Wed Jun 01 2022 Orion Poplawski - 20201231-27 +- Rebuild for octave 7.1 + +* Fri May 20 2022 Sandro Mani - 20201231-26 +- Rebuild for gdal-3.5.0 and/or openjpeg-2.5.0 + +* Fri May 06 2022 Mamoru TASAKA - 20201231-25 +- Rebuild for new gpsd + +* Tue May 03 2022 Sandro Mani - 20201231-24 +- Rebuild (podofo) + +* Fri Feb 18 2022 Thomas Sailer - 20201231-23 +- rebuild + +* Sat Jan 22 2022 Fedora Release Engineering - 20201231-22 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Tue Jan 18 2022 Sandro Mani - 20201231-21 +- Rebuild (geos) + +* Mon Jan 10 2022 Björn Esser - 20201231-20 +- Enable builds for ppc64le again + +* Mon Jan 10 2022 Björn Esser - 20201231-19 +- Rebuild (libpqxx) + +* Thu Nov 11 2021 Sandro Mani - 20201231-18 +- Rebuild (gdal) + +* Sun Nov 07 2021 Sandro Mani - 20201231-17 +- Rebuild (geos) + +* Wed Nov 03 2021 Björn Esser - 20201231-16 +- Rebuild (jsoncpp) + +* Thu Oct 21 2021 Sandro Mani - 20201231-15 +- Rebuild (geos) + +* Tue Sep 14 2021 Sahana Prasad - 20201231-14 +- Rebuilt with OpenSSL 3.0.0 + +* Tue Sep 07 2021 Thomas Sailer - 20201231-13 +- rebuild + +* Tue Aug 17 2021 Björn Esser - 20201231-12 +- Rebuild (libpqxx) + +* Thu Aug 12 2021 Björn Esser - 20201231-11 +- Rebuild for octave 6.3.0, again + +* Thu Aug 12 2021 Björn Esser - 20201231-10 +- Add patch to fix invocation of inksacape v1.x +- Use macros for make + +* Wed Aug 11 2021 Björn Esser - 20201231-9 +- Rebuild (gpsd) + +* Wed Aug 11 2021 Orion Poplawski - 20201231-8 +- Rebuild for octave 6.3.0 + +* Fri Jul 23 2021 Fedora Release Engineering - 20201231-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Fri May 07 2021 Sandro Mani - 20201231-6 +- Rebuild (gdal) + +* Sat Feb 13 2021 Sandro Mani - 20201231-5 +- Rebuild (geos) + +* Wed Feb 03 2021 Thomas Sailer - 20201231-3 +- rebuild for libpqxx 7.3 + +* Wed Jan 27 2021 Fedora Release Engineering - 20201231-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Jan 18 2021 Thomas Sailer - 20201231-2 +- rebuild for gpsd + +* Mon Jan 11 2021 Thomas Sailer - 20201231-1 +- update to 20201231 +- make osmium conditional and disable for now as libosmium-devel is broken with g++ 11 + +* Wed Nov 11 13:13:38 CET 2020 Sandro Mani - 20200429-4 +- Rebuild (proj, gdal) + +* Sun Aug 09 2020 Thomas Sailer - 20200429-3 +- rebuild for libpqxx + +* Wed Jul 29 2020 Fedora Release Engineering - 20200429-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Fri Jun 19 2020 Björn Esser - 20200429-1 +- update to 20200429 + +* Thu Jun 18 2020 Björn Esser - 20200427-4 +- Rebuild (gpsd) + +* Sat May 30 2020 Björn Esser - 20200427-3 +- Rebuild (jsoncpp) + +* Thu May 21 2020 Sandro Mani - 20200427-2 +- Rebuild (gdal) + +* Fri May 01 2020 Thomas Sailer - 20200427-1 +- update to 20200427 + +* Tue Mar 03 2020 Sandro Mani - 20200202-2 +- Rebuild (gdal) + +* Wed Feb 5 2020 Thomas Sailer - 20200202-1 +- update to 20200202 + +* Fri Jan 31 2020 Fedora Release Engineering - 20190212-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Thu Nov 14 2019 Björn Esser - 20190212-8 +- Rebuild (jsoncpp) + +* Tue Aug 20 2019 Susi Lehtola - 20190212-7 +- Rebuilt for GSL 2.6. + +* Wed Aug 07 2019 Thomas Sailer - 20190212-6 +- remove wetterdl subpackage due to python2 dependency + +* Sat Jul 27 2019 Fedora Release Engineering - 20190212-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Wed Jul 03 2019 Björn Esser - 20190212-4 +- Rebuild (jsoncpp) + +* Wed Jul 03 2019 Björn Esser - 20190212-3 +- Rebuild (gpsd) + +* Sun Jun 16 2019 Orion Poplawski - 20190212-2 +- Rebuild for octave 5.1 + +* Thu Feb 14 2019 Thomas Sailer - 20190212-1 +- Compile fixes for rawhide + +* Sun Feb 03 2019 Fedora Release Engineering - 20180129-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Sat Jul 14 2018 Fedora Release Engineering - 20180129-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed Jul 11 2018 Sandro Mani - 20180129-3 +- Rebuild (podofo) + +* Fri Feb 09 2018 Fedora Release Engineering - 20180129-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + * Mon Jan 29 2018 Thomas Sailer - 20180129-1 - update to 20180129 - drop openjpeg2 patch, as it was buggy and openjpeg2 support is now integrated