Open zomgugoff opened 1 month ago
Hmm....
Not sure whats going on here for you....
If you look at the latest Github Actions build --- that build seems ok -- I don't see any errors in the log outputs (https://github.com/vipoo/yellow-msx-series-for-rc2014/actions/runs/10155854765)
Are you using the same docker image version at the github action script? -- have a look at the file (https://github.com/vipoo/yellow-msx-series-for-rc2014/blob/main/.github/workflows/yellow-msx.yml)
That is using docker image versioned: vipoo/yellow-msx-rc2014-tool-chain:0.0.21
Perhaps I have an issue with the latest docker image. (Will investigate)
Can you share what commands you issued to attempt to build?
Dean
correction 0.0.21
is the latest image, that's been pushed. So that should be working (as it does in github actions)
So I can only suggest you look at the github actions yml config file, to guide on the build script.
Try running the specific docker run ....
commands, as detailed in the action yml - see if that helps or highlights the issue
Dean.
I was running the docker command from the msx subdirectory as directed on https://github.com/vipoo/yellow-msx-series-for-rc2014/tree/main/msx.
Image is the current version:
REPOSITORY TAG IMAGE ID CREATED SIZE
vipoo/yellow-msx-rc2014-tool-chain 0.0.21 bddb35852aeb 5 months ago 3.95GB
vipoo/yellow-msx-rc2014-tool-chain latest bddb35852aeb 5 months ago 3.95GB
Errors are occurring in the build-msx-roms and build-release-candidate parts. Not every rom fails, but there are many that do. Just a guess, but it sort of looks like either the source was updated for a newer version of the compiler, or the compiler updated and the syntax has changed.
Very strange indeed.
I am unable to reproduce it.
The version of compiler is locked within the docker image. That's the same docker image that the Github-Action uses.
The docker image contains all the build tools,. compilers, assemblers etc. So should be the same for all environments
Your host's current working directory is mapped/mounted as /src
within the running docker image - there sometimes can be user/permission mapping problems from host to docker - but that usually results in errors where it can't write output.
Here is the direct docker run commands to run - they also have the -B
to force it to rebuild everything. Run this is the root directory of the project.
docker run --rm --privileged=true -v ./:/src/ -t vipoo/yellow-msx-rc2014-tool-chain:0.0.21 make -C msx apps -B
docker run --rm --privileged=true -v ./:/src/ -t vipoo/yellow-msx-rc2014-tool-chain:0.0.21 make -C msx -B
And also, I assume you were able to eventually pull all the submodule ok?
Another thing to try, is to disable the force parallel builds. I don't have that as a make variable. So you will need to manually modify the various makefiles - search for the switch -j
and remove it. (I tried running with -j0, but it doesnt seem to pass down to the child-make invocations)
Search for these lines in the Makefile
(s) and Makefile-app.mk
pmsxsysromimages:
- @$(MAKE) -j -O msxsysromimages --no-print-directory
+ @$(MAKE) -O msxsysromimages --no-print-directory
- $(MAKE) ./bin/$1.nextor.rom -O -j --no-print-directory
+ $(MAKE) ./bin/$1.nextor.rom -O --no-print-directory
- BUILD_TYPE=std $(MAKE) ../bin/mfr.nextor-2.1.1.rom -O -j --no-print-directory -f Makefile-rc2014.mk
+ BUILD_TYPE=std $(MAKE) ../bin/mfr.nextor-2.1.1.rom -O --no-print-directory -f Makefile-rc2014.mk
- RTC=$2 COUNTRY=$1 $(MAKE) --no-print-directory ./working/$1-$2-rtc/main.rom ./working/$1-$2-rtc/optrom.rom ./working/$1-$
2-rtc/subrom.rom -O -j
- cp -up ./working/$1-$2-rtc/main.rom ../bin/$1-$2-rtc-main.rom
+ RTC=$2 COUNTRY=$1 $(MAKE) --no-print-directory ./working/$1-$2-rtc/main.rom ./working/$1-$2-rtc/optrom.rom ./working/$1-$
2-rtc/subrom.rom -O cp -up ./working/$1-$2-rtc/main.rom ../bin/$1-$2-rtc-main.rom
- zip -j ../release/msx-rc2014-$${version}.zip ./bin/*.jed
- zip -j ../release/msx-rc2014-$${version}.zip ./bin/*.doc
- zip -j ../release/msx-rc2014-$${version}.zip ./bin/*.com
- zip -j ../release/msx-rc2014-$${version}.zip ./bin/msxsyssrc-*.rom
- zip -j ../release/msx-rc2014-$${version}.zip ./bin/yellow-*.rom
- zip -j ../release/msx-rc2014-$${version}.zip ./bin/rcmusic.rom
+ zip ../release/msx-rc2014-$${version}.zip ./bin/*.jed
+ zip ../release/msx-rc2014-$${version}.zip ./bin/*.doc
+ zip ../release/msx-rc2014-$${version}.zip ./bin/*.com
+ zip ../release/msx-rc2014-$${version}.zip ./bin/msxsyssrc-*.rom
+ zip ../release/msx-rc2014-$${version}.zip ./bin/yellow-*.rom
+ zip ../release/msx-rc2014-$${version}.zip ./bin/rcmusic.rom
- $(MAKE) --no-print-directory -j -C apps
+ $(MAKE) --no-print-directory -C apps
Can you tell me what host OS you have? CPU/Threads? How many threads does your CPU have?
Yes, I was able to install the submodules. Build errors occurred a lot earlier with submodules missing.
I'm running on Arch, 8 cores/16 threads.
Building with the -j options removed, I'm still getting errors. Strangely, re-running make without -B after the failures results in built files. I tested the msxsyssrc-rc2014-usa-with-rtc.rom file and it seems to work fine on hardware. But, I wonder if some functionality is missing.
Sounds like it got there in the end -- phew... - sorry that it was such a hassle for you.
I suspect if the build completed without error - then you do have a valid rom image.
I can only guess there is some subtle race condition in the Makefile that you are getting. And it takes a couple of tries to complete. I will try and see if I can reproduce --- but unless I can reproduce - not sure how to 'fix' it.
I will look at adding an option to force single thread for the Make script.
As I mention, this project builds on Github Actions. When a job kicks off (on every push), it builds from a complete clean environment - so I find it strange you have found such a build issue. Docker was meant to 'solve' this. Perhaps its the CPU/thread count difference. Who knows!
At least its kind of working for you. I might find some time tomorrow to have a look.
This original issue, may have been due to a missing dependency rule in the make file. Hopefully the commit bcefd16 will fix this.
I also added (f32941f) to allow the use of an optional variable switch to force the build to run single threaded only - it will take a long time to build first time. Just export an environment variable called JOBS and assigned it to "-j1"
eg: export JOBS="-j1"
Last build ran without fatal errors. Make still throws an error at the end of the build but I think it's related to the docs.
I believe you are seeing the Latex Warning messages - I would love to be able to supress them. If you re-run the make - you should not see the Latex warnings - as the docs are unchanged and dont need to be re-built.
While running the supplied docker command to build roms, the assmebler and linker report fatal errors and undefined globals. Below are 2 examples