Jon Turney via Cygwin-apps writes: > So, the idea here is that we try to ensure it's on, at least for the > working directory.
That IMHO should only be done when the working directory is created, but not retroactively applied to an existing workdir. > Skipping it when 'finish' is used isn't right, because then 'finish > all' wouldn't work as desired. But yeah, it seems that this is in the > wrong place. I'll look into moving it. Meanwhile I've done this: --8<---------------cut here---------------start------------->8--- if [ $OSTYPE = "cygwin" ] then + [ -n "$(find ${workdir} -maxdepth 0 -empty)" ] && chattr -fR +C ${workdir} >/dev/null 2>&1 || true fi --8<---------------cut here---------------end--------------->8--- I think it should be moved into a function that can be called before the prep command, but I haven't actually tried it for a longer time or checked what tests need changing due to the extra output: --8<---------------cut here---------------start------------->8--- >From 4be00357be8cb14493413b7c8c80777671c21e5d Mon Sep 17 00:00:00 2001 Subject: [PATCH] cygport.in: move case-sensitivity testing / enabling into functions --- bin/cygport.in | 46 ++++++++++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/bin/cygport.in b/bin/cygport.in index 02e9b7bf..a6dabc91 100755 --- a/bin/cygport.in +++ b/bin/cygport.in @@ -577,25 +577,36 @@ declare -r pkg_count=${#pkg_name[*]}; # this requires workdir to be already defined mkdir -p ${workdir} -if [ $OSTYPE = "cygwin" ] -then - chattr -fR +C ${workdir} >/dev/null 2>&1 || true -fi - -rm -f ${workdir}/.probe_case_sensitivity -touch ${workdir}/.PROBE_CASE_SENSITIVITY -probe=$( [ -f ${workdir}/.probe_case_sensitivity ] && echo "failed" || echo "" ) -rm -f ${workdir}/.PROBE_CASE_SENSITIVITY -if [ -n "$probe" ] -then +__enable_case_sensitivity() { + inform "Trying to enable case sensitivity on ${workdir}" + if [ $OSTYPE = "cygwin" ] + then + [ -n "$(find ${workdir} -maxdepth 0 -empty)" ] && + chattr -fR +C ${workdir} >/dev/null 2>&1 || true + __probe_case_sensitivity + fi +} + +__probe_case_sensitivity() { + mkdir -p ${workdir} + rm -f ${workdir}/.probe_case_sensitivity + touch ${workdir}/.PROBE_CASE_SENSITIVITY + local probe=$( [ -f ${workdir}/.probe_case_sensitivity ] && echo "failed" || echo "" ) + rm -f ${workdir}/.PROBE_CASE_SENSITIVITY + if [ -n "$probe" ] + then if defined _CYGPORT_RESTRICT_case_insensitive_ then - error "Package ${NAME} cannot be built on a case-insensitive filesystem"; + error "Package ${NAME} cannot be built on a case-insensitive filesystem"; else - warning "Building on a case-insensitive filesystem"; + warning "Building on a case-insensitive filesystem"; fi -fi -unset probe + false + else + inform "Building on a case-sensitive filesystem"; + true + fi +} # this requires S and B to be already defined if ! defined _CYGPORT_RESTRICT_debuginfo_ @@ -638,15 +649,18 @@ while (( arg_n < argc )) do case ${argv[${arg_n}]} in downloadall|fetchall|wgetall|getall) + __probe_case_sensitivity || __enable_case_sensitivity; __src_fetch; _status=$?; ;; download|fetch|wget|get) + __probe_case_sensitivity || __enable_case_sensitivity; __DL_ONLY_MISSING=1 __src_fetch; _status=$?; ;; prepare|unpack|prep) - __stage Preparing; + __probe_case_sensitivity || __enable_case_sensitivity; + __stage Preparing; __src_prep; _status=$?; ;; -- 2.41.0 --8<---------------cut here---------------end--------------->8--- > I think there's possibly something else going wrong if it's taking 5 > minutes, as that seems excessive. Try it on the gcc build dir… Regards, Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ Factory and User Sound Singles for Waldorf Q+, Q and microQ: http://Synth.Stromeko.net/Downloads.html#WaldorfSounds