-
Notifications
You must be signed in to change notification settings - Fork 80
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Build times out waiting for string #640
Conversation
I should also say this is with Ubuntu 17.10 (Artful Aardvark.) |
There is a timeout defined in build.tcl ( |
Thanks. I added an extra 0 to that, setting the timeout to 1000. The outcome was the same although it took longer to get there. I also tried replacing expect "EINIT" with sleep 75 to see if that might get beyond this stage but it still timed out. I also tried setting it to expect "IT IS NOW" in case it's looking just at the last line but that, too, did not make a difference. It still times out. |
I think we need some expect/TCL debugging to see what's really going on. I don't have such expertise myself. |
https://wiki.tcl.tk/3173 suggests to invoke expect with -d. Other hints are to use log_file, log_user, and exp_internal. Some more here: http://wiki.tcl.tk/473#pagetoce1b59b05 |
Oh yes, that was helpful. Doing using -d shows that it is not hanging over EINIT as originally thought but it's waiting for the next thing in build.tcl. It is timing out waiting for :EJ which never appears. expect: does " >\r\nIT IS NOW 3:09:15 PM EST, FRIDAY, JAN 26,20" (spawn_id exp10) match exact string ":EJ"? no The last command timed out. |
In that case, I wonder why your build doesn't generate the
|
Maybe we can look for |
Hello @36bit, I have made a branch called lars/colon-ej. Can you test it and see if you get past this section of the build script? Maybe it'll grind to a halt further on, but let's try this first. |
It does indeed seem to get further:
From doing the build with the debug switch:
|
Thanks. Bad luck there, the "ITS IS NOW..." message interrupts the :rename command. Does this happen consistently at this point? |
It does seem to. I've tried it 4 times and it seems to vary: It might chop [pure and the closing ] onto a separate line or maybe [pure] will be fine and the 162 will go onto a new line. |
@eswenson1 saw something similar when trying to build in macOS. |
I think the
|
I was experimenting with generating library files from EMACS. There was no So if there is no I will now check if the clock is set correctly on every boot. |
The clock is not set correctly when running in SIMH after a call to maybe_pdset in build.tcl. |
Hello @36bit, Can you try the lars/pdset branch? |
|
The process was the same except for checking out the branch: git clone https://github.com/PDP-10/its.git |
Thanks for testing! |
Can you check timestamps of :EJ and COMPRS files? I.e. log in and list the EMACS and EMACS1 directories. |
I have now run into this myself, so I had a chance to examine the state of the system more closely. It seems files written by DUMP have timestamps a few hours later than what the system clock is set to. This wrecks havoc with EMACS compression. It only compresses files when needed, i.e. the source files are old. In this case it looks to EMACS as if they are new. |
I'm checking a successful build and see that the EMACS1 file timestamps are weeks old. They match the files from the Unix host. I'm rerunning a build on my machine with timestamps updated to "right now". Maybe a fix would be to set back all timestamps in the src/emacs1 directory. |
Still works on my machine, but I see the timestamps in ITS are six hours before those in Unix. |
Setting back the timestamps two days seems to be a workaround on the previously failing build host. |
@36bit, can you test this? |
5991d9b
to
eeaf034
Compare
This "24 hours ago" workaround didn't work for me on a fresh repository. So apparently it's something about checking out new files with git, and then starting a build. I'll check in more detail what's going on with the timestamps.
|
I was touching the filestamps of the wrong files. It's not the source files in EMACS1, but the purified files in EMACS. |
e9a1c2b
to
f3421ef
Compare
I tested this a few times by checkout out a fresh repository and building. It should work now. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is gross!
Makefile
Outdated
@@ -66,6 +66,8 @@ $(OUT)/ka-minsys.tape: $(ITSTAR) | |||
$(OUT)/sources.tape: $(ITSTAR) build/$(EMULATOR)/stamp $(OUT)/syshst/$(H3TEXT) | |||
mkdir -p $(OUT) | |||
rm -f src/*/*~ | |||
touch -d "24 hours ago" bin/emacs/einit.* |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That kind of -d is a GNU extension - it won't work with (e.g.) FreeBSD's touch.
$ touch -d "24 hours ago" foo
touch: out of range or illegal time specification: YYYY-MM-DDThh:mm:SS[.frac][tz]
Ok, instead of a gross hack which doesn't work on FreeBSD, I'll use the actual original filestamps for those three files. See also #275. |
a3d1c14
to
f141662
Compare
I tried to use itstar's DIR.LIST feature, but it wouldn't work with just those three files. Because then it only added those three files to the tape image, and ignored those files not mentioned in DIR.LIST. |
@atsampson, can you test the "tmp" commit on FreeBSD? If it works, I'll squash it in. |
Yep, that touch syntax works fine on FreeBSD:
|
Also make the build script ensure that EMACS; [PURE], [PRFY], and EINIT are built.
f141662
to
d55db2c
Compare
It always seems to die for me in the same place, waiting on the string EINIT even though it's right there.
build-log.txt
Steps to reproduce:
git clone https://github.com/PDP-10/its.git
cd its
git submodule init
git submodule update
make EMULATOR=klh10
I also tried building with simh. It still dies as the same place waiting for EINIT.