chattr makes cygport slow
ASSI
Stromeko@nexgo.de
Sat Jul 8 14:22:59 GMT 2023
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
More information about the Cygwin-apps
mailing list