Skip to content

Bisect #708 Testing/ #755

@xsscx

Description

@xsscx

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

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

Metadata

Metadata

Assignees

Labels

BisectMaintainer indicates BisectMLMaintainer indicates topic related to Machine LearningTriagedMaintainer indicates triaged status and ready for developer handoff

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions