[pkg-fgfs-crew] failed ppc64el build of flightgear 1:2017.2.1+dfsg-2

Florent Rougon f.rougon at free.fr
Sun Aug 6 15:34:54 UTC 2017


Hi Markus,

Markus Wanner <markus at bluegap.ch> wrote:

> From the various failures, I concluded the tests need (some) flightgear
> data and don't work without it, so I added flightgear-data-base and
> flightgear-data-ai as build dependencies in 1:2017.2.1+dfsg-3. That
> seems to work, now.
>
> Do you think we could get away without any of the two, but providing a
> writable $HOME or $FG_HOME?

I doubt it, and what you say confirms it. If you look at
flightgear/tests/unitTestHelpers.cxx, you'll see it wants FGData (among
others, to build the navdata cache, because there is at least a test
looking up navaids there):

  void initTestGlobals(const std::string& testName)
  {
    sglog().setLogLevels( SG_ALL, SG_WARN );
    sglog().setDeveloperMode(true);

    globals = new FGGlobals;

      bool foundRoot = false;
    if (std::getenv("FG_ROOT")) {
      SGPath fg_root = SGPath::fromEnv("FG_ROOT");
        if (looksLikeFGData(fg_root)) {
            globals->set_fg_root(fg_root);
            foundRoot = true;
        }
    }

      if (!foundRoot) {
        SGPath pkgLibDir = SGPath::fromUtf8(PKGLIBDIR);
        if (looksLikeFGData(pkgLibDir)) {
          globals->set_fg_root(pkgLibDir);
            foundRoot = true;
        }
      }

      if (!foundRoot) {
      SGPath dataDir = SGPath::fromUtf8(FGSRCDIR) / ".." / "fgdata";
        if (looksLikeFGData(dataDir)) {
            globals->set_fg_root(dataDir);
            foundRoot = true;
        }
      }

      if (!foundRoot) {
            std::cerr << "FGData not found" << std::endl;
            exit(EXIT_FAILURE);
        }

      tests_fgdata = globals->get_fg_root();

      // current dir
      SGPath homePath = SGPath::fromUtf8(FGBUILDDIR) / "test_home";
      if (!homePath.exists()) {
          (homePath / "dummyFile").create_dir(0755);
      }

      globals->set_fg_home(homePath);

      fgSetDefaults();

      flightgear::NavDataCache* cache = flightgear::NavDataCache::createInstance();
      if (cache->isRebuildRequired()) {
          std::cerr << "Navcache rebuild for testing" << std::flush;

          while (cache->rebuild() != flightgear::NavDataCache::REBUILD_DONE) {
			  SGTimeStamp::sleepForMSec(1000);
              std::cerr << "." << std::flush;
          }
      }

[...]

>From this piece of code, you can also see that it does
globals->set_fg_home() with a directory that is $FGBUILDDIR/test_home,
therefore I think setting FG_HOME would presumably have no effect on
this test framework (it has effect when running FG, when you don't want
$HOME/.fgfs to be used). This is a wise thing to do, so that tests don't
change the FG configuration of the user running them!

In short: what you did seems good, and from a quick look at the test
framework, I don't think there is much room for improvement on your
side.

Regards

-- 
Florent



More information about the pkg-fgfs-crew mailing list