Posts mit dem Label scratchbox werden angezeigt. Alle Posts anzeigen
Posts mit dem Label scratchbox werden angezeigt. Alle Posts anzeigen

Montag, 24. September 2012

HOWTO: Set up a Maemo 5 Scratchbox SDK VM (and upload packages)

I've somehow lost my good old "MaemoSDK" VirtualBox VM, so while I'm setting up the new VM, here are the instructions in case I or somebody else needs to do that again.

The goal: To have a nice VM (more lightweight than the Maemo SDK VMs offered online) that one can SSH into and build packages for Maemo 4 and Maemo 5:
  1. Get the Debian i386 netinst CD image from http://www.debian.org/CD/netinst/
  2. Create a new VirtualBox VM (Name: MaemoSDK, Operating System: Linux, Version: Debian) - the default size (8 GB) should be okay, less is also okay
  3. Go to Settings, Storage, IDE Controller, select the .iso you downloaded in step 1
  4. Power up the VM, select "Install" in the menu
  5. Set the hostname to "maemosdk"
  6. Use an empty root password (you can use "sudo" from your user)
  7. Full name for the new user: Maemo Developer
  8. Username for the new user: user
  9. Password for the new user: maemo
  10. Use the default options for partitioning, and wait until the base system is installed
  11. Select the "SSH Server" option when the Debian Installer offers it
  12. Install GRUB into the MBR of the VM
  13. Go to the Maemo 5 SDK Download Page on Nokia Developer
  14. From the SDK Download page, get the Scratchbox installer script (maemo-scratchbox-install_5.0.sh) and the SDK installer script (maemo-sdk-install_5.0.sh):
    http://repository.maemo.org/stable/5.0/maemo-scratchbox-install_5.0.sh
    http://repository.maemo.org/stable/5.0/maemo-sdk-install_5.0.sh 
  15. Login to your new VM, then wget the two scripts above
  16. sudo sh maemo-scratchbox-install_5.0.sh
  17. sudo sh maemo-scratchbox-install_5.0.sh -u user
  18. Log out and log back in again
  19. sh maemo-sdk-install_5.0.sh
  20. When asked, I chose Full + Development packages, but feel free to chose a more minimal variant (in that case, you might have to install -dev packages later on as build-dependencies)
You can also read up on how to set up SSH agent forwarding in the VM, so that you don't need to store your SSH key on the SDK VM.

As for building gPodder from source in this SDK, here are the instructions:
  1. scratchbox
  2. vi /etc/apt/sources.list # then add these entries:
    deb http://repository.maemo.org/extras-devel fremantle free non-free
    deb-src http://repository.maemo.org/extras-devel fremantle free
  3. fakeroot apt-get install python2.5 python-feedparser python-mygpoclient python-dev maemo-optify
  4. git clone git://github.com/gpodder/gpodder.git
  5. cd gpodder
  6. git checkout origin/maemo-5
  7. dpkg-buildpackage -rfakeroot -S -sa -I.git -i.git # for the source upload
  8. dpkg-buildpackage -rfakeroot -b # for the binary to test locally
You can also build the Maemo 4 (N800/N810) package by replacing "maemo-5" with "maemo-4" in the "git checkout" command.

To get files out of the SDK without setting up fancy SSH stuff, you can also just use netcat (on the target: nc -l 9999 | tar xzv, on the source: tar czv /path/to/files/ | nc a.b.c.d 9999).

To upload files to Maemo Extras, follow the instructions at Uploading to Extras.

Montag, 25. Oktober 2010

SSH agent forwarding in Scratchbox

I usually have the Maemo SDK running inside a VM - either completely remote or on the same machine (so I can have a 32-bit minimal Debian install containing Scratchbox independent of the host system). I can then SSH into the development VM from my working machine using public key authentication and the SSH agent. I also have agent forwarding set up, so that I can SSH from the SDK machine directly to the N900 (to deploy binaries and .debs) or to some server requiring SSH access (e.g. drop.maemo.org) without having to generate lots of keys and distributing the key to all kinds of different machines.

Using -A (or ForwardAgent yes in .ssh/config) when SSHing into the SDK machine makes it possible to connect to other machines from it, utilizing your SSH key. This sadly does not work when starting scratchbox, because it opens a new environment, and the $SSH_AUTH_SOCK environment variable is lost. To fix this, I simply write the contents of this variable into a file accessible from Scratchbox and then export this variable in the Scratchbox login script. I usually also have a symlink in $HOME pointing to the SDK $HOME:

ln -s /scratchbox/users/$USER/home/$USER ~/sdk

With this in place, I can now edit the "normal" user's login script by adding the following line at the end of .bashrc:

echo $SSH_AUTH_SOCK >~/sdk/.ssh_auth_sock

Scratchbox has its own login script (also called .bashrc, but sitting in the Scratchbox home folder), so we edit this and add the following line:

export SSH_AUTH_SOCK=`cat .ssh_auth_sock`

After this, logout of Scratchbox, logout of the SSH session and then connect again with SSH forwarding:

ssh user@maemosdk -A
scratchbox
ssh-add -l

The last command should display the fingerprint of your SSH key. You can now connect to remote hosts from within your Scratchbox session while your SSH key still resides only on your local machine, loaded into the SSH agent.