edk2-edkrepo
edk2-edkrepo copied to clipboard
Repository for the edkrepo utility
EdkRepo - The Multi-Repository Tool for EDK II
Introduction
EdkRepo is the multi-repository tool for EDK II firmware development. EdkRepo is built on top of git. It is intended to automate common developer workflows for projects that use more than one git repository. For example many of the new projects in the edk2-platforms repository require the user to clone several git repositories. EdkRepo makes it easier to set up and upstream changes for these projects. EdkRepo does not replace git, rather it provides higher level extensions that make it easier to work with git. EdkRepo is written in Python and is compatible with Python 3.5 or later.
Linux Build and Installation
Install Pre-Requisites
- Git 2.13.x or later
- Python 3.5 or later
- Python SetupTools
- Python Pip
Ubuntu Specific Instructions
Tested versions: 22.04 LTS, 20.04 LTS, 18.04 LTS, 16.04 LTS
sudo apt-get install git python3 python3-setuptools python3-pip
Upgrade git (Ubuntu 16.04 LTS Only)
The version of git that is installed by default in Ubuntu 16.04 is too old for EdkRepo (16.04 includes git 2.7.4, the minimum is 2.13+). To upgrade git, run the following commands:
sudo apt-add-repository ppa:git-core/ppa
Press [ENTER] to confirm that you want to add the new repository.
sudo apt-get update
sudo apt-get install git
OpenSUSE Specific Instructions
sudo zipper install git python3 python3-setuptools python3-pip
Red Hat/Fedora/Rocky Specific Instructions
sudo dnf install git python3-pip
Install EdkRepo
Installing EdkRepo on Linux requires one to extract the tarball and run the included installer script.
- Extract the archive using the following command
tar -xzvf edkrepo-<version>.tar.gz
- Run the installer script
./install.py
and follow the on-screen prompts.
The -v flag can be added for more verbose output if desired.
Automated Installation
For an automated non-interactive install, one must provide at least 2 arguments: --local
or --system
and --prompt
or --no-prompt
.
--local
requests installation to the current user's home directory. Root access is not required and no system wide changes are made. This is the recommended installation method.
--system
request a system-wide installation. Root access is required. This method is useful for systems where multiple users will be running EdkRepo as it saves disk space in that scenario.
For system level installations, one must provide the --user
parameter and run the installation script as root.
Build Process
To build a EdkRepo distribution tarball, the Python wheel package is required in addition to the above dependencies. On Ubuntu, one can install it using:
sudo apt-get install python3-wheel
-
cd build-scripts
-
./build_linux_installer.py
Install From Source
To install from source, one must have installed using the tarball method above at least once in order to setup the EdkRepo configuration files. One this is done, one may use the standard distutils method to install EdkRepo from source:
./setup.py install
macOS Build and Installation
Install Pre-Requisites
1. Install the Xcode Command Line Tools
a) Open a Terminal and type the following command:
xcode-select --install
b) A new window will appear, click Install. c) Accept the license agreement. d) Wait for the installation to complete.
2. Install Homebrew
Install Homebrew if it has not been installed already. Homebrew is a package manager for macOS that has become the most common method of installing command line software on macOS that was not originally provided by Apple. EdkRepo has several dependencies that are distributed via Homebrew.
Type the following command to install Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Follow the on-screen prompts.
3. Install Dependencies
Run the following commands to install EdkRepo's dependencies:
brew install bash-completion git git-gui xz pyenv
pyenv install 3.8.16
pyenv global 3.8.16
During installation, you may be prompted to enter your password.
4. Configure Shell for Pyenv and Git
To enable usage of Pyenv installed Python interpreters and Git command completions, run the following command:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/tianocore/edk2-edkrepo/main/edkrepo_installer/mac-scripts/setup_git_pyenv_mac.sh)"
Restart your shell so the Pyenv changes can take effect:
exec $SHELL
Install EdkRepo
Extract the archive:
tar -xzvf edkrepo-<version>.tar.gz
If you are installing from source, you will need to build the distribution tarball using the following commands first:
-
pip install wheel
(If not done already) -
cd build-scripts
-
./build_linux_installer.py
Install EdkRepo:
./install.py
Restart your shell so the new Pyenv shim for EdkRepo can take effect:
exec $SHELL
Windows Build and Installation
Pre-Requisites
- Git 2.13.x or later
- Python 3.8.8 or later
Git 2.27.0 is the version that has received the most validation, though any version of Git 2.13 or later works fine. If you want to install 2.27.0, here are some links:
Python 3.8.8 or later is recommended due to performance improvements and CVE-2021-3177. You can get Python from here: https://www.python.org/
Windows installer .exe will fail if Python 3.8.8 or later is not detected.
Install Process
- Run the installer .exe
- Click Install
Install From Source
To install from source, one must build and run the installer .exe using the instructions below at least once in order to setup the EdkRepo configuration files. One this is done, one may use the standard distutils method to install EdkRepo from source:
py -3 setup.py install
Build Process
Build Pre-Requisites
- Visual Studio 2015 or later with the C# language and C++ compiler installed
- Python Wheel
Install Python wheel using the following:
py -3 -m pip install wheel
Open a command prompt and type the following:
-
cd build-scripts
-
build_windows_installer.bat
Timeline
Time | Event |
---|---|
WW 10 2021 | Moved from edk2-staging to a dedicated repository |
WW 26 2019 | Initial commit of EdkRepo |
... | ... |
Maintainers
- Ashley DeSimone [email protected]
- Nate DeSimone [email protected]
Known Issues
Please see https://github.com/tianocore/edk2-edkrepo/issues
Related Links
- https://github.com/tianocore/edk2-edkrepo-manifest
- https://github.com/tianocore/edk2-platforms