diff options
22 files changed, 661 insertions, 34 deletions
diff --git a/classes/insane.bbclass b/classes/insane.bbclass index 2599348351..cda2ebc917 100644 --- a/classes/insane.bbclass +++ b/classes/insane.bbclass @@ -24,6 +24,151 @@ inherit package PACKAGE_DEPENDS += "pax-utils-native" PACKAGEFUNCS += " do_package_qa " + +# +# dictionary for elf headers +# +# feel free to add and correct. the ARM EABI needs another column and we +# need mips, i386 and amd64 input (abi versions) +# +# TARGET_OS TARGET_ARCH MACHINE, OSABI, ABIVERSION, Little Endian +def package_qa_get_machine_dict(): + return { + "linux" : { "arm" : (40, 97, 0, True), + "armeb": (40, 97, 0, False), + "powerpc": (20, 0, 0, False), + }, + "linux-uclibc" : { "arm" : (40, 97, 0, True), + "armeb": (40, 97, 0, False), + "powerpc": (20, 0, 0, False), + }, + } + +# factory for a class, embedded in a method +def package_qa_get_elf(path): + class ELFFile: + EI_NIDENT = 16 + + EI_CLASS = 4 + EI_DATA = 5 + EI_VERSION = 6 + EI_OSABI = 7 + EI_ABIVERSION = 8 + + # possible values for EI_CLASS + ELFCLASSNONE = 0 + ELFCLASS32 = 1 + ELFCLASS64 = 2 + + # possible value for EI_VERSION + EV_CURRENT = 1 + + # possible values for EI_DATA + ELFDATANONE = 0 + ELFDATA2LSB = 1 + ELFDATA2MSB = 2 + + def my_assert(expectation, result): + if not expectation == result: + #print "'%x','%x'" % (ord(expectation), ord(result)) + raise "This does not work as expected" + my_assert = staticmethod(my_assert) + + def __init__(self, name): + self.name = name + + def open(self): + self.file = file(self.name, "r") + self.data = self.file.read(ELFFile.EI_NIDENT+4) + + ELFFile.my_assert(len(self.data), ELFFile.EI_NIDENT+4) + ELFFile.my_assert(self.data[0], chr(0x7f) ) + ELFFile.my_assert(self.data[1], 'E') + ELFFile.my_assert(self.data[2], 'L') + ELFFile.my_assert(self.data[3], 'F') + ELFFile.my_assert(self.data[ELFFile.EI_CLASS], chr(ELFFile.ELFCLASS32)) # only 32 bits + ELFFile.my_assert(self.data[ELFFile.EI_VERSION], chr(ELFFile.EV_CURRENT) ) + + self.sex = self.data[ELFFile.EI_DATA] + if self.sex == chr(ELFFile.ELFDATANONE): + raise "Can't be" + elif self.sex == chr(ELFFile.ELFDATA2LSB): + self.sex = "<" + elif self.sex == chr(ELFFile.ELFDATA2MSB): + self.sex = ">" + else: + raise "Even more worse" + + def osAbi(self): + return ord(self.data[ELFFile.EI_OSABI]) + + def abiVersion(self): + return ord(self.data[ELFFile.EI_ABIVERSION]) + + def isLittleEndian(self): + return self.sex == "<" + + def isBigEngian(self): + return self.sex == ">" + + def machine(self): + """ + We know the sex stored in self.sex and we + know the position + """ + import struct + (a,) = struct.unpack(self.sex+"H", self.data[18:20]) + return a + + return ELFFile(path) + + +# +# +# Known Error classes +# 0 - non dev contains .so +# 1 - package contains a dangerous RPATH +# 2 - package depends on debug package +# 3 - non dbg contains .so +# 4 - wrong architecture +# +# + +def package_qa_clean_path(path,d): + import bb + return path.replace(bb.data.getVar('TMPDIR',d,True),"") + +def package_qa_make_fatal_error(error_class, name, path,d): + """ + decide if an error is fatal + + TODO: Load a whitelist of known errors + """ + if error_class == 0: + return False + else: + return True + +def package_qa_write_error(error_class, name, path, d): + import bb, os + if not bb.data.getVar('QA_LOG', d): + return + + ERROR_NAMES =[ + "non dev contains .so", + "package contains RPATH", + "package depends on debug package", + "non dbg contains .debug", + "wrong archutecture", + ] + + + log_path = os.path.join( bb.data.getVar('T', d, True), "log.qa_package" ) + f = file( log_path, "a+") + print >> f, "%s, %s, %s" % (ERROR_NAMES[error_class], name, package_qa_clean_path(path,d)) + f.close() + + def package_qa_check_rpath(file,name,d): """ Check for dangerous RPATHs @@ -32,16 +177,18 @@ def package_qa_check_rpath(file,name,d): scanelf = os.path.join(bb.data.getVar('STAGING_BINDIR_NATIVE',d,True),'scanelf') bad_dir = bb.data.getVar('TMPDIR', d, True) + "/work" if not os.path.exists(scanelf): - bb.note("Can not check RPATH scanelf not found") + bb.fatal("Can not check RPATH scanelf not found") if not bad_dir in bb.data.getVar('WORKDIR', d, True): bb.fatal("This class assumed that WORKDIR is ${TMPDIR}/work... Not doing any check") output = os.popen("%s -Byr %s" % (scanelf,file)) txt = output.readline().rsplit() if bad_dir in txt: - bb.fatal("QA Issue package %s contains bad RPATH %s in file %s" % (name, txt, file)) + package_qa_write_error( 1, name, file, d) + bb.error("QA Issue package %s contains bad RPATH %s in file %s" % (name, txt, file)) + return False - pass + return True def package_qa_check_devdbg(path, name,d): """ @@ -50,50 +197,97 @@ def package_qa_check_devdbg(path, name,d): """ import bb + sane = True + if not "-dev" in name: if path[-3:] == ".so": - bb.fatal("QA Issue: non dev package contains .so: %s" % name) + package_qa_write_error( 0, name, path, d ) + bb.error("QA Issue: non dev package contains .so: %s path '%s'" % (name, package_qa_clean_path(path,d))) + if package_qa_make_fatal_error( 0, name, path, d ): + sane = False if not "-dbg" in name: if '.debug' in path: - bb.fatal("QA Issue: non debug package contains .debug directory: %s" % name) + package_qa_write_error( 3, name, path, d ) + bb.error("QA Issue: non debug package contains .debug directory: %s path %s" % (name, package_qa_clean_path(path,d))) + if package_qa_make_fatal_error( 3, name, path, d ): + sane = False + + return sane def package_qa_check_perm(path,name,d): """ Check the permission of files """ - pass + sane = True + return sane def package_qa_check_arch(path,name,d): """ Check if archs are compatible """ - pass + import bb + target_os = bb.data.getVar('TARGET_OS', d, True) + target_arch = bb.data.getVar('TARGET_ARCH', d, True) + + #this will throw an exception, then fix the dict above + (machine, osabi, abiversion, littleendian) = package_qa_get_machine_dict()[target_os][target_arch] + elf = package_qa_get_elf(path) + try: + elf.open() + except: + # just for debbugging to check the parser, remove once convinced... + return True + + sane = True + if not machine == elf.machine(): + bb.error("Architecture did not match (%d to %d) on %s", (machine, elf.machine(), package_qa_clean_path(path,d))) + sane = package_qa_make_fatal_error( 4, name, path, d ) + elif not osabi == elf.osAbi(): + bb.error("OSABI did not match (%d to %d) on %s", (osabi, elf.osAbi(), package_qa_clean_path(path,d))) + sane = package_qa_make_fatal_error( 4, name, path, d ) + elif not abiversion == elf.abiVersion(): + bb.error("ABI version did not match (%d to %d) on %s", (abiversion, elf.abiVersion(), package_qa_clean_path(path,d))) + sane = package_qa_make_fatal_error( 4, name, path, d ) + elif not littleendian == elf.isLittleEndian(): + bb.error("Endiannes did not match (%d to %d) on %s", (littleendian, elf.isLittleEndian(), package_qa_clean_path(path,d))) + sane = package_qa_make_fatal_error( 4, name, path, d ) + + return sane def package_qa_check_pcla(path,name,d): """ - .pc and .la files should not point + .pc and .la files should not point to the WORKDIR """ + sane = True + return sane def package_qa_check_staged(path,d): """ Check staged la and pc files for sanity -e.g. installed being false """ - pass + sane = True + return sane # Walk over all files in a directory and call func def package_qa_walk(path, funcs, package,d): import os + sane = True + for root, dirs, files in os.walk(path): for file in files: path = os.path.join(root,file) for func in funcs: - func(path, package,d) + if not func(path, package,d): + sane = False + + return sane def package_qa_check_rdepends(pkg, workdir, d): - import bb + import bb + sane = True if not "-dbg" in pkg and not "task-" in pkg and not "-image" in pkg: # Copied from package_ipk.bbclass # boiler plate to update the data @@ -122,7 +316,12 @@ def package_qa_check_rdepends(pkg, workdir, d): # Now do the sanity check!!! for rdepend in rdepends: if "-dbg" in rdepend: - bb.fatal("QA issue, koen give us a better msg!!!") + package_qa_write_error( 2, name, rdepend, d ) + bb.error("QA issue, koen give us a better msg!!!") + if package_qa_make_fatal_error( 2, name, rdepend, d ): + sane = False + + return sane # The PACKAGE FUNC to scan each package python do_package_qa () { @@ -134,12 +333,19 @@ python do_package_qa () { if not packages: return + walk_sane = True + rdepends_sane = True for package in packages.split(): - bb.note("Package: %s" % package) + bb.note("Checking Package: %s" % package) path = "%s/install/%s" % (workdir, package) - package_qa_walk(path, [package_qa_check_rpath, package_qa_check_devdbg, package_qa_check_perm, package_qa_check_arch], package, d) - package_qa_check_rdepends(package, workdir, d) + if not package_qa_walk(path, [package_qa_check_rpath, package_qa_check_devdbg, package_qa_check_perm, package_qa_check_arch], package, d): + walk_sane = False + if not package_qa_check_rdepends(package, workdir, d): + rdepends_sane = False + if not walk_sane or not rdepends_sane: + bb.fatal("QA ran found fatal errors. Please consider fixing them") + bb.note("DONE with PACKAGE QA") } @@ -156,8 +362,8 @@ addtask qa_configure after do_configure before do_compile python do_qa_configure() { bb.note("Checking sanity of the config.log file") import os - for root, dirs, files in os.walk(bb.data.getVar('S', d, True)): + for root, dirs, files in os.walk(bb.data.getVar('WORKDIR', d, True)): if "config.log" in files: if os.system("grep 'CROSS COMPILE Badness:' %s > /dev/null" % (os.path.join(root,"config.log"))) == 0: - bb.fatal("This autoconf log indicates errors, it looked at host includes") + bb.fatal("This autoconf log indicates errors, it looked at host includes. Rerun configure task after fixing this. Path was '%s'", root) } diff --git a/conf/distro/angstrom-2007.1.conf b/conf/distro/angstrom-2007.1.conf index 0fbe7d19cc..b367b3f142 100644 --- a/conf/distro/angstrom-2007.1.conf +++ b/conf/distro/angstrom-2007.1.conf @@ -8,14 +8,23 @@ #DISTRO_VERSION = "2007.3" DISTRO_VERSION = "test-${DATE}" -DISTRO_REVISION = "32" +DISTRO_REVISION = "33" require conf/distro/include/angstrom.inc require conf/distro/include/sane-srcdates.inc -DISTRO_TYPE = "debug" +DISTRO_TYPE ?= "debug" #DISTRO_TYPE = "release" +# Ship just basic locale by default. Locales are big (~1Mb uncompr.), so +# shipping some adhoc subset will be still useless and size burden for +# users of all other languages/countries. Instead, worth to make it easy +# to install additional languages: installer/wizard + metapackages which +# will RRECOMMEND as much as possible content for a given language +# (locales, UI transalations, help, etc. - useless for pros, but really +# helpful for common users). +IMAGE_LINGUAS = "en-gb" + #Set the right arch for the feeds #Alphabetically sorted diff --git a/conf/distro/include/openmoko.inc b/conf/distro/include/openmoko.inc new file mode 100644 index 0000000000..0a86870b2c --- /dev/null +++ b/conf/distro/include/openmoko.inc @@ -0,0 +1,127 @@ +# +# Header +# +DISTRO_NAME = "OpenMoKo" + +# +# Naming schemes +# +PARALLEL_INSTALL_MODULES = "1" +INHERIT += "debian multimachine" + +# +# Packaging and output format +# +INHERIT += "package_ipk" +IMAGE_FSTYPES = "tar.gz ext2.gz jffs2" +IMAGE_FSTYPES_x86 = "tar.gz" +IMAGE_ROOTFS_SIZE_ext2 = "131072" + +# +# Binutils & Compiler +# +PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc-initial:gcc-cross-initial" +PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc:gcc-cross" +PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}g++:gcc-cross" + +# EABI stuff +PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}-libc-for-gcc = "glibc-intermediate" +PREFERRED_PROVIDER_virtual/arm-angstrom-linux-gnueabi-libc-for-gcc = "glibc-intermediate" +PREFERRED_PROVIDER_virtual/arm-linux-libc-for-gcc = "glibc-intermediate" + +# +# Target OS & FPU system +# +TARGET_OS = "linux" +TARGET_FPU_arm = "soft" +TARGET_FPU_armeb = "soft" +PREFERRED_PROVIDER_virtual/libiconv = "glibc" +PREFERRED_PROVIDER_virtual/libintl = "glibc" +PREFERRED_VERSION_linux-libc-headers_x86 = "2.6.15.99" +PREFERRED_VERSION_linux-libc_headers = "2.6.18" +# +# Features +# +DISTRO_FEATURES = "alsa bluetooth ext2 ipsec nfs ppp smbfs usbgadget usbhost" + +# +# Bootstrap & Init +# +MACHINE_TASK_PROVIDER = "task-base" +require conf/distro/include/sane-srcdates.inc + +# +# Framebuffer & X +# +PREFERRED_PROVIDER_virtual/libx11 ?= "libx11" +PREFERRED_PROVIDER_virtual/ecore ?= "ecore-x11" +PREFERRED_PROVIDER_virtual/evas ?= "evas-x11" +PREFERRED_PROVIDER_virtual/esmart ?= "esmart-x11" +PREFERRED_PROVIDER_virtual/libsdl = "libsdl-x11" +PREFERRED_PROVIDER_virtual/xserver ?= "xserver-kdrive" +PREFERRED_PROVIDER_tslib ?= "tslib" +PREFERRED_PROVIDER_xserver ?= "xserver-kdrive" +require conf/distro/include/preferred-xorg-versions-X11R7.1.inc + +# +# Gnome +# +PREFERRED_PROVIDER_dbus-glib = "dbus-glib" +PREFERRED_PROVIDER_gconf = "gconf-dbus" +#new +#PREFERRED_PROVIDER_gnome-vfs = "gnome-vfs" +#old +PREFERRED_PROVIDER_gnome-vfs = "gnome-vfs-dbus" +PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive" +PREFERRED_PROVIDER_bluez-utils = "bluez-utils-dbus" + +PREFERRED_VERSION_dbus-native = "1.0.2" +PREFERRED_VERSION_dbus = "1.0.2" +PREFERRED_VERSION_dbus-glib-native = "0.71" +PREFERRED_VERSION_dbus-glib = "0.71" +PREFERRED_VERSION_atk = "1.9.0" +PREFERRED_VERSION_pango = "1.8.2" +PREFERRED_VERSION_glib-2.0 = "2.12.3" +PREFERRED_VERSION_gtk+ = "2.6.10" +PREFERRED_VERSION_gtk-engines = "2.6.5" +#PREFERRED_VERSION_gnome-vfs = "2.16.3" + +PREFERRED_VERSION_fontconfig = "2.4.1" + +# +# GPE +# +PREFERRED_PROVIDER_libgpewidget = "libgpewidget" + +# +# O-Hand +# +PREFERRED_VERSION_contacts = "0.1" +PREFERRED_VERSION_dates = "0.1" +# PREFERRED_VERSION_web = "???" + +# +# Development +# +PREFERRED_PROVIDER_qemu-native = "qemu-native" +PREFERRED_VERSION_qemu-native = "0.8.2+cvs${SRCDATE}" + +# +# Opie +# +QTE_VERSION = "2.3.10" +PALMTOP_USE_MULTITHREADED_QTE = "yes" +require conf/distro/include/preferred-opie-versions.inc + +# +# Enlightenment +# +require conf/distro/include/preferred-e-versions.inc + +# +# OpenMoko +# + +#We comment this out since external developers don't needs to use SRCDATE="now" as that generated unneed traffic +#require conf/distro/include/preferred-openmoko-versions.inc + diff --git a/conf/distro/include/preferred-openmoko-versions.inc b/conf/distro/include/preferred-openmoko-versions.inc new file mode 100644 index 0000000000..263406c90b --- /dev/null +++ b/conf/distro/include/preferred-openmoko-versions.inc @@ -0,0 +1,60 @@ +# +# Specify which versions of OpenMoko packages to build +# + +# +# Base +# + +SRCDATE_uboot = "now" +SRCDATE_uboot-gta01 = "now" +SRCDATE_kernel = "now" +SRCDATE_linux-gta01 = "now" +SRCDATE_linux-gta01-nobbt = "now" +SRCDATE_libgsmd = "now" +SRCDATE_openmoko-session = "now" +SRCDATE_openmoko-common = "now" +SRCDATE_openmoko-theme-standard = "now" +SRCDATE_openmoko-libs = "now" + +# +# Examples +# +SRCDATE_openmoko-stylus-demo = "now" +SRCDATE_openmoko-stylus-demo-simple = "now" +SRCDATE_openmoko-finger-demo = "now" +SRCDATE_openmoko-panel-demo = "now" +SRCDATE_openmoko-panel-demo-simple = "now" + +# +# PIM +# +SRCDATE_openmoko-contacts = "now" +SRCDATE_openmoko-dates = "now" + +# +# Applications +# +SRCDATE_openmoko-appmanager = "now" +SRCDATE_openmoko-chordmaster = "now" +SRCDATE_openmoko-dialer = "now" +SRCDATE_openmoko-footer = "now" +SRCDATE_openmoko-phone = "now" +SRCDATE_openmoko-mainmenu = "now" +SRCDATE_openmoko-taskmanager = "now" + +# +# Multimedia +# +SRCDATE_openmoko-simplemediaplayer = "now" + +# +# Panel Plugins +# +SRCDATE_openmoko-panel-clock = "now" +SRCDATE_openmoko-panel-battery = "now" +SRCDATE_openmoko-panel-mainmenu = "now" +SRCDATE_openmoko-panel-gsm = "now" +SRCDATE_openmoko-panel-gps = "now" +SRCDATE_openmoko-panel-bt = "now" +SRCDATE_openmoko-panel-usb = "now" diff --git a/conf/distro/openmoko.conf b/conf/distro/openmoko.conf new file mode 100644 index 0000000000..6e33867aa9 --- /dev/null +++ b/conf/distro/openmoko.conf @@ -0,0 +1,28 @@ +#----------------------------------------------------------------------------- +#@TYPE: Distribution +#@NAME: OpenMoKo +#@DESCRIPTION: Linux Distribution Configuration for the FIC GTA01 Project +#----------------------------------------------------------------------------- + +# +# Header +# +DISTRO_NAME = "OpenMoKo" +DISTRO_VERSION = ".dev-snapshot-${DATE}" +#DISTRO_TYPE = "release" +DISTRO_TYPE = "debug" + +require conf/distro/include/openmoko.inc + +# Toolchain +PREFERRED_VERSION_gcc ?= "4.1.1" +PREFERRED_VERSION_gcc-cross ?= "4.1.1" +PREFERRED_VERSION_gcc-cross-initial ?= "4.1.1" +PREFERRED_VERSION_binutils ?= "2.17.50.0.5" +PREFERRED_VERSION_binutils-cross ?= "2.17.50.0.5" +PREFERRED_VERSION_linux-libc-headers ?= "2.6.18" +# 2.5 has less bugs, but crashes dropbear :/ +PREFERRED_VERSION_glibc ?= "2.4" +PREFERRED_VERSION_glibc-intermediate ?= "2.4" + +PREFERRED_VERSION_lmsensors-apps ?= "2.10.1" diff --git a/packages/altboot/altboot_wip.bb b/packages/altboot/altboot_wip.bb index 714a3d1d2b..2de4c812b9 100644 --- a/packages/altboot/altboot_wip.bb +++ b/packages/altboot/altboot_wip.bb @@ -9,7 +9,7 @@ DESCRIPTION = "The altboot bootmanager" MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>" HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml" -LICENSE = "GPL" +LICENSE = "GPL" ###################################################################################### diff --git a/packages/angstrom/task-angstrom-x11.bb b/packages/angstrom/task-angstrom-x11.bb index 95fb0cf0c6..36aa431d42 100644 --- a/packages/angstrom/task-angstrom-x11.bb +++ b/packages/angstrom/task-angstrom-x11.bb @@ -1,5 +1,5 @@ DESCRIPTION = "Task packages for the Angstrom distribution" -PR = "r27" +PR = "r28" ALLOW_EMPTY = "1" PACKAGE_ARCH = "${MACHINE_ARCH}" @@ -42,7 +42,6 @@ RDEPENDS_angstrom-gpe-task-base := "\ gpe-autostarter \ ${@base_contains("MACHINE_FEATURES", "touchscreen", "libgtkstylus", "",d)} \ ${@base_contains("MACHINE_FEATURES", "keyboard", "", "libgtkinput",d)} \ - ${@base_contains("MACHINE_FEATURES", "touchscreen", "detect-stylus", "",d)} \ suspend-desktop \ teleport \ xauth \ diff --git a/packages/cups/cups_1.2.7.bb b/packages/cups/cups_1.2.7.bb index acd735705c..22034f9a23 100644 --- a/packages/cups/cups_1.2.7.bb +++ b/packages/cups/cups_1.2.7.bb @@ -52,7 +52,15 @@ do_stage () { oe_libinstall -C filter -so libcupsimage ${STAGING_LIBDIR} } +FILES_${PN}-dbg += "${libdir}/cups/backend/.debug \ + ${libdir}/cups/cgi-bin/.debug \ + ${libdir}/cups/filter/.debug \ + ${libdir}/cups/monitor/.debug \ + ${libdir}/cups/notifier/.debug \ + ${libdir}/cups/daemon/.debug \ + " #package the html for the webgui inside the main packages (~1MB uncompressed) + FILES_${PN} += "${datadir}/doc/cups/images \ ${datadir}/doc/cups/*html \ ${datadir}/doc/cups/*.css \ diff --git a/packages/gnome/gnome-vfs_2.16.3.bb b/packages/gnome/gnome-vfs_2.16.3.bb index 0c6176428e..b1f634c0e9 100644 --- a/packages/gnome/gnome-vfs_2.16.3.bb +++ b/packages/gnome/gnome-vfs_2.16.3.bb @@ -17,7 +17,8 @@ EXTRA_OECONF = " \ --disable-openssl \ --enable-gnutls \ --enable-avahi \ - " + --with-samba-includes=${STAGING_INCDIR} \ + " FILES_${PN} += " ${libdir}/vfs" FILES_${PN}-dev += " ${libdir}/gnome-vfs-2.0/include" diff --git a/packages/gpe-session-scripts/gpe-session-scripts_0.67.bb b/packages/gpe-session-scripts/gpe-session-scripts_0.67.bb index 85c6a2575a..583fe2f7e3 100644 --- a/packages/gpe-session-scripts/gpe-session-scripts_0.67.bb +++ b/packages/gpe-session-scripts/gpe-session-scripts_0.67.bb @@ -4,14 +4,14 @@ DESCRIPTION = "GPE session startup scripts" LICENSE = "GPL" SECTION = "gpe" PRIORITY = "optional" -RDEPENDS_${PN} = "matchbox-panel (>= 0.9.2-r12) matchbox-desktop (>= 0.9.1-r1) matchbox-common (>= 0.9.1-r2) gpe-session-starter gpe-bluetooth xstroke xtscal gpe-question gpe-clock matchbox-applet-inputmanager xrandr xmodmap xdpyinfo xserver-common" +RDEPENDS_${PN} = "matchbox-panel (>= 0.9.2-r12) matchbox-desktop (>= 0.9.1-r1) matchbox-common (>= 0.9.1-r2) gpe-session-starter xtscal gpe-question matchbox-applet-inputmanager xmodmap xdpyinfo xserver-common" # more rdepends: keylaunch ipaq-sleep apmd blueprobe -DEPENDS = "matchbox-wm matchbox-panel gpe-bluetooth xstroke xtscal gpe-question matchbox-applet-inputmanager gpe-clock xrandr xmodmap xdpyinfo xserver-common" +DEPENDS = "matchbox-wm matchbox-panel xtscal gpe-question matchbox-applet-inputmanager xmodmap xdpyinfo xserver-common" SRC_URI += "file://matchbox-session \ file://disable-composite.xsettings" -PR = "r5" +PR = "r6" #apply a patch to set the fontsize for bigdpi (200+) devices to 5 SRC_URI_append_hx4700 = " file://highdpifontfix.patch;patch=1" diff --git a/packages/gsm/libgsmd_svn.bb b/packages/gsm/libgsmd_svn.bb index e43c19fc73..860adf3b0a 100644 --- a/packages/gsm/libgsmd_svn.bb +++ b/packages/gsm/libgsmd_svn.bb @@ -4,7 +4,7 @@ LICENSE = "GPL" SECTION = "libs/gsm" PROVIDES += "gsmd" PV = "0.0+svn${SRCDATE}" -PR = "r1" +PR = "r2" SRC_URI = "svn://svn.openmoko.org/trunk/src/target;module=gsm;proto=http" S = "${WORKDIR}/gsm" @@ -17,7 +17,7 @@ do_stage() { PACKAGES =+ "${PN}-tools gsmd" RDEPENDS_${PN} = "gsmd" -FILES_${PN}-tools = "${bindir}" +FILES_${PN}-tools = "${bindir}/*" FILES_gsmd = "${sbindir}/gsmd" PACKAGES_DYNAMIC = "libgsmd* gsmd" diff --git a/packages/linux/linux-handhelds-2.6_2.6.19-hh11.bb b/packages/linux/linux-handhelds-2.6_2.6.19-hh11.bb new file mode 100644 index 0000000000..ec5844bfb5 --- /dev/null +++ b/packages/linux/linux-handhelds-2.6_2.6.19-hh11.bb @@ -0,0 +1,11 @@ +SECTION = "kernel" +DESCRIPTION = "handhelds.org Linux kernel 2.6 for PocketPCs and other consumer handheld devices." +LICENSE = "GPL" +PR = "r1" + +DEFAULT_PREFERENCE = "-1" + +SRC_URI = "${HANDHELDS_CVS};module=linux/kernel26;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \ + file://defconfig" + +require linux-handhelds-2.6.inc diff --git a/packages/linux/linux-handhelds-2.6_2.6.19-hh12.bb b/packages/linux/linux-handhelds-2.6_2.6.19-hh12.bb new file mode 100644 index 0000000000..ec5844bfb5 --- /dev/null +++ b/packages/linux/linux-handhelds-2.6_2.6.19-hh12.bb @@ -0,0 +1,11 @@ +SECTION = "kernel" +DESCRIPTION = "handhelds.org Linux kernel 2.6 for PocketPCs and other consumer handheld devices." +LICENSE = "GPL" +PR = "r1" + +DEFAULT_PREFERENCE = "-1" + +SRC_URI = "${HANDHELDS_CVS};module=linux/kernel26;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \ + file://defconfig" + +require linux-handhelds-2.6.inc diff --git a/packages/openmoko-apps/openmoko-messages_svn.bb b/packages/openmoko-apps/openmoko-messages_svn.bb new file mode 100644 index 0000000000..d7a708b85c --- /dev/null +++ b/packages/openmoko-apps/openmoko-messages_svn.bb @@ -0,0 +1,7 @@ +DESCRIPTION = "The OpenMoko Application Manager" +SECTION = "openmoko/applications" +DEPENDS += "ipkg" +PV = "0.0.1+svn${SRCDATE}" + +inherit openmoko + diff --git a/packages/openmoko-panel-plugins/openmoko-panel-gsm_svn.bb b/packages/openmoko-panel-plugins/openmoko-panel-gsm_svn.bb new file mode 100644 index 0000000000..798e94e0c4 --- /dev/null +++ b/packages/openmoko-panel-plugins/openmoko-panel-gsm_svn.bb @@ -0,0 +1,7 @@ +DESCRIPTION = "Shows the current time in the OpenMoko panel" +PV = "0.0.1+svn${SRCDATE}" + +inherit openmoko-panel-plugin + +FILES_${PN} += "${bindir}/${PN}" + diff --git a/packages/openmoko-panel-plugins/openmoko-panel-mainmenu_svn.bb b/packages/openmoko-panel-plugins/openmoko-panel-mainmenu_svn.bb new file mode 100644 index 0000000000..389a6f2691 --- /dev/null +++ b/packages/openmoko-panel-plugins/openmoko-panel-mainmenu_svn.bb @@ -0,0 +1,5 @@ +DESCRIPTION = "Shows the current time in the OpenMoko panel" +PV = "0.0.1+svn${SRCDATE}" + +inherit openmoko-panel-plugin + diff --git a/packages/tasks/task-base.bb b/packages/tasks/task-base.bb index b4266a0940..fdbf9f75d2 100644 --- a/packages/tasks/task-base.bb +++ b/packages/tasks/task-base.bb @@ -1,5 +1,5 @@ DESCRIPTION = "Merge machine and distro options to create a basic machine task/package" -PR = "r16" +PR = "r17" PACKAGES = "task-base \ task-base-minimal \ @@ -62,10 +62,10 @@ RDEPENDS_task-base = "\ ${@base_contains("COMBINED_FEATURES", "pcmcia", "${task-base-pcmcia-rdepends}", "",d)} \ ${@base_contains("COMBINED_FEATURES", "usbhost", "${task-base-usbhost-rdepends}", "",d)} \ ${@base_contains("COMBINED_FEATURES", "bluetooth", "${task-base-bluetooth-rdepends}", "",d)} \ + ${@base_contains("COMBINED_FEATURES", "wifi", "${task-distro-wifi-rdepends}", "",d)} \ ${@base_contains("DISTRO_FEATURES", "nfs", "${task-distro-nfs-rdepends}", "",d)} \ ${@base_contains("DISTRO_FEATURES", "ipsec", "${task-distro-ipsec-rdepends}", "",d)} \ ${@base_contains("DISTRO_FEATURES", "ppp", "${task-distro-ppp-rdepends}", "",d)} \ - ${@base_contains("DISTRO_FEATURES", "wifi", "${task-distro-wifi-rdepends}", "",d)} \ ${MACHINE_ESSENTIAL_EXTRA_RDEPENDS} \ ${MACHINE_EXTRA_RDEPENDS} \ ${DISTRO_EXTRA_RDEPENDS}" diff --git a/packages/tasks/task-openmoko.bb b/packages/tasks/task-openmoko.bb index 08b3c80d07..7400fc679e 100644 --- a/packages/tasks/task-openmoko.bb +++ b/packages/tasks/task-openmoko.bb @@ -5,7 +5,7 @@ PACKAGE_ARCH = "all" LICENSE = "MIT" PROVIDES = "task-openmoko-everything" -PR = "r25" +PR = "r26" PACKAGES = "\ task-openmoko-linux \ @@ -80,7 +80,7 @@ RDEPENDS_task-openmoko-ui = "\ gtk+ \ matchbox-common \ matchbox-wm \ - matchbox-panel \ + matchbox-panel-2 \ xserver-kdrive-fbdev \ xserver-kdrive-common \ xserver-nodm-init \ @@ -101,9 +101,10 @@ RDEPENDS_task-openmoko-ui = "\ DESCRIPTION_task-openmoko-base = "OpenMoko: Main-Menu Launcher, Top Panel, and Footer" RDEPENDS_task-openmoko-base = "\ openmoko-mainmenu \ -# matchbox-panel-2 \ + matchbox-panel-2 \ openmoko-footer \ openmoko-taskmanager \ + openmoko-panel-mainmenu \ " # @@ -114,6 +115,7 @@ RDEPENDS_task-openmoko-phone = "\ gsmd \ libgsmd-tools \ openmoko-dialer \ + openmoko-panel-gsm \ # ppp \ " diff --git a/packages/tslib/tslib-1.0/.mtn2git_empty b/packages/tslib/tslib-1.0/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/tslib/tslib-1.0/.mtn2git_empty diff --git a/packages/tslib/tslib-1.0/ts.conf b/packages/tslib/tslib-1.0/ts.conf new file mode 100644 index 0000000000..82f712ef41 --- /dev/null +++ b/packages/tslib/tslib-1.0/ts.conf @@ -0,0 +1,25 @@ +# Uncomment if you wish to use the linux input layer event interface +module_raw input grab_events=1 + +# Uncomment if you're using a Sharp Zaurus SL-5500/SL-5000d +# module_raw collie + +# Uncomment if you're using a Sharp Zaurus SL-C700/C750/C760/C860 +# module_raw corgi + +# Uncomment if you're using a device with a UCB1200/1300/1400 TS interface +# module_raw ucb1x00 + +# Uncomment if you're using an HP iPaq h3600 or similar +# module_raw h3600 + +# Uncomment if you're using a Hitachi Webpad +# module_raw mk712 + +# Uncomment if you're using an IBM Arctic II +# module_raw arctic2 + +module pthres pmin=1 +module variance delta=30 +module dejitter delta=100 +module linear diff --git a/packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch b/packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch new file mode 100644 index 0000000000..4bd0a05531 --- /dev/null +++ b/packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch @@ -0,0 +1,120 @@ +This patch adds support for "EVIOCGRAB" on the input device, which +tells the kernel _not_ to deliver events of the touchscreen to +/dev/input/mice. + +This is probably what most people want, since unprocessed raw touchscreen +events should not be converted to emulated PS/2 mouse movements. + +Signed-off-by: Harald Welte <laforge@openmoko.org> + +Index: a/plugins/input-raw.c +=================================================================== +--- a/plugins/input-raw.c (revision 49) ++++ b/plugins/input-raw.c (working copy) +@@ -18,6 +18,7 @@ + + #include <errno.h> + #include <stdio.h> ++#include <limits.h> + + #include <stdlib.h> + #ifdef HAVE_UNISTD_H +@@ -33,6 +34,9 @@ + + #include "tslib-private.h" + ++#define GRAB_EVENTS_WANTED 1 ++#define GRAB_EVENTS_ACTIVE 2 ++ + struct tslib_input { + struct tslib_module_info module; + +@@ -42,6 +46,7 @@ + + int sane_fd; + int using_syn; ++ int grab_events; + }; + + static int check_fd(struct tslib_input *i) +@@ -64,6 +69,14 @@ + + if (bit & (1 << EV_SYN)) + i->using_syn = 1; ++ ++ if (i->grab_events == GRAB_EVENTS_WANTED) { ++ if (ioctl(ts->fd, EVIOCGRAB, (void *)1)) { ++ fprintf(stderr, "Unable to grab selected input device\n"); ++ return -1; ++ } ++ i->grab_events = GRAB_EVENTS_ACTIVE; ++ } + + return 0; + } +@@ -222,6 +235,15 @@ + + static int ts_input_fini(struct tslib_module_info *inf) + { ++ struct tslib_input *i = (struct tslib_input *)inf; ++ struct tsdev *ts = inf->dev; ++ ++ if (i->grab_events == GRAB_EVENTS_ACTIVE) { ++ if (ioctl(ts->fd, EVIOCGRAB, (void *)0)) { ++ fprintf(stderr, "Unable to un-grab selected input device\n"); ++ } ++ } ++ + free(inf); + return 0; + } +@@ -231,6 +253,36 @@ + .fini = ts_input_fini, + }; + ++static int parse_raw_grab(struct tslib_module_info *inf, char *str, void *data) ++{ ++ struct tslib_input *i = (struct tslib_input *)inf; ++ unsigned long v; ++ int err = errno; ++ ++ v = strtoul(str, NULL, 0); ++ ++ if (v == ULONG_MAX && errno == ERANGE) ++ return -1; ++ ++ errno = err; ++ switch ((int)data) { ++ case 1: ++ if (v) ++ i->grab_events = GRAB_EVENTS_WANTED; ++ break; ++ default: ++ return -1; ++ } ++ return 0; ++} ++ ++static const struct tslib_vars raw_vars[] = ++{ ++ { "grab_events", (void *)1, parse_raw_grab }, ++}; ++ ++#define NR_VARS (sizeof(raw_vars) / sizeof(raw_vars[0])) ++ + TSAPI struct tslib_module_info *mod_init(struct tsdev *dev, const char *params) + { + struct tslib_input *i; +@@ -245,5 +297,12 @@ + i->current_p = 0; + i->sane_fd = 0; + i->using_syn = 0; ++ i->grab_events = 0; ++ ++ if (tslib_parse_vars(&i->module, raw_vars, NR_VARS, params)) { ++ free(i); ++ return NULL; ++ } ++ + return &(i->module); + } diff --git a/packages/tslib/tslib_1.0.bb b/packages/tslib/tslib_1.0.bb index 0ece5b0331..4ba53f0631 100644 --- a/packages/tslib/tslib_1.0.bb +++ b/packages/tslib/tslib_1.0.bb @@ -4,9 +4,10 @@ AUTHOR = "Russell King w/ plugins by Chris Larson et. al." SECTION = "base" LICENSE = "LGPL" -PR = "r7" +PR = "r8" SRC_URI = "http://download.berlios.de/tslib/tslib-1.0.tar.bz2 \ + file://tslib-input_raw-grab_events.patch;patch=1 \ file://ts.conf \ file://ts.conf-simpad-2.4 \ file://ts.conf-collie-2.4 \ |