User:Tanner

(optification)
m (added missing usr/)
Line 83: Line 83:
and the search paths of Maemo need to be adjusted in /etc/profile and  /etc/osso-af-init/af-defines.sh:
and the search paths of Maemo need to be adjusted in /etc/profile and  /etc/osso-af-init/af-defines.sh:
-
* PATH=$PATH:/opt/maemo/bin  (and sbin for root)
+
* PATH=$PATH:/opt/maemo/usr/bin  (and sbin for root)
-
* ld.so.conf: add /opt/maemo/lib
+
* ld.so.conf: add /opt/maemo/usr/lib
* locales: [https://bugs.maemo.org/show_bug.cgi?id=8363 LOCPATH]=LOCPATH=/usr/share/locale:/opt/maemo/usr/share/locale
* locales: [https://bugs.maemo.org/show_bug.cgi?id=8363 LOCPATH]=LOCPATH=/usr/share/locale:/opt/maemo/usr/share/locale
-
* MANPATH=/opt/maemo/share/man
+
* MANPATH=/opt/maemo/usr/share/man
-
* pkgconfig: /usr/share/pkgconfig:/opt/maemo/share/pkgconfig
+
* pkgconfig: /usr/share/pkgconfig:/opt/maemo/usr/share/pkgconfig
-
* info in info?: /usr/share/info:/opt/maemo/share/info
+
* info in info?: /usr/share/info:/opt/maemo/usr/share/info
-
* apps in hildon ?: /usr/share/applications:/opt/maemo/share/applications
+
* apps in hildon ?: /usr/share/applications:/opt/maemo/usr/share/applications
-
* icons in hildon ?: /usr/share/icons:/opt/maemo/share/icons
+
* icons in hildon ?: /usr/share/icons:/opt/maemo/usr/share/icons
this list may be incomplete - please help to complete it
this list may be incomplete - please help to complete it
Line 100: Line 100:
or /var/opt should symlink to /opt/var and contain a larger tmp directory.
or /var/opt should symlink to /opt/var and contain a larger tmp directory.
----
----
 +
= Tips and tricks: =
= Tips and tricks: =

Revision as of 07:40, 2 February 2010

Contents

Packages

info about some of the packages I've uploaded to extras-devel

debhelper7

see also http://wiki.maemo.org/Packaging

A backport of Debhelper 7 for Fremantle is available in extras-devel. It works transparently and can coexist with debhelper 5 in the SDK. It also works on the autobuilder, if you specify

Build-Depends: debhelper7

in debian/control. The following lines in debian/rules are necessary to use it:

PATH:=/usr/bin/dh7:/usr/bin:$(PATH)
export PATH
SBOX_REDIRECT_IGNORE=/usr/bin/perl
export SBOX_REDIRECT_IGNORE

We are working on enhancement to make optification is easier, i.e. installation of files in the /opt hierarchy.

If you also need a more recent cdbs, then use the package cdbs-dh7, which conflicts with the standard cdbs and does not work on autobuilder yet.

To replace several tools in scratchbox you can also use the following line as a template

SBOX_REDIRECT_IGNORE:=$(shell echo /usr/bin/{perl,dh_*} | sed "s/ /:/g")

TeXLive 2009

talk page

R (statistics)

bug: installation fails with ucfr missing solution: wait or edit r-base-core.postinst and comment line 44 out

BLAS LAPACK suitesparse

bug: linking against BLAS and LAPACK currently hardcodes the links found in the -dev package.

numpy, scipy, sympy

some discussion

bonnie++ (filesystem benchmarks)

see post and ff

tcl8.5 tk8.5 python-tk

lzma

an extremely efficient compressor. it is much faster than bzip2 for decompression and about 30% smaller files.

xskat

bug: keyboard doesn't work. bug: window close button is not visible

experimental packages

some experimental ports which I have not yet uploaded to extras-devel can be found in my repository

deb http://www.maemory.com/N900/ fremantle free incompatible

currently: python2.6, perl5.10


Ideas/plans:

alternative USB host solution

USB/IP

full optification

Ideally addon software should be installed only in /opt without any symlinks in / (NAND) in accordance with FHS. /usr/local should be moved and symlinked to /opt/local and is reserved for own programs not maintained by dpkg.

A package may either install its files directly (for small packages) in the /opt/maemo hierarchy (bin,etc,lib,man,share) or in a separate directory /opt/<package> with its own hierarchy (bin,etc,lib,man,share). For the latter solution packages should symlink all non-private files to /opt/maemo/{bin,etc,lib,man,share} and the search paths of Maemo need to be adjusted in /etc/profile and /etc/osso-af-init/af-defines.sh:

  • PATH=$PATH:/opt/maemo/usr/bin (and sbin for root)
  • ld.so.conf: add /opt/maemo/usr/lib
  • locales: LOCPATH=LOCPATH=/usr/share/locale:/opt/maemo/usr/share/locale
  • MANPATH=/opt/maemo/usr/share/man
  • pkgconfig: /usr/share/pkgconfig:/opt/maemo/usr/share/pkgconfig
  • info in info?: /usr/share/info:/opt/maemo/usr/share/info
  • apps in hildon ?: /usr/share/applications:/opt/maemo/usr/share/applications
  • icons in hildon ?: /usr/share/icons:/opt/maemo/usr/share/icons

this list may be incomplete - please help to complete it

As NAND is much faster than eMMC a cache manager could mantain a list of very often used binaries and libraries in /opt and automatically copy them and symlink them to a fixed size cache in NAND.

TMPDIR=/var/tmp should be moved to /opt/tmp or /var/opt should symlink to /opt/var and contain a larger tmp directory.


Tips and tricks:

fresh builds

latest packages

Repartitioning

brainstorm brainstorm discussion repartitioning thread

how to swap FAT and ext3 parition how to implement USB mass storage with a loopback file

Setting up a repository mirror

reprepro configuration

Reflashing & Restore

this is a slightly modified version of the script I use to restore my N900 after a reflash. My reflashing procedure is:

sudo flasher-3.5 -F RX-51_2009SE_2.2009.51-1_PR_COMBINED_MR0_ARM.bin -f -R
  • restore old backup except programs
  • install gainroot
  • in Terminal:
 sudo su -
/home/backup/restore

with following script in /home/backup (feedback and patches are welcome). It excepts that did a backup of /root and your selected modified files (e.g. /etc/ssh) in /home/backup. the file minimal should contain a list (line by line) of the package names you want to install.

#!/bin/sh
# N900 restore script
# © 2010 by Thomas Tanner <tanner@maemory.com>
# licensed under GPLv3

set -x
# script and data must be in /home/backup
cd /home/backup
# remove old opt
rm -rf /home/opt
mkdir /home/opt
# copy /root backup
rm -rf /root
cp -a root /
# copy modifed files for /etc
cp -a etc/* /etc

# enable user ssh login with ~/.ssh/authorized_keys
sed 's/^user:!/user:\*/' /etc/passwd > /etc/passwd.tmp
cp /etc/passwd.tmp /etc/passwd # mv

# move root stuff to /home
dirs="usr/share/icons usr/share/nokia-maps usr/share/themes usr/share/fonts usr/share/locale usr/lib/locale var/lib/apt"
#optional: var/lib/dpkg
if test -d /home/var/cache/apt; then
  # keep existing apt cache
  rm -rf /var/cache/apt
  ln -s /home/var/cache/apt /var/cache/apt
else
  dirs="$dirs var/cache/apt"
fi
(cd / && du -sc $dirs)
for d in $dirs; do
    test -L /$d && continue
    echo moving /$d
    rm -rf /home/$d
    mkdir -p /home/$d
    cp -a /$d /home/$d/..
    rm -rf /$d
    ln -s /home/$d /$d
done

mount /home/user/MyDocs # non-standard partition layout
apt-get update
apt-get -y install mc python-support openssh-server

# install my standard set of packages
apt-get -y install `cat minimal`