Re: [PATCH] Re: Eggs not installing on msys-mingw32
On Mon, Oct 30, 2023, 4:04 PM Mario Domenech Goulart wrote: > Hi Matt, > > On Mon, 30 Oct 2023 09:43:00 -0400 Matt Welland > wrote: > > > On Mon, Oct 30, 2023 at 9:37 AM wrote: > > > > > How about > > > "empty egg-info file, possibly due to an aborted egg-install - please > remove the file and reinstall the corresponding egg"? > > > > > > Rationale: Matt's case. check-errors.egg-info was empty, but the > > > installation of base64 was failing. If Matt had removed > > > check-errors.egg-info and retried installing base64, the installation > of > > > base64 would work, but check-errors would still be broken > > > (chicken-status and chicken-uninstall would ignore it, for example). > > > > Sure, whatever - feel free to change the message, if you think that > makes it clearer. > > > > My reporting on this was incorrect. Sorry for creating the churn. I > believe there is something going genuinely wrong with check-errors. One > hypothesis > > I have is that Windows is seeing the file name containing "errors" and > doing something stupid and annoying. I am not experienced with Windows and > have > > no clue what that thing might be but I'll keep digging. > > Nothing to be sorry about. I'm afraid this issue might not related to > Windows, exclusively. I took a look at IRC logs and and saw that we had > at least four cases like that, two on Windows and two on Linux. We have > traces of three of those issues in paste.call-cc.org and in pastebin.com: > > * > http://paste.call-cc.org/paste?id=476adbc8ef7b47d8a7ce9ccd7dc201d4737de7b7 > * > http://paste.call-cc.org/paste?id=a7c9d3bd2dbc8837b02b418a33f6d7c5ca9d9455 > * https://pastebin.com/e2BdgGGC > > I think we have a bug somewhere. > > The eggs that triggered the problem (i.e., the ones that had their > .egg-info file empty), according to the records we have, are: > > * apropos > * check-errors > * math > * srfi-45 > Well, maybe there is a silver lining here, I can currently reliably reproduce the problem! One hypothesis I'm looking at is replacing calls using with-input-from-file and with-output-to-file with open-*-file ... close loops for the reading and creation of the egg-info files. The reason is that I've seen problems on creation/reading of files on NFS that *felt* like they were improved by replacing the calls as described. I found where the egg-info was read but not where it was created. Can you give me an idea as to where the egg-info is being written or copied? It is a long shot but maybe worth a try. > I've have pushed the patch submitted by Felix, as I think it improves > the situation for users. With it, users get a better error message and > have at least a chance to work around the issue. > > I've created https://bugs.call-cc.org/ticket/1827 for that issue. > > All the best. > Mario > -- > http://parenteses.org/mario >
Re: [PATCH] Re: Eggs not installing on msys-mingw32
Hi Matt, On Mon, 30 Oct 2023 09:43:00 -0400 Matt Welland wrote: > On Mon, Oct 30, 2023 at 9:37 AM wrote: > > > How about > > "empty egg-info file, possibly due to an aborted egg-install - please > remove the file and reinstall the corresponding egg"? > > > > Rationale: Matt's case. check-errors.egg-info was empty, but the > > installation of base64 was failing. If Matt had removed > > check-errors.egg-info and retried installing base64, the installation of > > base64 would work, but check-errors would still be broken > > (chicken-status and chicken-uninstall would ignore it, for example). > > Sure, whatever - feel free to change the message, if you think that makes it > clearer. > > My reporting on this was incorrect. Sorry for creating the churn. I believe > there is something going genuinely wrong with check-errors. One hypothesis > I have is that Windows is seeing the file name containing "errors" and doing > something stupid and annoying. I am not experienced with Windows and have > no clue what that thing might be but I'll keep digging. Nothing to be sorry about. I'm afraid this issue might not related to Windows, exclusively. I took a look at IRC logs and and saw that we had at least four cases like that, two on Windows and two on Linux. We have traces of three of those issues in paste.call-cc.org and in pastebin.com: * http://paste.call-cc.org/paste?id=476adbc8ef7b47d8a7ce9ccd7dc201d4737de7b7 * http://paste.call-cc.org/paste?id=a7c9d3bd2dbc8837b02b418a33f6d7c5ca9d9455 * https://pastebin.com/e2BdgGGC I think we have a bug somewhere. The eggs that triggered the problem (i.e., the ones that had their .egg-info file empty), according to the records we have, are: * apropos * check-errors * math * srfi-45 I've have pushed the patch submitted by Felix, as I think it improves the situation for users. With it, users get a better error message and have at least a chance to work around the issue. I've created https://bugs.call-cc.org/ticket/1827 for that issue. All the best. Mario -- http://parenteses.org/mario
Re: [PATCH] Re: Eggs not installing on msys-mingw32
On Mon, Oct 30, 2023 at 9:37 AM wrote: > > How about > > "empty egg-info file, possibly due to an aborted egg-install - please > remove the file and reinstall the corresponding egg"? > > > > Rationale: Matt's case. check-errors.egg-info was empty, but the > > installation of base64 was failing. If Matt had removed > > check-errors.egg-info and retried installing base64, the installation of > > base64 would work, but check-errors would still be broken > > (chicken-status and chicken-uninstall would ignore it, for example). > > Sure, whatever - feel free to change the message, if you think that makes > it clearer. > My reporting on this was incorrect. Sorry for creating the churn. I believe there is something going genuinely wrong with check-errors. One hypothesis I have is that Windows is seeing the file name containing "errors" and doing something stupid and annoying. I am not experienced with Windows and have no clue what that thing might be but I'll keep digging. > > felix > > -- -- Complexity is your enemy. Any fool can make something complicated. It is hard to keep things simple. - Richard Branson.
Re: [PATCH] Re: Eggs not installing on msys-mingw32
> How about > "empty egg-info file, possibly due to an aborted egg-install - please remove > the file and reinstall the corresponding egg"? > > Rationale: Matt's case. check-errors.egg-info was empty, but the > installation of base64 was failing. If Matt had removed > check-errors.egg-info and retried installing base64, the installation of > base64 would work, but check-errors would still be broken > (chicken-status and chicken-uninstall would ignore it, for example). Sure, whatever - feel free to change the message, if you think that makes it clearer. felix
Re: [PATCH] Re: Eggs not installing on msys-mingw32
Copying the check-errors.egg-info file from another build into the lib/chicken/11 directory seems to have genuinely let me move forward. Now I'm getting a different error on the sqlite3 egg "The filename, directory name, or volume label syntax is incorrect." The path it is complaining about has a mix of forward and backward slashes. Installing sql-de-lite worked fine so the sqlite3 problem is unrelated I think. On Mon, Oct 30, 2023 at 9:21 AM Matt Welland wrote: > I think I was premature in concluding that removing the empty files was > sufficient to fix this. I can remove the empty file but the moment I hit an > egg that depends on check-errors it seems to get stuck. > > I turned off the continuous virus feature and I tried using > CHICKEN_EGG_CACHE to put the cache in /tmp and each time it seems to go > further but fails on check-errors.egg-info. Note that check-errors appears > to be properly installed as it imports fine. I think something is > attempting to remove or rewrite the check-errors.egg-info file and that > causes the problem, at least that is currently my best guess. > > Unfortunately I don't think that stopping and reporting the empty file > will be sufficient but I will try the patch. Any suggestions as to what to > try next? > > On Mon, Oct 30, 2023 at 9:14 AM Mario Domenech Goulart < > ma...@parenteses.org> wrote: > >> On Mon, 30 Oct 2023 14:01:44 +0100 felix.winkelm...@bevuta.com wrote: >> >> >> That was it. Thanks. I do have to keep running: >> >> >> >> find /software/ -name \*.egg-info -empty -delete -print >> >> >> >> as check-errors.egg-info seems to be a pervasive problem. Maybe it >> would be >> >> worth it to add a defence against this? >> > >> > Sorry - wrong patch, this is the right one. >> > >> > >> > felix >> > >> > >> > From 8a2a82a8171744546badacaa297bcf754bff3eba Mon Sep 17 00:00:00 2001 >> > From: felix >> > Date: Mon, 30 Oct 2023 14:00:41 +0100 >> > Subject: [PATCH] handle case when egg-info file is empty >> > >> > --- >> > egg-information.scm | 7 +-- >> > 1 file changed, 5 insertions(+), 2 deletions(-) >> > >> > diff --git a/egg-information.scm b/egg-information.scm >> > index 6f5f7cb9..1e7f8aec 100644 >> > --- a/egg-information.scm >> > +++ b/egg-information.scm >> > @@ -34,8 +34,11 @@ >> > (if (file-exists? fname*) fname* fname))) >> > >> > (define (load-egg-info fname) >> > - (let ((fname (locate-egg-file fname))) >> > -(with-input-from-file fname read))) >> > + (let* ((fname (locate-egg-file fname)) >> > + (info (with-input-from-file fname read))) >> > +(if (eof-object? info) >> > +(error "empty egg-info file, possibly due to an aborted >> egg-install - please remove the file and retry" fname) >> > +info))) >> >> How about >> "empty egg-info file, possibly due to an aborted egg-install - please >> remove the file and reinstall the corresponding egg"? >> >> Rationale: Matt's case. check-errors.egg-info was empty, but the >> installation of base64 was failing. If Matt had removed >> check-errors.egg-info and retried installing base64, the installation of >> base64 would work, but check-errors would still be broken >> (chicken-status and chicken-uninstall would ignore it, for example). >> >> All the best. >> Mario >> -- >> http://parenteses.org/mario >> > > > -- > -- > Complexity is your enemy. Any fool can make something complicated. > It is hard to keep things simple. - Richard Branson. > -- -- Complexity is your enemy. Any fool can make something complicated. It is hard to keep things simple. - Richard Branson.
Re: [PATCH] Re: Eggs not installing on msys-mingw32
I think I was premature in concluding that removing the empty files was sufficient to fix this. I can remove the empty file but the moment I hit an egg that depends on check-errors it seems to get stuck. I turned off the continuous virus feature and I tried using CHICKEN_EGG_CACHE to put the cache in /tmp and each time it seems to go further but fails on check-errors.egg-info. Note that check-errors appears to be properly installed as it imports fine. I think something is attempting to remove or rewrite the check-errors.egg-info file and that causes the problem, at least that is currently my best guess. Unfortunately I don't think that stopping and reporting the empty file will be sufficient but I will try the patch. Any suggestions as to what to try next? On Mon, Oct 30, 2023 at 9:14 AM Mario Domenech Goulart wrote: > On Mon, 30 Oct 2023 14:01:44 +0100 felix.winkelm...@bevuta.com wrote: > > >> That was it. Thanks. I do have to keep running: > >> > >> find /software/ -name \*.egg-info -empty -delete -print > >> > >> as check-errors.egg-info seems to be a pervasive problem. Maybe it > would be > >> worth it to add a defence against this? > > > > Sorry - wrong patch, this is the right one. > > > > > > felix > > > > > > From 8a2a82a8171744546badacaa297bcf754bff3eba Mon Sep 17 00:00:00 2001 > > From: felix > > Date: Mon, 30 Oct 2023 14:00:41 +0100 > > Subject: [PATCH] handle case when egg-info file is empty > > > > --- > > egg-information.scm | 7 +-- > > 1 file changed, 5 insertions(+), 2 deletions(-) > > > > diff --git a/egg-information.scm b/egg-information.scm > > index 6f5f7cb9..1e7f8aec 100644 > > --- a/egg-information.scm > > +++ b/egg-information.scm > > @@ -34,8 +34,11 @@ > > (if (file-exists? fname*) fname* fname))) > > > > (define (load-egg-info fname) > > - (let ((fname (locate-egg-file fname))) > > -(with-input-from-file fname read))) > > + (let* ((fname (locate-egg-file fname)) > > + (info (with-input-from-file fname read))) > > +(if (eof-object? info) > > +(error "empty egg-info file, possibly due to an aborted > egg-install - please remove the file and retry" fname) > > +info))) > > How about > "empty egg-info file, possibly due to an aborted egg-install - please > remove the file and reinstall the corresponding egg"? > > Rationale: Matt's case. check-errors.egg-info was empty, but the > installation of base64 was failing. If Matt had removed > check-errors.egg-info and retried installing base64, the installation of > base64 would work, but check-errors would still be broken > (chicken-status and chicken-uninstall would ignore it, for example). > > All the best. > Mario > -- > http://parenteses.org/mario > -- -- Complexity is your enemy. Any fool can make something complicated. It is hard to keep things simple. - Richard Branson.
Re: [PATCH] Re: Eggs not installing on msys-mingw32
On Mon, 30 Oct 2023 14:01:44 +0100 felix.winkelm...@bevuta.com wrote: >> That was it. Thanks. I do have to keep running: >> >> find /software/ -name \*.egg-info -empty -delete -print >> >> as check-errors.egg-info seems to be a pervasive problem. Maybe it would be >> worth it to add a defence against this? > > Sorry - wrong patch, this is the right one. > > > felix > > > From 8a2a82a8171744546badacaa297bcf754bff3eba Mon Sep 17 00:00:00 2001 > From: felix > Date: Mon, 30 Oct 2023 14:00:41 +0100 > Subject: [PATCH] handle case when egg-info file is empty > > --- > egg-information.scm | 7 +-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/egg-information.scm b/egg-information.scm > index 6f5f7cb9..1e7f8aec 100644 > --- a/egg-information.scm > +++ b/egg-information.scm > @@ -34,8 +34,11 @@ > (if (file-exists? fname*) fname* fname))) > > (define (load-egg-info fname) > - (let ((fname (locate-egg-file fname))) > -(with-input-from-file fname read))) > + (let* ((fname (locate-egg-file fname)) > + (info (with-input-from-file fname read))) > +(if (eof-object? info) > +(error "empty egg-info file, possibly due to an aborted egg-install > - please remove the file and retry" fname) > +info))) How about "empty egg-info file, possibly due to an aborted egg-install - please remove the file and reinstall the corresponding egg"? Rationale: Matt's case. check-errors.egg-info was empty, but the installation of base64 was failing. If Matt had removed check-errors.egg-info and retried installing base64, the installation of base64 would work, but check-errors would still be broken (chicken-status and chicken-uninstall would ignore it, for example). All the best. Mario -- http://parenteses.org/mario
[PATCH] Re: Eggs not installing on msys-mingw32
> That was it. Thanks. I do have to keep running: > > find /software/ -name \*.egg-info -empty -delete -print > > as check-errors.egg-info seems to be a pervasive problem. Maybe it would be > worth it to add a defence against this? > > Sorry - wrong patch, this is the right one. felix From 8a2a82a8171744546badacaa297bcf754bff3eba Mon Sep 17 00:00:00 2001 From: felix Date: Mon, 30 Oct 2023 14:00:41 +0100 Subject: [PATCH] handle case when egg-info file is empty --- egg-information.scm | 7 +-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/egg-information.scm b/egg-information.scm index 6f5f7cb9..1e7f8aec 100644 --- a/egg-information.scm +++ b/egg-information.scm @@ -34,8 +34,11 @@ (if (file-exists? fname*) fname* fname))) (define (load-egg-info fname) - (let ((fname (locate-egg-file fname))) -(with-input-from-file fname read))) + (let* ((fname (locate-egg-file fname)) + (info (with-input-from-file fname read))) +(if (eof-object? info) +(error "empty egg-info file, possibly due to an aborted egg-install - please remove the file and retry" fname) +info))) ;;; lookup specific toplevel properties of egg-information -- 2.40.0
[PATCH] (was: Re: Eggs not installing on msys-mingw32)
> That was it. Thanks. I do have to keep running: > > find /software/ -name \*.egg-info -empty -delete -print > > as check-errors.egg-info seems to be a pervasive problem. Maybe it would be > worth it to add a defence against this? > Attached is a patch that catches at least this case. felix From 5a8cef35941109e5c5ee5d9596f855274185db30 Mon Sep 17 00:00:00 2001 From: felix Date: Mon, 30 Oct 2023 13:27:12 +0100 Subject: [PATCH] on *BSD, default C++ compiler to "c++" --- Makefile.bsd | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.bsd b/Makefile.bsd index 690ce8d2..d66d1f06 100644 --- a/Makefile.bsd +++ b/Makefile.bsd @@ -31,6 +31,7 @@ SRCDIR ?= ./ ARCH ?= $(shell sh $(SRCDIR)/config-arch.sh) C_COMPILER ?= cc +CXX_COMPILER ?= c++ # options C_COMPILER_OPTIONS ?= -fno-strict-aliasing -fwrapv -DHAVE_CHICKEN_CONFIG_H -- 2.40.0
Re: Eggs not installing on msys-mingw32
That was it. Thanks. I do have to keep running: find /software/ -name \*.egg-info -empty -delete -print as check-errors.egg-info seems to be a pervasive problem. Maybe it would be worth it to add a defence against this? On Mon, Oct 30, 2023 at 12:18 AM Mario Domenech Goulart < ma...@parenteses.org> wrote: > On Mon, 30 Oct 2023 06:53:05 +0100 Mario Domenech Goulart < > ma...@parenteses.org> wrote: > > > On Sun, 29 Oct 2023 20:22:53 -0700 Matt Welland > wrote: > > > >> I'm guessing I've done something wrong in my setup but some eggs did > install and some do not and I'm not sure what > >> I'm missing. > >> > >> MINGW32 ~ > >> $ chicken-install base64 > >> fetching base64 > >> C:\msys64\tmp\tempa4ea.8676\base64.egg > >> C:\msys64\tmp\tempa4ea.8676\base64.scm > >> C:\msys64\tmp\tempa4ea.8676\tests\run.scm > >> 3 File(s) copied > >> building base64 > >>c:/msys64/software/bin/csc -host -D compiling-extension -J -s > -regenerate-import-libraries -setup > >> -mode -I C:\Users\Owner\AppData\Local\chicken-install\base64 -C > -IC:\Users\Owner\AppData\Local\chick > >> en-install\base64 -O2 -d1 base64.scm -o > C:\Users\Owner\AppData\Local\chicken-install\base64\base64.s > >> o > >>c:/msys64/software/bin/csc -regenerate-import-libraries -M > -setup-mode -static -I C:\Users\Owner\ > >> AppData\Local\chicken-install\base64 -emit-link-file > C:\Users\Owner\AppData\Local\chicken-install\ba > >> se64\base64.link -host -D compiling-extension -c -unit base64 -D > compiling-static-extension -C -IC:\ > >> Users\Owner\AppData\Local\chicken-install\base64 -O2 -d1 base64.scm -o > C:\Users\Owner\AppData\Local\ > >> chicken-install\base64\base64.static.obj > >>c:/msys64/software/bin/csc -setup-mode -s -host -I > C:\Users\Owner\AppData\Local\chicken-install\b > >> ase64 -C -IC:\Users\Owner\AppData\Local\chicken-install\base64 -O2 -d0 > base64.import.scm -o C:\Users > >> \Owner\AppData\Local\chicken-install\base64\base64.import.so > >> > >> Error: (assq) bad argument type: #!eof > > > > I seem to remember seing such errors when .egg-info files get corrupted. > > I'd start by checking for abnormally small (or even empty) .egg-info > > files in the directories printed by > > > > $ csi -p '(begin (import (chicken platform)) (repository-path))' > > > > If you find a corrupted file, say for egg foo, just copy any other good > > .egg-info file over foo.egg-info and reinstall foo with `chicken-install > foo'. > > Actually simply removing the corrupted .egg-info file and installing its > corresponding egg again should do the trick. > > > Once the corrupted files have been fixed, you should be able to install > > eggs again. > > > All the best. > Mario > -- > http://parenteses.org/mario > > -- -- Complexity is your enemy. Any fool can make something complicated. It is hard to keep things simple. - Richard Branson.
Re: Eggs not installing on msys-mingw32
On Mon, 30 Oct 2023 06:53:05 +0100 Mario Domenech Goulart wrote: > On Sun, 29 Oct 2023 20:22:53 -0700 Matt Welland > wrote: > >> I'm guessing I've done something wrong in my setup but some eggs did install >> and some do not and I'm not sure what >> I'm missing. >> >> MINGW32 ~ >> $ chicken-install base64 >> fetching base64 >> C:\msys64\tmp\tempa4ea.8676\base64.egg >> C:\msys64\tmp\tempa4ea.8676\base64.scm >> C:\msys64\tmp\tempa4ea.8676\tests\run.scm >> 3 File(s) copied >> building base64 >>c:/msys64/software/bin/csc -host -D compiling-extension -J -s >> -regenerate-import-libraries -setup >> -mode -I C:\Users\Owner\AppData\Local\chicken-install\base64 -C >> -IC:\Users\Owner\AppData\Local\chick >> en-install\base64 -O2 -d1 base64.scm -o >> C:\Users\Owner\AppData\Local\chicken-install\base64\base64.s >> o >>c:/msys64/software/bin/csc -regenerate-import-libraries -M -setup-mode >> -static -I C:\Users\Owner\ >> AppData\Local\chicken-install\base64 -emit-link-file >> C:\Users\Owner\AppData\Local\chicken-install\ba >> se64\base64.link -host -D compiling-extension -c -unit base64 -D >> compiling-static-extension -C -IC:\ >> Users\Owner\AppData\Local\chicken-install\base64 -O2 -d1 base64.scm -o >> C:\Users\Owner\AppData\Local\ >> chicken-install\base64\base64.static.obj >>c:/msys64/software/bin/csc -setup-mode -s -host -I >> C:\Users\Owner\AppData\Local\chicken-install\b >> ase64 -C -IC:\Users\Owner\AppData\Local\chicken-install\base64 -O2 -d0 >> base64.import.scm -o C:\Users >> \Owner\AppData\Local\chicken-install\base64\base64.import.so >> >> Error: (assq) bad argument type: #!eof > > I seem to remember seing such errors when .egg-info files get corrupted. > I'd start by checking for abnormally small (or even empty) .egg-info > files in the directories printed by > > $ csi -p '(begin (import (chicken platform)) (repository-path))' > > If you find a corrupted file, say for egg foo, just copy any other good > .egg-info file over foo.egg-info and reinstall foo with `chicken-install foo'. Actually simply removing the corrupted .egg-info file and installing its corresponding egg again should do the trick. > Once the corrupted files have been fixed, you should be able to install > eggs again. > All the best. Mario -- http://parenteses.org/mario