papermario icon indicating copy to clipboard operation
papermario copied to clipboard

Improve error messages if deps or compilers are missing or out of date

Open Darxoon opened this issue 9 months ago • 1 comments

Currently, when papermario's dependencies (which are installed with install_deps or install_copilers) are out of date and not on the correct version, splat and ninja will just fail with obscure error messages, e.g.:

Error message with splat
configure: configuring version us
splat 0.21.5 (powered by spimdisasm 1.20.0)
Loading symbols (symbol_addrs): 100%|████████████████████████████████████████████████████████████████████████████████████| 26306/26306 [00:01<00:00, 15187.18it/s]
Scanning charset:   1%|█                                                                                                        | 11/1037 [00:00<00:46, 22.14it/s]
Traceback (most recent call last):
  File "/home/laura/projects/papermario/tools/build/configure.py", line 1440, in <module>
    configure.split(not args.no_split_assets, args.split_code, args.shift, args.debug)
  File "/home/laura/projects/papermario/tools/build/configure.py", line 424, in split
    split.main(
  File "/home/laura/projects/papermario-venv/lib/python3.11/site-packages/splat/scripts/split.py", line 528, in main
    do_scan(all_segments, rom_bytes, stats, cache)
  File "/home/laura/projects/papermario-venv/lib/python3.11/site-packages/splat/scripts/split.py", line 280, in do_scan
    segment.scan(rom_bytes)
  File "/home/laura/projects/papermario-venv/lib/python3.11/site-packages/splat/segtypes/common/group.py", line 131, in scan
    sub.scan(rom_bytes)
  File "/home/laura/projects/papermario/tools/splat_ext/pm_charset_palettes.py", line 27, in scan
    palette = N64SegPalette.parse_palette_bytes(data[i : i + 0x10])
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: type object 'N64SegPalette' has no attribute 'parse_palette_bytes'
Error message with ninja
[1/9486] cc_272 src/os/epirawdma.c
FAILED: ver/us/build/src/os/epirawdma.c.o 
bash -o pipefail -c 'COMPILER_PATH=tools/build/cc/gcc2.7.2/ tools/build/cc/gcc2.7.2//gcc -Iver/us/include -Iver/us/build/include -Iinclude -Isrc -Iassets/us -D_LANGUAGE_C -D_FINALROM -DVERSION=us -DF3DEX_GBI_2 -D_MIPS_SZLONG=32 -nostdinc  -DVERSION_US -c -G0 -mgp32 -mfp32 -mips3  -Wmissing-braces -Wimplicit -Wredundant-decls -Wstrict-prototypes -Wno-redundant-decls -O3 src/os/epirawdma.c -o ver/us/build/src/os/epirawdma.c.o && mips-linux-gnu-objcopy -N src/os/epirawdma.c ver/us/build/src/os/epirawdma.c.o'
bash: line 1: tools/build/cc/gcc2.7.2//gcc: No such file or directory
[2/9486] cc_272 src/os/epiwrite.c
FAILED: ver/us/build/src/os/epiwrite.c.o 
bash -o pipefail -c 'COMPILER_PATH=tools/build/cc/gcc2.7.2/ tools/build/cc/gcc2.7.2//gcc -Iver/us/include -Iver/us/build/include -Iinclude -Isrc -Iassets/us -D_LANGUAGE_C -D_FINALROM -DVERSION=us -DF3DEX_GBI_2 -D_MIPS_SZLONG=32 -nostdinc  -DVERSION_US -c -G0 -mgp32 -mfp32 -mips3  -Wmissing-braces -Wimplicit -Wredundant-decls -Wstrict-prototypes -Wno-redundant-decls -O3 src/os/epiwrite.c -o ver/us/build/src/os/epiwrite.c.o && mips-linux-gnu-objcopy -N src/os/epiwrite.c ver/us/build/src/os/epiwrite.c.o'
bash: line 1: tools/build/cc/gcc2.7.2//gcc: No such file or directory
[3/9486] cc_272 src/os/epilinkhandle.c
FAILED: ver/us/build/src/os/epilinkhandle.c.o 
bash -o pipefail -c 'COMPILER_PATH=tools/build/cc/gcc2.7.2/ tools/build/cc/gcc2.7.2//gcc -Iver/us/include -Iver/us/build/include -Iinclude -Isrc -Iassets/us -D_LANGUAGE_C -D_FINALROM -DVERSION=us -DF3DEX_GBI_2 -D_MIPS_SZLONG=32 -nostdinc  -DVERSION_US -c -G0 -mgp32 -mfp32 -mips3  -Wmissing-braces -Wimplicit -Wredundant-decls -Wstrict-prototypes -Wno-redundant-decls -O3 src/os/epilinkhandle.c -o ver/us/build/src/os/epilinkhandle.c.o && mips-linux-gnu-objcopy -N src/os/epilinkhandle.c ver/us/build/src/os/epilinkhandle.c.o'
bash: line 1: tools/build/cc/gcc2.7.2//gcc: No such file or directory
[4/9486] cc_272 src/os/piacs.c
FAILED: ver/us/build/src/os/piacs.c.o 
bash -o pipefail -c 'COMPILER_PATH=tools/build/cc/gcc2.7.2/ tools/build/cc/gcc2.7.2//gcc -Iver/us/include -Iver/us/build/include -Iinclude -Isrc -Iassets/us -D_LANGUAGE_C -D_FINALROM -DVERSION=us -DF3DEX_GBI_2 -D_MIPS_SZLONG=32 -nostdinc  -DVERSION_US -c -G0 -mgp32 -mfp32 -mips3  -Wmissing-braces -Wimplicit -Wredundant-decls -Wstrict-prototypes -Wno-redundant-decls -O3 src/os/piacs.c -o ver/us/build/src/os/piacs.c.o && mips-linux-gnu-objcopy -N src/os/piacs.c ver/us/build/src/os/piacs.c.o'
bash: line 1: tools/build/cc/gcc2.7.2//gcc: No such file or directory
[5/9486] cc_272 src/os/epidma.c
FAILED: ver/us/build/src/os/epidma.c.o 
bash -o pipefail -c 'COMPILER_PATH=tools/build/cc/gcc2.7.2/ tools/build/cc/gcc2.7.2//gcc -Iver/us/include -Iver/us/build/include -Iinclude -Isrc -Iassets/us -D_LANGUAGE_C -D_FINALROM -DVERSION=us -DF3DEX_GBI_2 -D_MIPS_SZLONG=32 -nostdinc  -DVERSION_US -c -G0 -mgp32 -mfp32 -mips3  -Wmissing-braces -Wimplicit -Wredundant-decls -Wstrict-prototypes -Wno-redundant-decls -O3 src/os/epidma.c -o ver/us/build/src/os/epidma.c.o && mips-linux-gnu-objcopy -N src/os/epidma.c ver/us/build/src/os/epidma.c.o'
bash: line 1: tools/build/cc/gcc2.7.2//gcc: No such file or directory
[6/9486] cc_272 src/os/pimgr.c
FAILED: ver/us/build/src/os/pimgr.c.o 
bash -o pipefail -c 'COMPILER_PATH=tools/build/cc/gcc2.7.2/ tools/build/cc/gcc2.7.2//gcc -Iver/us/include -Iver/us/build/include -Iinclude -Isrc -Iassets/us -D_LANGUAGE_C -D_FINALROM -DVERSION=us -DF3DEX_GBI_2 -D_MIPS_SZLONG=32 -nostdinc  -DVERSION_US -c -G0 -mgp32 -mfp32 -mips3  -Wmissing-braces -Wimplicit -Wredundant-decls -Wstrict-prototypes -Wno-redundant-decls -O3 src/os/pimgr.c -o ver/us/build/src/os/pimgr.c.o && mips-linux-gnu-objcopy -N src/os/pimgr.c ver/us/build/src/os/pimgr.c.o'
bash: line 1: tools/build/cc/gcc2.7.2//gcc: No such file or directory
[7/9486] cc_272 src/os/cartrominit.c
FAILED: ver/us/build/src/os/cartrominit.c.o 
bash -o pipefail -c 'COMPILER_PATH=tools/build/cc/gcc2.7.2/ tools/build/cc/gcc2.7.2//gcc -Iver/us/include -Iver/us/build/include -Iinclude -Isrc -Iassets/us -D_LANGUAGE_C -D_FINALROM -DVERSION=us -DF3DEX_GBI_2 -D_MIPS_SZLONG=32 -nostdinc  -DVERSION_US -c -G0 -mgp32 -mfp32 -mips3  -Wmissing-braces -Wimplicit -Wredundant-decls -Wstrict-prototypes -Wno-redundant-decls -O3 src/os/cartrominit.c -o ver/us/build/src/os/cartrominit.c.o && mips-linux-gnu-objcopy -N src/os/cartrominit.c ver/us/build/src/os/cartrominit.c.o'
bash: line 1: tools/build/cc/gcc2.7.2//gcc: No such file or directory
[8/9486] cc_272 src/os/epiread.c
FAILED: ver/us/build/src/os/epiread.c.o 
bash -o pipefail -c 'COMPILER_PATH=tools/build/cc/gcc2.7.2/ tools/build/cc/gcc2.7.2//gcc -Iver/us/include -Iver/us/build/include -Iinclude -Isrc -Iassets/us -D_LANGUAGE_C -D_FINALROM -DVERSION=us -DF3DEX_GBI_2 -D_MIPS_SZLONG=32 -nostdinc  -DVERSION_US -c -G0 -mgp32 -mfp32 -mips3  -Wmissing-braces -Wimplicit -Wredundant-decls -Wstrict-prototypes -Wno-redundant-decls -O3 src/os/epiread.c -o ver/us/build/src/os/epiread.c.o && mips-linux-gnu-objcopy -N src/os/epiread.c ver/us/build/src/os/epiread.c.o'
bash: line 1: tools/build/cc/gcc2.7.2//gcc: No such file or directory
[9/9486] cc_272 src/os/devmgr.c
FAILED: ver/us/build/src/os/devmgr.c.o 
bash -o pipefail -c 'COMPILER_PATH=tools/build/cc/gcc2.7.2/ tools/build/cc/gcc2.7.2//gcc -Iver/us/include -Iver/us/build/include -Iinclude -Isrc -Iassets/us -D_LANGUAGE_C -D_FINALROM -DVERSION=us -DF3DEX_GBI_2 -D_MIPS_SZLONG=32 -nostdinc  -DVERSION_US -c -G0 -mgp32 -mfp32 -mips3  -Wmissing-braces -Wimplicit -Wredundant-decls -Wstrict-prototypes -Wno-redundant-decls -O3 src/os/devmgr.c -o ver/us/build/src/os/devmgr.c.o && mips-linux-gnu-objcopy -N src/os/devmgr.c ver/us/build/src/os/devmgr.c.o'
bash: line 1: tools/build/cc/gcc2.7.2//gcc: No such file or directory
[10/9486] cc_272 src/os/aigetlength.c
FAILED: ver/us/build/src/os/aigetlength.c.o 
bash -o pipefail -c 'COMPILER_PATH=tools/build/cc/gcc2.7.2/ tools/build/cc/gcc2.7.2//gcc -Iver/us/include -Iver/us/build/include -Iinclude -Isrc -Iassets/us -D_LANGUAGE_C -D_FINALROM -DVERSION=us -DF3DEX_GBI_2 -D_MIPS_SZLONG=32 -nostdinc  -DVERSION_US -c -G0 -mgp32 -mfp32 -mips3  -Wmissing-braces -Wimplicit -Wredundant-decls -Wstrict-prototypes -Wno-redundant-decls -O3 src/os/aigetlength.c -o ver/us/build/src/os/aigetlength.c.o && mips-linux-gnu-objcopy -N src/os/aigetlength.c ver/us/build/src/os/aigetlength.c.o'
bash: line 1: tools/build/cc/gcc2.7.2//gcc: No such file or directory
[11/9486] cc_272 src/os/aisetfrequency.c
FAILED: ver/us/build/src/os/aisetfrequency.c.o 
bash -o pipefail -c 'COMPILER_PATH=tools/build/cc/gcc2.7.2/ tools/build/cc/gcc2.7.2//gcc -Iver/us/include -Iver/us/build/include -Iinclude -Isrc -Iassets/us -D_LANGUAGE_C -D_FINALROM -DVERSION=us -DF3DEX_GBI_2 -D_MIPS_SZLONG=32 -nostdinc  -DVERSION_US -c -G0 -mgp32 -mfp32 -mips3  -Wmissing-braces -Wimplicit -Wredundant-decls -Wstrict-prototypes -Wno-redundant-decls -O3 src/os/aisetfrequency.c -o ver/us/build/src/os/aisetfrequency.c.o && mips-linux-gnu-objcopy -N src/os/aisetfrequency.c ver/us/build/src/os/aisetfrequency.c.o'
bash: line 1: tools/build/cc/gcc2.7.2//gcc: No such file or directory
[12/9486] cc_272 src/os/aigetstatus.c
FAILED: ver/us/build/src/os/aigetstatus.c.o 
bash -o pipefail -c 'COMPILER_PATH=tools/build/cc/gcc2.7.2/ tools/build/cc/gcc2.7.2//gcc -Iver/us/include -Iver/us/build/include -Iinclude -Isrc -Iassets/us -D_LANGUAGE_C -D_FINALROM -DVERSION=us -DF3DEX_GBI_2 -D_MIPS_SZLONG=32 -nostdinc  -DVERSION_US -c -G0 -mgp32 -mfp32 -mips3  -Wmissing-braces -Wimplicit -Wredundant-decls -Wstrict-prototypes -Wno-redundant-decls -O3 src/os/aigetstatus.c -o ver/us/build/src/os/aigetstatus.c.o && mips-linux-gnu-objcopy -N src/os/aigetstatus.c ver/us/build/src/os/aigetstatus.c.o'
bash: line 1: tools/build/cc/gcc2.7.2//gcc: No such file or directory
[13/9486] cc_272 src/os/aisetnextbuf.c
FAILED: ver/us/build/src/os/aisetnextbuf.c.o 
bash -o pipefail -c 'COMPILER_PATH=tools/build/cc/gcc2.7.2/ tools/build/cc/gcc2.7.2//gcc -Iver/us/include -Iver/us/build/include -Iinclude -Isrc -Iassets/us -D_LANGUAGE_C -D_FINALROM -DVERSION=us -DF3DEX_GBI_2 -D_MIPS_SZLONG=32 -nostdinc  -DVERSION_US -c -G0 -mgp32 -mfp32 -mips3  -Wmissing-braces -Wimplicit -Wredundant-decls -Wstrict-prototypes -Wno-redundant-decls -O3 src/os/aisetnextbuf.c -o ver/us/build/src/os/aisetnextbuf.c.o && mips-linux-gnu-objcopy -N src/os/aisetnextbuf.c ver/us/build/src/os/aisetnextbuf.c.o'
bash: line 1: tools/build/cc/gcc2.7.2//gcc: No such file or directory
[14/9486] as src/os/osInvalDCache.s
ninja: build stopped: subcommand failed.

It would be good to enforce that the dependencies have the correct version so that it can give a clear error message telling the user what to do instead.

Darxoon avatar May 04 '24 12:05 Darxoon

The issue title is intractable without using something like nix but yes we could improve the error messages in cases like

  • splat failure
  • compiler not existing at configure-time

bates64 avatar May 25 '24 16:05 bates64