Skip to content
FantasqueX edited this page Sep 16, 2022 · 2 revisions

How does archriscv-packages repository work?

This repository contains patches on top of Arch Linux package sources. Let's take elfutils as an example.

  • svn checkout svn://svn.archlinux.org/packages/elfutils Get the official ArchLinux PKGBUILD.
  • cd elfutils/repos/core-x86_64/ Our patch is built upon stable PKGBUILDs not ones in trunk.
  • wget https://raw.githubusercontent.com/felixonmars/archriscv-packages/master/elfutils/riscv64.patch Get all things under elfutils folder. Since patches will change at any time, we just show one patch here.
  • Use vim or other editors you like to add riscv64 to arch. Or setconf PKGBUILD arch "('x86_64' 'riscv64')". Our build system will do this automatically. However, you need to do this manually if you would like to build a package locally.
  • patch -i riscv64.patch Patch the official PKGBUILD.
  • extra-riscv64-build This is a build tool modified from the official devtools. You can get it from AUR devtools-riscv64 or from ArchLinuxCN devtools-riscv64.

In order to avoid the system pacman cache being multiplexed, you may want to use another cache folder. And use the following command to build.

export CACHE_DIR=~/.cache/pkgcache
mkdir -p $CACHE_DIR
extra-riscv64-build -- -d "$CACHE_DIR:/var/cache/pacman/pkg"

Replace ~/.cache/pkgcache with the path where you want to store the package cache.

Note: If you use devtools-riscv64 on x86_64 or other architectures instead of riscv64, you may want to check qemu-user-blacklist.txt which contains a list of packages which cannot be built using qemu-user. They can be built on real riscv64 hardware.

How to contribute?

Since we are a open project, contributions are welcome. First, check out the status page. If the status is FTBFS, then we need to do something with this package. Take a look at build log, try to fix it locally and send a Pull Request. There are some conventions in commit messages.

  • addpatch: pkgname This means that there is no patch before.
  • upgpatch: pkgname This means that there is a patch before which doesn't work now.
  • rmvpatch: pkgname This means that this package can be built without any patch now.

If the status is "Leaf package, port it!" and you need the package, open an issue to request a package.

Clone this wiki locally