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 6622175..5e2dd7f 100644 --- a/vfrnav.spec +++ b/vfrnav.spec @@ -1,11 +1,16 @@ Name: vfrnav Version: 20230429 -Release: 10%{?dist} +Release: 37%{?dist} Summary: VFR/IFR Navigation License: GPL-2.0-or-later URL: https://gitlab.com/tsailer/vfrnav/ -Source0: https://gitlab.com/tsailer/vfrnav/-/archive/%{version}/%{name}-%{version}.tar.bz2 +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 @@ -100,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 @@ -236,6 +241,11 @@ This package contains a webservice for the CFMU Autorouter. %autosetup -p1 autoreconf -fiv +# Create a sysusers.d config file +cat >vfrnav.sysusers.conf </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 +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 || : @@ -458,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 @@ -473,6 +481,87 @@ 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