pommesschranke wrote in Thu May 14, 2015 9:57 am:a way to find 'paper cut' bugs:
* install as many planes as you can
* start flightgear on a Saturday evening with this options:
- Code: Select all
fgfs --multiplay=out,10,mpserver01.flightgear.org,5000 --callsign=obs-XYZ
(XYZ is any number of your choice)
then you'll see many error messages ( on the console output )from aircraft of all the other MP players like this:
This is very clever D-LASER, but I see one problem.
It is complicated for me to explain the problem, so bare with me: [The CRJ700 example below is hypothetical!]
Many of these error messages you are seeing are actually missing dependencies. --as in file missing. But this files, it appears to me are missing locally, and thus the error could theoretical be corrected by installing the dependency plane, locally.
Let's explain my train of thought as an example:
Lets say pilot A flies the CRJ700-Family, and this has dependencies on the 737-300 and the 777. If pilot A does not also have these aircrafts installed, his CRJ700 is failing (ie, it may be missing some instruments on the cockpit-tipically). And he gets a lot of missing files errors on the log.
the observer comes and has the 3 planes installed. The observer does not get these errors, because the observer's CRJ700 is also finding the observer's 737-300 and 777. Clearly the observer not only does not get the error, but also needs not those instruments.
Doing your test with "all aircraft installed" will have minimal finding of missing files errors. Or, probably will not find all iterations of missing dependencies.
I suggest another approach to find where aircraft dependencies exist. I say using grep to search for the text "Aircraft/" in all xmls in the aircraft directory. Then use the "basename" of the directory to grep inverse (-v), so when the line is "Aircraft/CRJ700" the line is filtered out. Then the lines left, may indicate dependencies that could or could not be missing.
The solution is to duplicate locally (to the CRJ700) those files and redirect to the CRJ700 (as oppose to the 737 or the 777). This way correcting all dependencies on the CRJ700.
then the script needs to be executed over ALL aircraft, changing the basename.
After fixing all aircrafts depending on each other (excluding Expansion Packs, such as ExpansionPack, FGUK-Loads, JPack, DavePack, etc, which are intended dependencies; and excluding dependencies to the base aircraft could be acceptable as well. Generic, ufo, c172p, Generic-3d)
then doing your clever test over a computer with all aircraft installed should be way more silent, but also, the errors found be more pertinent.
We can see below that the CRJ700 does not have dependencies anymore. except to Generic.Note: $(basename $PWD) outputs CRJ700-family, when inside that directory
- Code: Select all
israel@linux-hkow:~/local/source/fgdataNew/Aircraft/CRJ700-family> grep -h "Aircraft/" *xml | grep -v $(basename $PWD)
<file>Aircraft/Generic/DualControl/dual-control-tools.nas</file>
<file>Aircraft/Generic/DualControl/copilot-dual-control.nas</file>
<!--radar-texture-path type="string">Aircraft/777/Models/Instruments/MFD/od_wxradar.png</radar-texture-path>
<symbol-texture-path type="string">Aircraft/777/Models/Instruments/MFD/nd_symbols.png</symbol-texture-path-->
<file>Aircraft/Generic/DualControl/dual-control-tools.nas</file>
<file>Aircraft/Generic/DualControl/pilot-dual-control.nas</file>
We can see the 737-100 has a potentially missing dependency to the Tu-134, in one Nasal file
- Code: Select all
israel@linux-hkow:~/local/source/fgdataNew/Aircraft/737-100> grep -h "Aircraft/" *xml | grep -v $(basename $PWD)
<path>Aircraft/Generic/generic-electrical.xml</path>
<file>Aircraft/Generic/Engines/generic-yasim-engine.nas</file>
<file>Aircraft/Tu-134/Nasal/engines-yasim.nas</file>
If we gave everybody in the World free software today, but we failed to teach them about the four freedoms, five years from now, would they still have it? Probably not, because if they don’t recognise their freedoms, they’ll let their freedoms fall