1
0
mirror of https://github.com/zeldaret/oot.git synced 2024-09-21 04:24:43 +00:00

Use virtualenv in Makefile for python dependencies (#1619)

* Use virtualenv in Makefile for python dependencies

* Create separate targets for venv creation and installation

* Fix install-python-deps prerequisite

* Try simplifying Jenkinsfile

* Simplify venv targets

* Fix merge

* Update README.md

Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>

---------

Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>
This commit is contained in:
cadmic 2024-01-24 16:39:13 -08:00 committed by GitHub
parent 584e61a849
commit 5dd19e4862
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 40 additions and 50 deletions

21
Jenkinsfile vendored
View File

@ -4,21 +4,10 @@ pipeline {
} }
stages { stages {
stage('Install Python dependencies') {
steps {
echo 'Installing Python dependencies'
sh 'python3 -m venv .venv'
sh '''. .venv/bin/activate
python3 -m pip install -U -r requirements.txt
'''
}
}
stage('Setup') { stage('Setup') {
steps { steps {
sh 'cp /usr/local/etc/roms/baserom_oot.z64 baseroms/gc-eu-mq-dbg/baserom.z64' sh 'cp /usr/local/etc/roms/baserom_oot.z64 baseroms/gc-eu-mq-dbg/baserom.z64'
sh '''. .venv/bin/activate sh 'make -j setup'
make -j setup
'''
} }
} }
stage('Build (qemu-irix)') { stage('Build (qemu-irix)') {
@ -26,9 +15,7 @@ pipeline {
branch 'main' branch 'main'
} }
steps { steps {
sh '''. .venv/bin/activate sh 'make -j ORIG_COMPILER=1'
make -j ORIG_COMPILER=1
'''
} }
} }
stage('Build') { stage('Build') {
@ -38,9 +25,7 @@ pipeline {
} }
} }
steps { steps {
sh '''. .venv/bin/activate sh 'make -j'
make -j
'''
} }
} }
stage('Report Progress') { stage('Report Progress') {

View File

@ -55,6 +55,7 @@ endif
PROJECT_DIR := $(dir $(realpath $(firstword $(MAKEFILE_LIST)))) PROJECT_DIR := $(dir $(realpath $(firstword $(MAKEFILE_LIST))))
BUILD_DIR := build/$(VERSION) BUILD_DIR := build/$(VERSION)
VENV := .venv
MAKE = make MAKE = make
CFLAGS += -DOOT_DEBUG CFLAGS += -DOOT_DEBUG
@ -120,7 +121,7 @@ MKDMADATA := tools/mkdmadata
ELF2ROM := tools/elf2rom ELF2ROM := tools/elf2rom
ZAPD := tools/ZAPD/ZAPD.out ZAPD := tools/ZAPD/ZAPD.out
FADO := tools/fado/fado.elf FADO := tools/fado/fado.elf
PYTHON ?= python3 PYTHON ?= $(VENV)/bin/python3
# Command to replace path variables in the spec file. We can't use the C # Command to replace path variables in the spec file. We can't use the C
# preprocessor for this because it won't substitute inside string literals. # preprocessor for this because it won't substitute inside string literals.
@ -262,6 +263,8 @@ endif
#### Main Targets ### #### Main Targets ###
all: rom compress
rom: $(ROM) rom: $(ROM)
ifneq ($(COMPARE),0) ifneq ($(COMPARE),0)
@md5sum $(ROM) @md5sum $(ROM)
@ -287,7 +290,12 @@ distclean: clean assetclean
$(RM) -r baseroms/$(VERSION)/segments $(RM) -r baseroms/$(VERSION)/segments
$(MAKE) -C tools distclean $(MAKE) -C tools distclean
setup: venv:
test -d $(VENV) || python3 -m venv $(VENV)
$(PYTHON) -m pip install -U pip
$(PYTHON) -m pip install -U -r requirements.txt
setup: venv
$(MAKE) -C tools $(MAKE) -C tools
$(PYTHON) tools/decompress_baserom.py $(VERSION) $(PYTHON) tools/decompress_baserom.py $(VERSION)
$(PYTHON) extract_baserom.py $(PYTHON) extract_baserom.py
@ -300,9 +308,8 @@ endif
$(N64_EMULATOR) $< $(N64_EMULATOR) $<
.PHONY: all rom compress clean setup run distclean assetclean .PHONY: all rom compress clean assetclean distclean venv setup run
.DEFAULT_GOAL := rom .DEFAULT_GOAL := rom
all: rom compress
#### Various Recipes #### #### Various Recipes ####

View File

@ -100,37 +100,13 @@ This will copy the GitHub repository contents into a new folder in the current d
cd oot cd oot
``` ```
#### 3. Install python dependencies #### 3. Prepare a base ROM
The build process has a few python packages required that are located in `requirements.txt`.
It is recommended to set up a virtual environment for python to contain all dependencies. To create a virtual environment:
```bash
python3 -m venv .venv
```
To start using the virtual environment in your current terminal run:
```bash
. .venv/bin/activate
```
Keep in mind that for each new terminal session, you will need to **activate** the Python virtual environment again. That is, run the above `. .venv/bin/activate` command.
Now you can install the Python dependencies, to do so run:
```bash
pip install -U -r requirements.txt
```
#### 4. Prepare a base ROM
Place a copy of the Master Quest (Debug) ROM inside the `baseroms/gc-eu-mq-dbg/` folder. Place a copy of the Master Quest (Debug) ROM inside the `baseroms/gc-eu-mq-dbg/` folder.
Rename the file to `baserom.z64`, `baserom.n64` or `baserom.v64`, depending on the original extension. Rename the file to `baserom.z64`, `baserom.n64` or `baserom.v64`, depending on the original extension.
#### 5. Setup the ROM and build process #### 4. Setup the ROM and build process
Setup and extract everything from your ROM with the following command: Setup and extract everything from your ROM with the following command:
@ -138,10 +114,11 @@ Setup and extract everything from your ROM with the following command:
make setup make setup
``` ```
This will generate a new ROM "baseroms/gc-eu-mq-dbg/baserom-decompressed.z64" that will have the overdump removed and the header patched. This downloads some dependencies (from pip), and compiles tools for the build process.
Then it generates a new ROM "baseroms/gc-eu-mq-dbg/baserom-decompressed.z64" that will have the overdump removed and the header patched.
It will also extract the individual assets from the ROM. It will also extract the individual assets from the ROM.
#### 6. Build the ROM #### 5. Build the ROM
Run make to build the ROM. Run make to build the ROM.
Make sure your path to the project is not too long, otherwise this process may error. Make sure your path to the project is not too long, otherwise this process may error.

View File

@ -2,6 +2,27 @@
This list gives brief information on the most common usage cases. For more information, first try using `-h` or `--help` as an argument, and failing that, ask in #oot-decomp-help or #tools-other in the Discord. This list gives brief information on the most common usage cases. For more information, first try using `-h` or `--help` as an argument, and failing that, ask in #oot-decomp-help or #tools-other in the Discord.
Many tools require activating a Python virtual environment that contains Python
dependencies. This virtual environment is automatically installed into the
`.venv` directory by `make setup`, but you need to **activate** it in your
current terminal session in order to run Python tools. To start using the
virtual environment in your current terminal run:
```bash
source .venv/bin/activate
```
Keep in mind that for each new terminal session, you will need to activate the
Python virtual environment again. That is, run the above `source .venv/bin/activate` command.
To deactivate the virtual environment, run
```bash
deactivate
```
and your terminal session state will be restored to what it was before.
## m2ctx ## m2ctx
This generates the context for mips2c to use to type objects in its output. It lives in the tools directory. Running This generates the context for mips2c to use to type objects in its output. It lives in the tools directory. Running