Building with libpng16, there's quite a lot of "iCCP: known incorrect sRGB profile" in the log. These are only warnings, but they are still noise.
Code: Select all
13:04:13.745 [texture.load.png.warning]: ----- A PNG loading warning occurred for /home/flibble/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns/oolite.oxp.DrNil.YAH-SetF.oxz/Textures/yah_set_F_10.png: iCCP: known incorrect sRGB profile.
I'm wondering whether it'd be better to ignore the warnings in texture.load, or clean up the png files in the OXZs. The latter doesn't look too hard. Clues here
https://stackoverflow.com/questions/227 ... e#22747902
From a short run:
Code: Select all
$ grep iCCP Latest.log | awk '{print $10}' | sed 's@^.*AddOns/@@g;s@/.*$@@g' | sort | uniq
DTT.War_Lance.Paradox_Flibble.02.oxz
oolite.oxp.DrNil.YAH.oxz
oolite.oxp.DrNil.YAH-SetA.oxz
oolite.oxp.DrNil.YAH-SetB.oxz
oolite.oxp.DrNil.YAH-SetC.oxz
oolite.oxp.DrNil.YAH-SetD.oxz
oolite.oxp.DrNil.YAH-SetE.oxz
oolite.oxp.DrNil.YAH-SetF.oxz
oolite.oxp.DrNil.YAH-SetG.oxz
oolite.oxp.phkb.ExtraRockHermits.oxz
oolite.oxp.smivs.Liners.oxz
oolite.oxp.spara.station_ads.oxz
oolite.oxp.ZygoUgo.ZygoCinematicSkyNebulas.oxz
oolite.oxp.zzz.Montana05.KillerWolf.nuit_station.oxz
To test, I read the linked article, apt install pngcrush, unzip my hacked up version of DTT_Warlance, then use this script to select errant files in the tree, and remove only the troublesome profile.
Code: Select all
find . -name "*.png" -type f 2>/dev/null | while read fn ; do
pngcrush -n -q "$fn" 2>&1 | grep -q "iCCP: Not recognizing known sRGB profile that has been edited" && {
echo -n "Fixing: $fn :"
pngcrush -ow -rem iCCP "$fn" >/dev/null 2>&1 && echo Good || {
echo Fail ; exit 1
}
}
done
Output:
Fixing: ./Textures/DTT_War_Lance_Emissions.png :Good
Re-zipped, sorted!
I doubt all OXPs and all PNGs are being hit in my short run. It's not too hard to iterate through a directory of OXPs with unzip and test the pngs. This ugly script munches all the managed addons placing any fixed packages in /tmp/fixer/out. If this is aborted mid-run, do delete the $WORKDIR before trying again.
Code: Select all
#!/bin/bash
DIR="$HOME/GNUstep/Library/ApplicationSupport/Oolite/ManagedAddOns"
WORKDIR=/tmp/fixer/in
OUTDIR=/tmp/fixer/out
mkdir -p "$OUTDIR"
flagfile=fixpng.touched
failfile=fixpng.broke
dienow(){ echo "$*" >&2 ; exit 2 ; }
fixpng(){
find . -name "*.png" -type f 2>/dev/null | while read fn ; do
pngcrush -n -q "$fn" 2>&1 | grep -q "iCCP: Not recognizing known sRGB profile that has been edited" && {
pngcrush -ow -rem iCCP "$fn" >/dev/null 2>&1 || {
touch $failfile ; break
}
touch $flagfile
}
done
}
ls -1 "$DIR" | grep ".oxz$" | while read fn ; do
echo -n "Processing $fn : "
mkdir -p "$WORKDIR" && cd "$WORKDIR" || dienow mkdir
unzip -q "$DIR/$fn" || dienow "Unzip issue"
fixpng
[ -f "$failfile" ] && {
echo ERROR
rm "$failfile" ; dienow fixpng
}
[ -f "$flagfile" ] && {
echo Hit
rm $flagfile
zip -qr "$OUTDIR/$fn" * || dienow zip
} || echo "Miss"
cd - >/dev/null
rm -Rf "$WORKDIR"
done
For my HEAP of OXZs these are the output files.
oolite.oxp.DrNil.YAH.oxz
oolite.oxp.DrNil.YAH-SetA.oxz
oolite.oxp.DrNil.YAH-SetB.oxz
oolite.oxp.DrNil.YAH-SetC.oxz
oolite.oxp.DrNil.YAH-SetD.oxz
oolite.oxp.DrNil.YAH-SetE.oxz
oolite.oxp.DrNil.YAH-SetF.oxz
oolite.oxp.DrNil.YAH-SetG.oxz
oolite.oxp.Griff_alloys_and_wreckage.oxz
oolite.oxp.Murgh.MilitaryFiasco.oxz
oolite.oxp.Okti.Coyotes_Run.oxz
oolite.oxp.phkb.ExtraRockHermits.oxz
oolite.oxp.phkb.SpacebarFacelift.oxz
oolite.oxp.Ramirez.FeudalStates.oxz
oolite.oxp.smivs.Liners.oxz
oolite.oxp.spara.ImperialAstrofactory.oxz
oolite.oxp.spara.market_ads.oxz
oolite.oxp.spara.station_ads.oxz
oolite.oxp.Thargoid.TCAT.oxz
oolite.oxp.ZygoUgo.ZygoCinematicSkyNebulas.oxz
oolite.oxp.zzz.Montana05.KillerWolf.nuit_station.oxz
Logs look cleaner

Obviously I'm not touching versions here.