Development

From Maemo Leste Wiki
Revision as of 12:48, 27 March 2019 by Spinal (talk | contribs) (→‎Multiarch: Fix link)
Jump to navigationJump to search

Maemo Leste development is split up in a few different places.

Communication and organising

Technical

All our git repositories can be found here: https://github.com/maemo-leste

Jenkins

To aid development and provide "continous integration" we have a build server, which takes a git repository and builds software and packages it, and will automatically make said package end up in Maemo Leste repositories. This is done by Jenkins, and the instance can be found here: https://phoenix.maemo.org/

Developing on a device

Actual development is mostly done from within Maemo Leste itself. (For Maemo Fremantle users, this might sound weird, but there is essentially no need for a 'scratchbox' type VM)


The current developers mostly work in a Virtual Machine or on a Raspberry Pi.

Multiarch

Multiarch is ability present on modern Debian systems that allows you to develop for Maemo Leste using your PC/Mac/Notebook etc.

Here we show how you can easily setup multiarch environment and build some packages on a Debian system. This can be adapted to develop on other systems as well. If you have such experience, please feel free to expand this section to help more people be involved in Maemo Leste development.

# Make a container for our development system
DIR=/var/lib/container/stretch
sudo apt-get install qemu-user-static debootstrap &&
sudo debootstrap stretch $DIR http://deb.debian.org/debian &&
echo "strech_cross" | sudo tee $DIR/etc/debian_chroot &&
sudo systemd-nspawn --bind /usr/bin/qemu-arm-static -D $DIR

# Setup build environment inside the container
cat >> ~/.bashrc << EOF &&
export PKG_CONFIG_PATH=/usr/lib/pkgconfig
export CC=arm-linux-gnueabihf-gcc
EOF
dpkg --add-architecture armhf &&
apt-get -y install --no-install-recommends build-essential crossbuild-essential-armhf ca-certificates &&
cat >> /etc/apt/sources.list << "EOF" &&
deb http://maedevu.maemo.org/leste leste main contrib non-free n900
deb http://maedevu.maemo.org/leste-devel leste-devel main contrib non-free n900

deb-src http://deb.debian.org/debian stretch main
deb-src http://maedevu.maemo.org/leste leste main contrib non-free n900
deb-src http://maedevu.maemo.org/leste-devel leste-devel main contrib non-free n900
EOF
wget https://maedevu.maemo.org/testing-key.asc &&
apt-key add testing-key.asc &&
rm -f testing-key.asc &&
rm -f /var/cache/apt/archives/*.deb &&
apt-get update &&
exec bash

# Build Xorg for Nokia N900
apt-get source xserver-xorg-core &&
cd xorg-server-1.19.2 &&
wget https://raw.githubusercontent.com/buildroot/buildroot/88e0f214dcb7c2a99a4425a70673d2aa5f48d720/package/x11r7/xserver_xorg-server/1.20.4/0002-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch &&
mv -v 0002-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch debian/patches &&
echo -e "# crossbuild fix\n0002-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch" >> debian/patches/series &&
apt-get -y build-dep -a armhf . &&
time dpkg-buildpackage -aarmhf -j4 -b &&
echo OK || echo FAIL

To login the container later, issue the command:

sudo systemd-nspawn --bind /usr/bin/qemu-arm-static -D /var/lib/container/stretch

If you wish to remove the container, just delete the directory we created:

sudo rm -fr /var/lib/container/stretch

TODO

  • Discuss where people look to pick up issues (clear answer is the bugtracker, but still)
  • How people can make changes and how to send them in