ARMevaluationAELALIP
20921
Comment:
|
9585
|
Deletions are marked like this. | Additions are marked like this. |
Line 76: | Line 76: |
Peter Pearse researched the list of packages currently in AEL/ALIP. | Peter Pearse researched the list of packages currently in AEL/ALIP. See [[https://docs.google.com/document/edit?id=1k3_daUoOqFnS8vqF32meaq8Abk7FP6NKRHcoPWeGRPY&hl=en|Original alip-ael packages]] |
Line 78: | Line 78: |
[[https://docs.google.com/document/edit?id=1k3_daUoOqFnS8vqF32meaq8Abk7FP6NKRHcoPWeGRPY&hl=en|Original alip-ael packages]] |
Tom Gall has proposed an possible alip as listed in |
Line 82: | Line 81: |
{{{ alip-ael source directory ubuntu package to replace ========================= ========================== extra/bluez-hcidump: Package: universe/bluez-hcidump extra/bluez-utils Package: main/bluez extra/firefox-3.5 Package: main/firefox extra/gnome-power-manager: Package: main/gnome-power-manager extra/gtk-xfce-engine-2 Package: universe/gtk2-engines-xfce extra/libexo Package: universe/exo extra/libxfce4util: Package: universe/libxfce4util extra/libxfcegui4: Package: universe/libxfcegui4 extra/nfs-utils: Package: main/nfs-utils extra/portmap: Package: main/portmap extra/startup-notification: Package: main/startup-notification extra/tcp_wrappers Package: main/tcp-wrappers extra/thunar: Package: universe/thunar extra/util-linux-ng Package: main/util-linux extra/vte: Package: main/vte extra/xfce4-dev-tools: Package: universe/xfce4-dev-tools extra/xfce4-panel: Package: universe/xfce4-panel ---- extra/xfce4-session: Package: universe/xfce4-session extra/xfdesktop: Package: universe/xfdesktop4 extra/xfwm4-themes: Package: universe/xfwm4-themes extra/xfwm4: Package: universe/xfwm4 main/ConsoleKit: Package: main/consolekit main/NetworkManager Package: main/network-manager main/PolicyKit-gnome Package: main/policykit-1-gnome main/PolicyKit: Package: main/policykit-1 main/WebKit: Package: main/webkit main/alsa-lib: Package: main/alsa-lib main/alsa-utils: Package: main/alsa-utils main/arora Package: main/arora main/atk: Package: main/atk1.0 main/bigreqsproto Package: main/x11proto-bigreqs main/binutils: Package: main/binutils main/busybox: Package: main/busybox main/bzip2: Package: main/bzip2 main/cairo: Package: main/cairo main/compositeproto Package: main/x11proto-composite ========= main/curl: Package: main/curl main/damageproto Package: main/x11proto-damage main/db: Package: main/db main/dbus-glib: Package: main/dbus-glib main/dbus: Package: main/dbus main/dhclient Package: universe/dhcp3-client main/dmxproto Package: main/x11proto-dmx main/drm: Package: main/libdrm main/dropbear: Package: universe/dropbear main/e2fsprogs: Package: main/e2fsprogs main/eggdbus: Package: main/eggdbus main/eglibc: Package: main/eglibc main/enchant: Package: main/enchant main/evolution-data-server: Package: main/evolution-data-server main/expat: Package: main/expat main/fixesproto Package: main/x11proto-fixes main/fontconfig: Package: main/fontconfig main/fontsproto Package: main/x11proto-fonts main/glib: Package: main/glib2.0 ++++++++ main/glproto Package: main/x11proto-gl main/gnome-keyring: Package: main/gnome-keyring main/gnome-mime-data: Package: main/gnome-mime-data main/gnome-vfs: Package: main/gnome-vfs main/gst-plugins-base: Package: main/gst-plugins-base0.10 main/gst-plugins-good: Package: main/gst-plugins-good0.10 main/gstreamer0.10: Package: main/gstreamer0.10 main/gstreamer: Package: main/gstreamer0.10 main/gtk+: Package: main/gtk+2.0 main/gtk-chtheme: Package: universe/gtk-chtheme main/hal-info: Package: main/hal-info main/hal: Package: main/hal main/hicolor-icon-theme: Package: main/hicolor-icon-theme main/icu: Package: main/icu main/inputproto Package: main/x11proto-input main/jpeg: Package: main/libjpeg6b Package: libjpeg8 main/kbproto Package: main/x11proto-kb main/kernel-headers: Package: universe/kfreebsd-kernel-headers main/libICE: Package: main/libice --------- main/libIDL: Package: main/libidl main/libSM: Package: main/libsm main/libX11: Package: main/libx11 main/libXScrnSaver Package: main/xscreensaver main/libXau: Package: main/libxau main/libXcomposite: Package: main/libxcomposite main/libXcursor: Package: main/libxcursor main/libXdamage: Package: main/libxdamage main/libXdmcp: Package: main/libxdmcp main/libXext: Package: main/libxext main/libXfixes: Package: main/libxfixes main/libXfont: Package: main/libxfont main/libXft Package: main/xft main/libXi: Package: main/libxi main/libXinerama: Package: main/libxinerama main/libXmu: Package: main/libxmu main/libXp: Package: main/libxp main/libXpm: Package: main/libxpm main/libXrandr: Package: main/libxrandr ======= main/libXrender: Package: main/libxrender main/libXt: Package: main/libxt main/libXtst: Package: main/libxtst main/libXv: Package: main/libxv main/libXxf86dga: Package: main/libxxf86dga main/libXxf86vm: Package: main/libxxf86vm main/libcroco: Package: main/libcroco main/libdmx: Package: main/libdmx main/libfakekey: Package: main/libfakekey main/libfontenc: Package: main/libfontenc main/libgconf-bridge: Package: universe/libgconf-bridge main/libgcrypt: Package: main/libgcrypt11 main/libglade: Package: main/libglade2 main/libgnome-keyring: Package: main/libgnome-keyring main/libgpg-error: Package: main/libgpg-error main/libidl: Package: main/libidl main/libmatchbox: Package: universe/libmatchbox main/libnl: Package: main/libnl main/libnotify: Package: main/libnotify +++++++ main/libogg: Package: main/libogg main/liboil: Package: main/liboil main/libpciaccess: Package: main/libpciaccess main/libpng: Package: main/libpng main/librsvg: Package: main/librsvg main/libsexy: Package: main/libsexy main/libsoup: Package: main/libsoup2.4 main/libtasn1: Package: main/libtasn1-3 main/libusb: Package: main/libusb main/libwnck: Package: main/libwnck main/libxkbfile: Package: main/libxkbfile main/libxml2: Package: main/libxml2 main/libxtrans Package: main/xtrans main/linux-2.6 Package: main/linux main/lrzsz: Package: universe/lrzsz main/matchbox-common: Package: universe/matchbox-common main/matchbox-desktop: Package: universe/matchbox-desktop main/matchbox-keyboard: Package: universe/matchbox-keyboard main/matchbox-panel-2 Package: main/matchbox-panel ------- main/matchbox-window-manager: Package: universe/matchbox-window-manager main/midori: Package: universe/midori main/ncurses: Package: main/ncurses main/network-manager-applet: Package: main/network-manager-applet main/notification-daemon: Package: main/notification-daemon main/nspr: Package: main/nspr main/nss: Package: main/nss main/openssh: Package: main/openssh main/openssl: Package: main/openssl main/oprofile: Package: main/oprofile main/pango: Package: main/pango1.0 main/pixman: Package: main/pixman main/popt: Package: main/popt main/ppp: Package: main/ppp main/printproto Package: main/x11proto-print main/pthread-stubs: Package: main/libpthread-stubs main/python2.6: Package: main/python2.6 main/qt: Package: main/qt-x11-free Package: qt4-x11 main/randrproto Package: main/x11proto-randr ==================== main/recordproto Package: main/x11proto-record main/renderproto Package: main/x11proto-render main/resourceproto Package: main/x11proto-resource main/rxvt: Package: universe/rxvt main/scim: Package: universe/scim main/scrnsaverproto Package: main/x11proto-scrnsaver main/seal: Package: universe/libtest-useallmodules-perl main/shared-mime-info: Package: main/shared-mime-info main/sqlite: Package: main/sqlite main/tiff: Package: main/tiff main/totem-pl-parser: Package: main/totem-pl-parser main/totem: Package: main/totem main/tslib: Package: main/tslib main/udev: Package: main/udev main/unique: Package: main/libunique main/usbutils: Package: main/usbutils main/util: Package: main/xfonts-utils main/videoproto Package: main/x11proto-video main/wireless-tools: Package: main/wireless-tools main/wpa_supplicant Package: main/wpasupplicant main/x11perf Package: main/x11-apps main/xauth: Package: main/xauth main/xcmiscproto Package: main/x11proto-xcmisc main/xdpyinfo Package: main/x11-utils main/xextproto Package: main/x11proto-xext main/xf86-input-evdev Package: main/xserver-xorg-input-evdev main/xf86-input-tslib: Package: universe/xf86-input-tslib main/xf86-video-fbdev Package: main/xserver-xorg-video-fbdev main/xf86bigfontproto Package: main/x11proto-xf86bigfont main/xf86dgaproto Package: main/x11proto-xf86dga main/xf86driproto Package: main/x11proto-xf86dri main/xf86miscproto Package: main/x11proto-xf86misc main/xf86vidmodeproto Package: main/x11proto-xf86vidmode main/xineramaproto Package: main/x11proto-xinerama main/xkbcomp Package: main/x11-xkb-utils main/xkeyboard-config: Package: main/xkeyboard-config main/xrandr: Package: main/libxrandr main/xulrunner: Package: main/xulrunner-1.9.2 main/zlib: Package: main/zlib }}} |
Launchpad Entry: arm-m-ael-alip-evaluation
Created: Guillaume Letellier & Dave Martin
Contributors:
Packages affected:
Summary
ARM uses various linux file system images. This spec explores how these might be supplied from Ubuntu.
Release Note
An archive of the ALIP-AEL software stack can now be built for ARM architectures ARMv5 & ARMV6 using Ubuntu packages and associated tools. This method can be extended for the remaining packages of the full distribution, provided any dependency loops are broken and packages are well behaved under cross compilation.
Rationale
If Ubuntu is used from the very beginning of involvement with ARM it's more likely to be used for further activities. All initial examples of linux based systems provided by ARM Ltd. would tend to be Ubuntu based systems.
User stories
- New Architecture: ARM designers design a new architecture. They package a GNU cross compilation toolchain for the architecture. They can now use the available tools to cross build a complete, or partial, system image. This both exercises the toolchain, provides a basis for demonstrating the architectures benefits and provides the build-essential packages required to build (bootstrap) the complete archive for the new architecture.
Development: ARM Ltd. developers want to develop a new BSP, tool or other software package. Pulling an original ALIP-AEL archive from Ubuntu they can use xdeb to quickly put their package into this & iterate builds for development.
- uClinux To demonstrate an MMUless core ARM Ltd. developers pull a minimal uClinux system image from Ubuntu and boot it on their target.
- Compiler Validation: To validate non-standard compiler options (including architectures) a partial, or complete, archive is rebuilt with a compiler defaulting to those options.
- Demo: User supplied binary packages can be inserted into the ALIP-AEL software stack image with minimal effort.
- Ship: ARM supplied development boards can be shipped with an installer or debootstrap style image which boots an ALIP-AEL stack with the ability to install further packages from the Ubuntu or related archives. Reduced images are flashed into boards such that they boot to a GUI out of box.
In the current cycle only the Compiler Validation use case will be satisfied, using xdeb. This method will be used rather than repeated native builds for the separate architectures since this aids development of solutions for the other cases. Those cases - New Architecture, Development, Demo may be considered for inclusion in future cycles.
The ucLinux case will not be considered further as it is one example of the New Architecture use case.
Assumptions
Required tools are provided, in a timely fashion, by
https://blueprints.launchpad.net/ubuntu/+spec/arm-m-cross-compilers
https://blueprints.launchpad.net/ubuntu/+spec/arm-m-xdeb-cross-compilation-environment
https://blueprints.launchpad.net/ubuntu/+spec/arm-m-development-tools
https://blueprints.launchpad.net/ubuntu/+spec/arm-m-image-building-tool
Cross compilation GNU toolchain supplied by user in standard GNU/Ubintu packaged form for use by the Ubuntu tools.
Design
The hardest use case is that of a complete new architecture. A roadmap to achieve this can be constructed:-
- Compiler Validation
- Development
- Demo
- Ship
- New Architecture.
Implementation
Compiler Validation
- Package toolchain with desired architecture as default into local archive.
- Pull alip-ael source packages (list to be attached) from ubuntu into local archive.
- Build a chroot by hand
- Set up high level dependencies (seeds) to construct alip-ael
- Use xdeb, in that chroot, on the local archive to rebuild the alip-ael stack
- Break any dependency loops locally
- Fix any packages not cross compilation compliant (pushed upstream)
- Build images from the local archive using the image building tool.
Development
Satisfied by the above.
Demo
Satisfied by the above.
Ship
Modify the ubuntu installer, if required, to access archives produced above
New Architecture
- Produce build-essential packages using xdeb
- Modify buildd to use xdeb
- Move to native buildds as hardware becomes available.
Unresolved issues
Does the ubuntu installer require adapting to use incomplete archives, in the manner described above.
Research on packages in AEL/ALIP
Peter Pearse researched the list of packages currently in AEL/ALIP. See Original alip-ael packages
Tom Gall has proposed an possible alip as listed in
BoF agenda and discussion
Agenda: * AEL/ALIP introduction * Discussion
- use-cases
- procedures
- delivery formats
- cross compiling
AEL information and resources
ALIP Information and Resources
Discussion
Packages and filesystem
- When pulling updates into ALIP, generally choose the latest upstream versions
- Filesystem tarballs distributed per architecture baseline
- ARMv5
- ARMv6
- ARMv7 +NEON
- ARMv7 +-Thumb2 +NEON
- Generally, compiler options enable as many processor features as possible.
-> this is an explicit intention to exercise build scenarios and processor features
- System is flexible so the user can do a build with the right compiler options to target their use case / platform.
- about 200 packages
- Don't necessarily need to produce builds for all possible scenarios - this can be left to the user if they have specific requirements
Packaging
- Git repository based on upstream
- Some arm-specific patches held in git - but these are proactively pushed
- upstream also.
- The AEL kernel typically contains some patches which are unlikely to be merged upstream.
Do people really need to rebuild everything?
- People find the flexibility useful
- If the user cannot rebuild, they are restricted with the common subset of the architecture.
- In debian packages, copmiler options are often overridden during the build process, making it difficult to do a clean build with user-specified options
- Currently the default compiler flags are set in the toolchain scratchbox
- Currently, different compilers are used - gcc , armcc (RVCT).
- Supporting multiple toolchains can create packaging complications e.g., dependencies on libgcc don't make sense between different toolchains. Proper dependencies are needed if we want to use the Debian/Ubuntu tools to construct filesystems.
- Build-dependencies can be addressed by a static chroot which provides the functionality of build-essential.
- An options is to base off Debian source packages, without using prebuild binary packages.
Info on switching toolchains in scratchbox: http://www.scratchbox.org/wiki/ForeignToolchains
- A service for building packages (such as Ubuntu PPAs) is conceivable as a way to simplify life for users/developers, but not a priority for now?
Testsuites
- Can consider running build-time tests ("make check") but not currently done by default. Does not work with true cross-compiling.
Use cases:
- rootfs for different architectures to do validation/testing/demoes/benchmarks
- - armv5 - armv6 - armv7 neon - armv7 thumb2 neon - uclinux and eglibc versions for armv6 onwards
- contains ~200 packages to provide a small minimum demo image
- need to allow rebuild of the rootfs for different architecture opts
- - 4 hours to rebuild ~200 packages in QEMU on a desktop PC
- set of packages hosted in git repos:
- - light: busybox for the small fs use case; our busybox would need a new flav
or based on uclinux
- - medium: xserver/x11 test environment - full: allows running a browser, webkit or mozilla, gtk or qt; need to provi
de both of them
- packages have patches which are being pushed upstream
- rebuild with different compiler or compiler flags
- in practice, it's hard to support uClinux without a different toolchain (though it's possible in principle); it might be possible for the prebuilt images, but needs to be investigated
- Should be really easy and really solid as to allow newbies to do rebuilds
- A key problem is in package dependencies with outside toolchains: when building with armcc, we want packages to pickup dependencies on the toolchain runtime libs
- - We need to take the assumption that the armcc toolchain is packaged
ARM did a Debian rebuild using armcc; it would be highly interesting to know how they solved that; Will Deacon to check this out
- We want to be able to test with new toolchains
- - We need to take the assumption that the armcc toolchain is packaged
- Problems:
- packaging and updating to new major toolchain is hard to do
building with armcc might require packages - binaries only is OK -> not trying to solve the toolchain bootstrapping problem
Actions
- Will Deacon to get details on the ARM internal Debian build using armcc
Ubuntu folks to try out ALIP! arm.com/linux
Specs/M/ARMevaluationAELALIP (last edited 2011-01-21 16:09:41 by fw-tnat)