From d843716e8b8525c7554e7d8ab6d83cb01484fb97 Mon Sep 17 00:00:00 2001 From: Gronod Date: Fri, 28 Aug 2026 20:23:09 +0100 Subject: [PATCH] fix(packaging): sanitize CRLF line endings in manifest files and ensure catalog files exist (fixes #21) --- .gitea/workflows/build-windows.yml | 9 +++++++++ .github/workflows/build-windows.yml | 9 +++++++++ makepackagebin.sh | 24 ++++++++++++++++-------- usb/ArgyllCMS_arm64.cat | Bin 0 -> 3803 bytes usb/ArgyllCMS_x64.cat | Bin 0 -> 3803 bytes 5 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 usb/ArgyllCMS_arm64.cat create mode 100644 usb/ArgyllCMS_x64.cat diff --git a/.gitea/workflows/build-windows.yml b/.gitea/workflows/build-windows.yml index 6661fed..f7c9bda 100644 --- a/.gitea/workflows/build-windows.yml +++ b/.gitea/workflows/build-windows.yml @@ -63,6 +63,15 @@ jobs: echo "SHORT_SHA=${SHORT_SHA}" >> $GITHUB_ENV mv Argyll_V*_win64_exe.zip "Argyll_${TAG}_${SHORT_SHA}_win64_exe.zip" + - name: Verify Package Contents + run: | + ZIP_FILE=$(ls Argyll_*_win64_exe.zip) + echo "Verifying contents of ${ZIP_FILE}..." + unzip -l "${ZIP_FILE}" | grep "usb/ArgyllCMS.inf" + unzip -l "${ZIP_FILE}" | grep "usb/bin/amd64/libusb0.sys" + unzip -l "${ZIP_FILE}" | grep "doc/ArgyllDoc.html" + unzip -l "${ZIP_FILE}" | grep "ReadMe.txt" + - name: Upload Artifact uses: actions/upload-artifact@v3 with: diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml index 90495b5..711785b 100644 --- a/.github/workflows/build-windows.yml +++ b/.github/workflows/build-windows.yml @@ -65,6 +65,15 @@ jobs: echo "SHORT_SHA=${SHORT_SHA}" >> $GITHUB_ENV mv Argyll_V*_win64_exe.zip "Argyll_${TAG}_${SHORT_SHA}_win64_exe.zip" + - name: Verify Package Contents + run: | + ZIP_FILE=$(ls Argyll_*_win64_exe.zip) + echo "Verifying contents of ${ZIP_FILE}..." + unzip -l "${ZIP_FILE}" | grep "usb/ArgyllCMS.inf" + unzip -l "${ZIP_FILE}" | grep "usb/bin/amd64/libusb0.sys" + unzip -l "${ZIP_FILE}" | grep "doc/ArgyllDoc.html" + unzip -l "${ZIP_FILE}" | grep "ReadMe.txt" + - name: Upload Artifact uses: actions/upload-artifact@v4 with: diff --git a/makepackagebin.sh b/makepackagebin.sh index 30da71e..f7beac1 100755 --- a/makepackagebin.sh +++ b/makepackagebin.sh @@ -167,13 +167,21 @@ fi rm -rf $TOPDIR mkdir $TOPDIR +# Ensure catalog copies exist if needed for Windows packaging +if [ -d usb ] ; then + if [ -f usb/ArgyllCMS.cat ] ; then + [ ! -f usb/ArgyllCMS_x64.cat ] && cp usb/ArgyllCMS.cat usb/ArgyllCMS_x64.cat + [ ! -f usb/ArgyllCMS_arm64.cat ] && cp usb/ArgyllCMS.cat usb/ArgyllCMS_arm64.cat + fi +fi + # Collect the names of all the files that we're going to package -unset topfiles; for i in `cat binfiles`; do topfiles="$topfiles ${i}"; done -unset docfiles; for i in `cat doc/afiles`; do docfiles="$docfiles doc/${i}"; done +unset topfiles; for i in `tr -d '\r' < binfiles`; do topfiles="$topfiles ${i}"; done +unset docfiles; for i in `tr -d '\r' < doc/afiles`; do docfiles="$docfiles doc/${i}"; done unset usbfiles; for j in ${USBDIRS}; do if [ ${j} ]; then - for i in `cat ${j}/${USBBINFILES}`; do usbfiles="$usbfiles ${j}/${i}"; done + for i in `tr -d '\r' < ${j}/${USBBINFILES}`; do usbfiles="$usbfiles ${j}/${i}"; done fi done @@ -183,16 +191,16 @@ allfiles="${topfiles} bin/* ref/* ${docfiles} ${usbfiles}" for i in ${allfiles}; do path=${i%/*} # extract path without filename file=${i##*/} # extract filename - if [ $path = $i ] ; then + if [ "$path" = "$i" ] ; then path= fi - if [ X$path != "X" ] ; then - mkdir -p $TOPDIR/${path} + if [ X"$path" != "X" ] ; then + mkdir -p "$TOPDIR/${path}" fi - if [ X${file} = "Xafiles" ] ; then + if [ X"${file}" = "Xafiles" ] ; then continue fi - cp $i $TOPDIR/$i + cp "$i" "$TOPDIR/$i" || { echo "Failed to copy $i to $TOPDIR/$i"; exit 1; } done # Create the package diff --git a/usb/ArgyllCMS_arm64.cat b/usb/ArgyllCMS_arm64.cat new file mode 100644 index 0000000000000000000000000000000000000000..a1c607cc0be3e150b00f18ee6daef32c93dabad8 GIT binary patch literal 3803 zcmc&$O=whC6h80eWpqL^W>KgO5~`pJjq$uU?`OuJ8fV^w*jfxRn4m&2Mn#Mw{-K5z znHCo=)Q#XmAuXcNpPdDTZUjLW?hO9mBG6T#E(;>K@H_8~Go$n7-b@kYax?edckg%4 zJ>U7x370cZQt6fFhR(h0G8ULK<;(*vXYQGXVG{;-Qt4GG!!pW2hkNd!*7EfV1K_}=K{xbFB_cS^Ye_K6k8kW70H}K-Rl||gqX134FSihKO ziI;LZ)xIjzX7;p`_1XD>MLmB$ef0a~GjqHC`s3Bb+bOTeg}Yhv<kvIUV;y0 zWTS<+Le`4#SAdcDzKHI^K}B3F9xtJNZ<;2EGOk%8MSKu<7jYm2yc~@|3pnIfno#GW z7XTJUzcMRDph99PGDt3oNGkDHb@m%JbAJO#OLo&y+7Du;(Du+F5Y!La4%0q)f2n$2 zhzi)_?z)vP5(s*D<^JP)7pDIUzZu=xwX^hM`47Ln{^$gS@Pve`gu4re#{_xs@c$zS zDiSB>(FHO9K|V+bu_7193genA8b`D_AWc|yv1bq~E({XIxe4U0hrkp;`<@6CAuEr;FfmPsvUQ2R8EeD7g8JZubVe}k` z?4#|7_+v;FyQ?cfWdse3yn`5W0oi4U#%MG6bSPIr?u*mhE;`pN{tyb!;};<37cz}`!Jh?-C9h)8Kwgpvru~t6D0{P%71D*y;d<@y`63|OopHW zSXHyriR=vYnAuh_Jw2w=Dy9@p4exfVnDgL>TgBAIr%n0hm^sA!o;r>gvB@a^nz!4{ zbtDNj2~!*MHYs$Jj5&|DH`P&+on927+P62=Q4(gHMYNa-9W}mP%GNyIuFz2c6&ly0vsJ}2?+JhG}5Q=y||OeygR)u^LdI}|EPLKJ^$5S!K_M&^9? z-G0P)UWceqP%>gphp5m`GGdfB8>@QFj|%m?k0^SS7}EGrp`9eeO087cs8Eg%Zn!QY kKgO5~`pJjq$uU?`OuJ8fV^w*jfxRn4m&2Mn#Mw{-K5z znHCo=)Q#XmAuXcNpPdDTZUjLW?hO9mBG6T#E(;>K@H_8~Go$n7-b@kYax?edckg%4 zJ>U7x370cZQt6fFhR(h0G8ULK<;(*vXYQGXVG{;-Qt4GG!!pW2hkNd!*7EfV1K_}=K{xbFB_cS^Ye_K6k8kW70H}K-Rl||gqX134FSihKO ziI;LZ)xIjzX7;p`_1XD>MLmB$ef0a~GjqHC`s3Bb+bOTeg}Yhv<kvIUV;y0 zWTS<+Le`4#SAdcDzKHI^K}B3F9xtJNZ<;2EGOk%8MSKu<7jYm2yc~@|3pnIfno#GW z7XTJUzcMRDph99PGDt3oNGkDHb@m%JbAJO#OLo&y+7Du;(Du+F5Y!La4%0q)f2n$2 zhzi)_?z)vP5(s*D<^JP)7pDIUzZu=xwX^hM`47Ln{^$gS@Pve`gu4re#{_xs@c$zS zDiSB>(FHO9K|V+bu_7193genA8b`D_AWc|yv1bq~E({XIxe4U0hrkp;`<@6CAuEr;FfmPsvUQ2R8EeD7g8JZubVe}k` z?4#|7_+v;FyQ?cfWdse3yn`5W0oi4U#%MG6bSPIr?u*mhE;`pN{tyb!;};<37cz}`!Jh?-C9h)8Kwgpvru~t6D0{P%71D*y;d<@y`63|OopHW zSXHyriR=vYnAuh_Jw2w=Dy9@p4exfVnDgL>TgBAIr%n0hm^sA!o;r>gvB@a^nz!4{ zbtDNj2~!*MHYs$Jj5&|DH`P&+on927+P62=Q4(gHMYNa-9W}mP%GNyIuFz2c6&ly0vsJ}2?+JhG}5Q=y||OeygR)u^LdI}|EPLKJ^$5S!K_M&^9? z-G0P)UWceqP%>gphp5m`GGdfB8>@QFj|%m?k0^SS7}EGrp`9eeO087cs8Eg%Zn!QY k