Maintainer Summary
2026-03-29 01:50:21 UTC
Good: 9f53e42
Bad: f0030ed
Context
Commit f0030ed ("Update .sh to match .bat changes") introduced regressions into Testing/hybrid/BuildAndTest.sh via copy-paste from BuildAndTest.bat without platform adaptation.
GOOD Breadcrumb checkout
git clone https://github.com/InternationalColorConsortium/iccDEV.git
cd iccDEV
git checkout 9f53e42cf259088b94b40d78b3b91b712ea86bb0
cat Testing/hybrid/BuildAndTest.sh
Good Breadcrumb output (BuildAndTest.sh at 9f53e42, blob f619742)
iccFromXml MultSpectralRGB.xml ICC/MultSpectralRGB.icc
iccFromXml LCDDisplay.xml ICC/LCDDisplay.icc
iccFromXml CMYK_Hybrid_Profile.xml ICC/CMYK_Hybrid_Profile.icc
iccFromXml Data/Lab_float-D50_2deg.xml ICC/Lab_float-D50_2deg.icc
...
iccApplyProfiles Data/smCows380_5_780.tif Results/MS_smCows.tif 2 1 0 ...
iccApplyProfiles Data/smCows380_5_780.tif Results/cowsA_fromRef.tif 1 1 0 ...
...
iccApplyNamedCmm Data/cmykGrays.txt 3 1 ...
iccApplySearch Results/cmykGraysRef.txt 0 1 ...
Bad Breadcrumb checkout
git checkout f0030ed1b04b50f0e7417902f1e473ff2a96a80d
cat Testing/hybrid/BuildAndTest.sh
Bad Breadcrumb output (BuildAndTest.sh at f0030ed, blob b253af9)
63 lines total. 6 categories of regression:
Issue 1: Binary name case — iccapplyprofiles vs iccApplyProfiles
Lines 43-63: all 23 overprint/TShirt lines use lowercase iccapplyprofiles
cmake builds CamelCase iccApplyProfiles. Linux/macOS = "command not found".
iccapplyprofiles -exportcfg config/TShirtDesignPrevUW-W.json Data/TShirtDesignCMYKW.tif ...
iccapplyprofiles -exportcfg config/TShirtDesignPrevUW-R.json Data/TShirtDesignCMYKW.tif ...
iccapplyprofiles -exportcfg config/TShirtDesignPrevUW-G.json Data/TShirtDesignCMYKW.tif ...
... (23 total)
Should be:
iccApplyProfiles -exportcfg config/TShirtDesignPrevUW-W.json Data/TShirtDesignCMYKW.tif ...
Issue 2: Windows backslash paths in bash — lines 25-26
iccFromXml CMYK-W_Overprint_Profile.xml ICC\CMYK-W_Overprint_Profile.icc
iccFromXml CMYK-S_Overprint_Profile.xml ICC\CMYK-S_Overprint_Profile.icc
In bash, ICC\CMYK-W_... - ICCCMYK-W_... (backslash is escape).
File created in wrong directory. Later references on lines 48+ use
ICC/CMYK-S_Overprint_Profile.icc (forward slash) - "file not found".
Should be:
iccFromXml CMYK-W_Overprint_Profile.xml ICC/CMYK-W_Overprint_Profile.icc
iccFromXml CMYK-S_Overprint_Profile.xml ICC/CMYK-S_Overprint_Profile.icc
Issue 3: Missing 5 iccFromXml build steps (.bat has them, .sh does not)
.bat lines 11-14 and 19 build profiles consumed later. .sh omits them entirely.
Profiles referenced on .sh lines 52-63 will not exist.
Missing from .sh:
iccFromXml CMYK-STop_Overprint_Profile.xml ICC/CMYK-STop_Overprint_Profile.icc
iccFromXml MW-Mid_Overprint.xml ICC/MW-Mid_Overprint.icc
iccFromXml MS-Mid_Overprint.xml ICC/MS-Mid_Overprint.icc
iccFromXml SC-Mid_Overprint.xml ICC/SC-Mid_Overprint.icc
iccFromXml Data/Cat8Lab-D65_2deg.xml ICC/Cat8Lab-D65_2deg.icc
Issue 4: Missing .sh sections present in .bat
.bat "Apply custom observer" section (lines 41-49) entirely absent from .sh:
iccDumpProfile ICC/LCDDisplay.icc
iccV5DspObsToV4Dsp ICC/LCDDisplay.icc ICC/Cat8Lab-D65_2deg.icc Results/LCDDisplayCat8Obs.icc
iccDumpProfile Results/LCDDisplayCat8Obs.icc
.bat "TiffDump result" (line 27) absent from .sh:
iccTiffDump Results/MS_smCows.tif
Finding 5: .bat also has binary name casing bugs (hidden by NTFS)
.bat lines 62-84 use iccapplyprofiles (lowercase) — wrong case but
works on case-insensitive NTFS. Would fail if .bat were ported to
a case-sensitive context.
.bat binary: %TOOLDIR%iccapplyprofiles
cmake binary: iccApplyProfiles.exe
Finding 6: .bat has iccFromXML vs iccFromXml inconsistency
.bat lines 12-14:
%TOOLDIR%iccFromXML.exe MW-Mid_Overprint.xml ICC\MW-Mid_Overprint.icc
%TOOLDIR%iccFromXML.exe MS-Mid_Overprint.xml ICC\MS-Mid_Overprint.icc
%TOOLDIR%iccFromXML.exe SC-Mid_Overprint.xml ICC\SC-Mid_Overprint.icc
vs all other .bat lines:
%TOOLDIR%iccFromXml.exe MultSpectralRGB.xml ICC\MultSpectralRGB.icc
cmake binary: iccFromXml (lowercase ml, NOT iccFromXML)
Verified cmake binary names (case-sensitive, from CMakeLists.txt)
$ ls iccDEV/Build/Tools/*/icc* | sed 's|.*/||' | sort
iccApplyNamedCmm
iccApplyProfiles
iccApplySearch
iccApplyToLink
iccDumpProfile
iccFromCube
iccFromXml
iccJpegDump
iccPngDump
iccRoundTrip
iccSpecSepToTiff
iccTiffDump
iccToXml
iccV5DspObsToV4Dsp
Summary
| # |
Finding |
Scope |
Impact on Linux/macOS |
| 1 |
iccapplyprofiles (lowercase) × 23 lines |
.sh |
"command not found" |
| 2 |
ICC\ backslash output path × 2 lines |
.sh |
file created in wrong dir |
| 3 |
5 missing iccFromXml build steps |
.sh |
profiles not built |
| 4 |
4 missing tool calls (dump, v5dsp, tiffdump) |
.sh |
feature gap vs .bat |
| 5 |
iccapplyprofiles (lowercase) × 23 lines |
.bat |
hidden by NTFS |
| 6 |
iccFromXML (capital XML) × 3 lines |
.bat |
hidden by NTFS |
Maintainer Summary
2026-03-29 01:50:21 UTC
Bisect #708
Good: 9f53e42
Bad: f0030ed
Context
Commit f0030ed ("Update .sh to match .bat changes") introduced regressions into Testing/hybrid/BuildAndTest.sh via copy-paste from BuildAndTest.bat without platform adaptation.
GOOD Breadcrumb checkout
Good Breadcrumb output (BuildAndTest.sh at 9f53e42, blob f619742)
Bad Breadcrumb checkout
Bad Breadcrumb output (BuildAndTest.sh at f0030ed, blob b253af9)
63 lines total. 6 categories of regression:
Issue 1: Binary name case — iccapplyprofiles vs iccApplyProfiles
Lines 43-63: all 23 overprint/TShirt lines use lowercase
iccapplyprofilescmake builds CamelCase
iccApplyProfiles. Linux/macOS = "command not found".Should be:
Issue 2: Windows backslash paths in bash — lines 25-26
In bash,
ICC\CMYK-W_...-ICCCMYK-W_...(backslash is escape).File created in wrong directory. Later references on lines 48+ use
ICC/CMYK-S_Overprint_Profile.icc(forward slash) - "file not found".Should be:
Issue 3: Missing 5 iccFromXml build steps (.bat has them, .sh does not)
.bat lines 11-14 and 19 build profiles consumed later. .sh omits them entirely.
Profiles referenced on .sh lines 52-63 will not exist.
Missing from .sh:
Issue 4: Missing .sh sections present in .bat
.bat "Apply custom observer" section (lines 41-49) entirely absent from .sh:
.bat "TiffDump result" (line 27) absent from .sh:
Finding 5: .bat also has binary name casing bugs (hidden by NTFS)
.bat lines 62-84 use
iccapplyprofiles(lowercase) — wrong case butworks on case-insensitive NTFS. Would fail if .bat were ported to
a case-sensitive context.
.bat binary:
%TOOLDIR%iccapplyprofilescmake binary: iccApplyProfiles.exe
Finding 6: .bat has iccFromXML vs iccFromXml inconsistency
.bat lines 12-14:
vs all other .bat lines:
cmake binary: iccFromXml (lowercase ml, NOT iccFromXML)
Verified cmake binary names (case-sensitive, from CMakeLists.txt)
Summary