├── kindle └── etc │ └── hostname ├── oemeta ├── recipes-lab126 │ └── lipc │ │ ├── files │ │ ├── lipc-daemon-props.conf │ │ └── lipc-daemon-events.conf │ │ └── lipc_0.0.0.bb ├── conf │ ├── machine │ │ ├── kindle-touch.conf │ │ ├── kindle-voyage.conf │ │ └── include │ │ │ └── imx50-common.inc │ └── layer.conf ├── classes │ └── kindle-image.bbclass ├── recipes-gui │ └── ktterm │ │ └── ktterm_git.bb ├── recipes-core │ ├── kollector │ │ └── kollector_git.bb │ └── openlipc │ │ └── openlipc_git.bb └── files │ └── additional-licenses │ └── ASL ├── .gitmodules ├── .gitignore ├── bin ├── mount.kindle ├── kindle-ldfix └── oecore-init ├── LICENSE.txt ├── portage-make.conf └── README.md /kindle/etc/hostname: -------------------------------------------------------------------------------- 1 | kindle 2 | -------------------------------------------------------------------------------- /oemeta/recipes-lab126/lipc/files/lipc-daemon-props.conf: -------------------------------------------------------------------------------- 1 | # Properties exposed by lipc-daemon 2 | 3 | # 4 | logger w /usr/bin/logger -t example 5 | processor r /usr/bin/uname -m 6 | -------------------------------------------------------------------------------- /oemeta/conf/machine/kindle-touch.conf: -------------------------------------------------------------------------------- 1 | #@TYPE: Machine 2 | #@NAME: Kindle Touch 3 | #@SOC: i.MX508 4 | #@DESCRIPTION: Machine configuration for Kindle Touch e-reader 5 | 6 | require conf/machine/include/imx50-common.inc 7 | 8 | SOC_FAMILY = "mx5:mx50:mx508" 9 | 10 | MACHINE_FEATURES += "wifi" 11 | -------------------------------------------------------------------------------- /oemeta/conf/machine/kindle-voyage.conf: -------------------------------------------------------------------------------- 1 | #@TYPE: Machine 2 | #@NAME: Kindle Voyage 3 | #@SOC: i.MX6SL 4 | #@DESCRIPTION: Machine configuration for Kindle Voyage e-reader 5 | 6 | include conf/machine/include/imx-base.inc 7 | include conf/machine/include/tune-cortexa9.inc 8 | 9 | SOC_FAMILY = "mx6:mx6sl" 10 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "tools/bitbake"] 2 | path = tools/bitbake 3 | url = https://github.com/openembedded/bitbake.git 4 | branch = master 5 | ignore = all 6 | [submodule "tools/kindletool"] 7 | path = tools/kindletool 8 | url = https://github.com/NiLuJe/KindleTool.git 9 | branch = master 10 | ignore = all 11 | -------------------------------------------------------------------------------- /oemeta/conf/machine/include/imx50-common.inc: -------------------------------------------------------------------------------- 1 | # Provides the i.MX50 common settings 2 | 3 | require conf/machine/include/imx-base.inc 4 | 5 | # Tune for soft float-point with neon co-processor 6 | DEFAULTTUNE_mx50 ?= "cortexa8t-neon" 7 | require conf/machine/include/tune-cortexa8.inc 8 | 9 | UBOOT_ENTRYPOINT_mx50 = "0x70008000" 10 | -------------------------------------------------------------------------------- /oemeta/classes/kindle-image.bbclass: -------------------------------------------------------------------------------- 1 | # Provides access to files located in mounted Kindle root image 2 | 3 | HOMEPAGE = "http://www.amazon.com/help/kindlesoftwareupdates" 4 | 5 | LICENSE = "ASL" 6 | LIC_FILES_CHKSUM = "file://${LAYER_LICENSE_DIR}/ASL;md5=a74d8cc3ec1d6f912703ad96fccd3d07" 7 | 8 | FILESEXTRAPATHS_append := ":${@os.environ['KINDLE_ROOTDIR']}" 9 | -------------------------------------------------------------------------------- /oemeta/recipes-lab126/lipc/files/lipc-daemon-events.conf: -------------------------------------------------------------------------------- 1 | # Event handling configuration for lipc-daemon 2 | # 3 | # NOTE: By default the event name and all parameters are passed to the script 4 | # as arguments. If you want to ignore them you must add a semi-colon (;) 5 | # to the end of the script command. 6 | 7 | # 8 | testEvent com.example /usr/bin/logger 9 | -------------------------------------------------------------------------------- /oemeta/recipes-gui/ktterm/ktterm_git.bb: -------------------------------------------------------------------------------- 1 | SUMMARY = "Kindle Touch Terminal" 2 | HOMEPAGE = "https://github.com/Arkq/ktterm" 3 | 4 | LICENSE = "MIT" 5 | LIC_FILES_CHKSUM = "file://LICENSE.txt;beginline=5;md5=838c366f69b72c5df05c96dff79b35f2" 6 | 7 | DEPENDS = "json-c gtk+ openlipc vte" 8 | 9 | SRC_URI = "git://github.com/Arkq/ktterm.git" 10 | SRCREV = "master" 11 | 12 | S = "${WORKDIR}/git" 13 | 14 | inherit autotools pkgconfig 15 | 16 | EXTRA_OECONF += "--with-lipc" 17 | -------------------------------------------------------------------------------- /oemeta/conf/layer.conf: -------------------------------------------------------------------------------- 1 | # We have a conf and classes directory, add to BBPATH 2 | BBPATH .= ":${LAYERDIR}" 3 | 4 | # We have a packages directory, add to BBFILES 5 | BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ 6 | ${LAYERDIR}/recipes-*/*/*.bbappend" 7 | 8 | BBFILE_COLLECTIONS += "kindle" 9 | BBFILE_PATTERN_kindle = "^${LAYERDIR}/" 10 | BBFILE_PRIORITY_kindle = "5" 11 | 12 | LAYER_LICENSE_DIR = "${LAYERDIR}/files/additional-licenses" 13 | LICENSE_PATH += "${LAYER_LICENSE_DIR}" 14 | -------------------------------------------------------------------------------- /oemeta/recipes-core/kollector/kollector_git.bb: -------------------------------------------------------------------------------- 1 | SUMMARY = "Collections builder for Kindle" 2 | HOMEPAGE = "https://github.com/Arkq/kollector" 3 | 4 | LICENSE = "MIT" 5 | LIC_FILES_CHKSUM = "file://LICENSE.txt;beginline=5;md5=838c366f69b72c5df05c96dff79b35f2" 6 | 7 | DEPENDS = "curl glib-2.0 openlipc sqlite3 util-linux" 8 | 9 | SRC_URI = "git://github.com/Arkq/kollector.git" 10 | SRCREV = "master" 11 | 12 | S = "${WORKDIR}/git" 13 | 14 | inherit autotools pkgconfig 15 | 16 | EXTRA_OECONF += "--with-watcher" 17 | -------------------------------------------------------------------------------- /oemeta/recipes-core/openlipc/openlipc_git.bb: -------------------------------------------------------------------------------- 1 | SUMMARY = "Open-source LIPC header file" 2 | HOMEPAGE = "https://github.com/Arkq/openlipc" 3 | 4 | LICENSE = "MIT" 5 | LIC_FILES_CHKSUM = "file://LICENSE.txt;beginline=5;md5=838c366f69b72c5df05c96dff79b35f2" 6 | 7 | DEPENDS = "lipc" 8 | 9 | SRC_URI = "git://github.com/Arkq/openlipc.git" 10 | SRCREV = "master" 11 | 12 | S = "${WORKDIR}/git" 13 | 14 | inherit autotools pkgconfig 15 | 16 | EXTRA_OECONF += "--without-lipc-prop" 17 | EXTRA_OECONF += "--without-lipc-probe" 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Object files 2 | *.o 3 | *.ko 4 | *.obj 5 | *.elf 6 | 7 | # Libraries 8 | *.lib 9 | *.a 10 | 11 | # Shared objects (inc. Windows DLLs) 12 | *.dll 13 | *.so 14 | *.so.* 15 | *.dylib 16 | 17 | # Executables 18 | *.exe 19 | *.out 20 | *.app 21 | *.i*86 22 | *.x86_64 23 | *.hex 24 | 25 | # Autotools 26 | /autom4te.cache/ 27 | /build*/ 28 | /aclocal.m4 29 | /compile 30 | /configure 31 | /depcomp 32 | /install-sh 33 | /missing 34 | /test-driver 35 | Makefile.in 36 | config.h.in 37 | *~ 38 | 39 | # Kindle root image 40 | /kindle/* 41 | /kindle-rootfs.img 42 | /kindle-userfs.img 43 | 44 | # OpenEmbedded core 45 | /oecore 46 | -------------------------------------------------------------------------------- /bin/mount.kindle: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Mount wrapper for Kindle partition images. 3 | 4 | # the root directory of the Development Environment 5 | DEVDIR="$(dirname "$0")/.." 6 | 7 | # default mount options 8 | MOUNTDIR="$DEVDIR/kindle" 9 | MOUNTOPT="ro" 10 | 11 | function usage { 12 | cat << EOF 13 | usage: $0 [options] 14 | options: 15 | -h display this help text and exit 16 | -r mount root partition (default option) 17 | -u mount user data partition 18 | -w mount the filesystem read/write 19 | EOF 20 | } 21 | 22 | while getopts "hruw" opt; do 23 | case "$opt" in 24 | h) 25 | usage 26 | exit 1 27 | ;; 28 | r) 29 | MOUNTDIR="$DEVDIR/kindle" 30 | ;; 31 | u) 32 | MOUNTDIR="$DEVDIR/kindle/var/local" 33 | ;; 34 | w) 35 | MOUNTOPT="rw" 36 | ;; 37 | *) 38 | exit 1 39 | ;; 40 | esac 41 | done 42 | 43 | shift $((OPTIND - 1)) 44 | [ "$1" = "--" ] && shift 45 | 46 | [ -z "$1" ] && { usage; exit 1; } 47 | 48 | exec mount -o loop -o "$MOUNTOPT" "$1" "$MOUNTDIR" 49 | -------------------------------------------------------------------------------- /oemeta/recipes-lab126/lipc/lipc_0.0.0.bb: -------------------------------------------------------------------------------- 1 | SUMMARY = "Kindle LIPC library" 2 | 3 | inherit kindle-image 4 | 5 | SRC_URI = "\ 6 | file://usr/bin/lipc-hash-prop \ 7 | file://usr/bin/lipc-send-event \ 8 | file://usr/bin/lipc-wait-event \ 9 | file://usr/bin/lipc-daemon \ 10 | file://usr/bin/lipc-get-prop \ 11 | file://usr/bin/lipc-probe \ 12 | file://usr/bin/lipc-set-prop \ 13 | file://usr/lib/liblipc.so \ 14 | file://lipc-daemon-events.conf \ 15 | file://lipc-daemon-props.conf \ 16 | " 17 | 18 | RDEPENDS_${PN} = "dbus glib-2.0" 19 | 20 | do_install() { 21 | 22 | install -d ${D}${sysconfdir} 23 | install -m 0644 ${WORKDIR}/lipc-daemon-events.conf ${D}${sysconfdir} 24 | install -m 0644 ${WORKDIR}/lipc-daemon-props.conf ${D}${sysconfdir} 25 | 26 | install -d ${D}${bindir} 27 | install -m 0755 ${WORKDIR}/usr/bin/* ${D}${bindir} 28 | 29 | install -d ${D}${libdir} 30 | install -m 0755 ${WORKDIR}/usr/lib/liblipc.so ${D}${libdir}/liblipc.so.0.0.0 31 | ln -sf liblipc.so.0.0.0 ${D}${libdir}/liblipc.so.0 32 | ln -sf liblipc.so.0.0.0 ${D}${libdir}/liblipc.so 33 | 34 | } 35 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2016 Arkadiusz Bokowy 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /portage-make.conf: -------------------------------------------------------------------------------- 1 | # make.conf - exemplary settings for Portage 2 | # These settings assume, that one uses 1st gen Kindle Touch device. 3 | 4 | CHOST=armv7a-softfp-linux-gnueabi 5 | CBUILD=x86_64-pc-linux-gnu 6 | ARCH=arm 7 | 8 | HOSTCC=x86_64-pc-linux-gnu-gcc 9 | E_MACHINE=EM_ARM 10 | 11 | ROOT=/usr/${CHOST}/ 12 | 13 | ACCEPT_KEYWORDS="arm" 14 | 15 | USE="${ARCH} zlib make-symlinks minimal -introspection" 16 | USE="${USE} -acl -nls" 17 | 18 | PYTHON_TARGETS="python2_7" 19 | 20 | MARCH_TUNE="-march=armv7-a -mtune=cortex-a8 -mfloat-abi=softfp -mfpu=neon -mthumb" 21 | CFLAGS="${MARCH_TUNE} -O3 -fno-stack-protector -fomit-frame-pointer -pipe" 22 | CXXFLAGS="${CFLAGS}" 23 | MAKEOPTS="-j2" 24 | 25 | FEATURES="-collision-protect sandbox buildpkg noman noinfo nodoc" 26 | 27 | EMERGE_DEFAULT_OPTS="--ask --verbose --quiet --nospinner --usepkg --binpkg-respect-use=y" 28 | #EMERGE_DEFAULT_OPTS="${EMERGE_DEFAULT_OPTS} --buildpkg ${BUILDPKG_EXCLUDE}" 29 | 30 | # Be sure we don't overwrite pkgs from another repo 31 | PKGDIR=/mnt/pkgtbz/cross-${CHOST}/ 32 | PORTAGE_TMPDIR=${ROOT}tmp/ 33 | 34 | ELIBC="glibc" 35 | 36 | PKG_CONFIG_PATH="${ROOT}usr/lib/pkgconfig/" 37 | PORTDIR="/usr/portage" 38 | DISTDIR="/usr/portage/distfiles" 39 | GENTOO_MIRRORS="http://distfiles.gentoo.org" 40 | -------------------------------------------------------------------------------- /bin/kindle-ldfix: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Linker script fix for Kindle image. 3 | 4 | # the root directory of the Kindle image 5 | KINDLEROOT="$(cd "$(dirname "$0")/../kindle"; pwd)" 6 | # interactive mode - ask before updating files 7 | INTERACTIVE=true 8 | 9 | function usage { 10 | cat << EOF 11 | usage: $0 [options] 12 | options: 13 | -h display this help text and exit 14 | -f non-interactive mode 15 | EOF 16 | } 17 | 18 | while getopts "hf" opt; do 19 | case "$opt" in 20 | h) 21 | usage 22 | exit 1 23 | ;; 24 | f) 25 | INTERACTIVE=false 26 | ;; 27 | *) 28 | exit 1 29 | ;; 30 | esac 31 | done 32 | 33 | shift $((OPTIND - 1)) 34 | [ "$1" = "--" ] && shift 35 | 36 | [ -n "$1" ] && { usage; exit 1; } 37 | 38 | # test if Kindle root image is mounted 39 | if ! [ -d "$KINDLEROOT/usr/lib" ]; then 40 | echo "Kindle root directory: $KINDLEROOT" 41 | echo "ERROR: Kindle root image not mounted." 42 | exit 1 43 | fi 44 | 45 | # change directory for the simplicity's sake 46 | cd "$KINDLEROOT/usr/lib" 47 | 48 | for FILE in `grep -s -l --binary-files=without-match GROUP *.so`; do 49 | 50 | if egrep -q " (/usr)*/lib/" "$FILE"; then 51 | if [ $INTERACTIVE = true ]; then 52 | read -p "Fixing: $KINDLEROOT/usr/lib/$FILE [y/N]? " -n 1 -r 53 | echo; [[ ! "$REPLY" =~ ^[Yy]$ ]] && continue 54 | else 55 | echo "Fixing: $KINDLEROOT/usr/lib/$FILE" 56 | fi 57 | sed -e 's$ /lib/$ ../../lib/$g' -e 's$ /usr/lib/$ $g' -i.ldfix "$FILE" 58 | fi 59 | 60 | done 61 | -------------------------------------------------------------------------------- /bin/oecore-init: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Initialize OpenEmbedded subsystem. 3 | 4 | # test whatever this script has been sourced or executed 5 | if [ "$(basename "$0")" = "oecore-init" ]; then 6 | 7 | # Script has been executed, so it is possible to determine the root directory 8 | # of our development environment. After changing the directory we can be sure 9 | # that we know the exact location of our components. 10 | DEVDIR="$(cd "$(dirname "$0")/.."; pwd)" 11 | cd "$DEVDIR" 12 | 13 | if ! [ -f oecore/oe-init-build-env ]; then 14 | git clone --depth 1 https://github.com/openembedded/openembedded-core.git oecore 15 | fi 16 | 17 | if ! [ -d oecore/meta-fsl-arm ]; then 18 | git clone --depth 1 git://git.yoctoproject.org/meta-fsl-arm oecore/meta-fsl-arm 19 | fi 20 | 21 | ln -fnrs tools/bitbake oecore/bitbake 22 | ln -fnrs oemeta oecore/meta-kindle 23 | 24 | # Unfortunately, BitBake is not compatible with python 3K. Systems with the 25 | # default interpreter set to 3K are required to change their default, which 26 | # is not welcomed. As a quick & dirty fix, we will make python 2 appears as 27 | # a default via the PATH environmental variable manipulation. 28 | mkdir -p build/.bin 29 | ln -fs "$(which python2)" build/.bin/python 30 | 31 | # Initialize build shell environment. It will initialize conf directory if 32 | # needed, which is required for the next setup stage. 33 | export PATH=$DEVDIR/bin:$DEVDIR/build/.bin:$PATH 34 | source oecore/oe-init-build-env 35 | 36 | # add layers 37 | bitbake-layers add-layer $DEVDIR/oecore/meta-fsl-arm 38 | bitbake-layers add-layer $DEVDIR/oecore/meta-kindle 39 | 40 | echo 41 | echo "# Core meta-data for OpenEmbedded has been initialized. Now, you can source" 42 | echo "# this file as shown below, which will initialize build environment." 43 | echo 44 | echo "cd $DEVDIR && . bin/oecore-init" 45 | 46 | else 47 | export PATH=$(pwd)/bin:$(pwd)/build/.bin:$PATH 48 | export KINDLE_ROOTDIR=$(pwd)/kindle 49 | export BB_ENV_EXTRAWHITE="KINDLE_ROOTDIR" 50 | source oecore/oe-init-build-env 51 | fi 52 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Development Environment for Kindle 2 | ================================== 3 | 4 | **Disclaimer:** This development environment is based on a cross-compiler toolchain, however it 5 | might be used on a native [ARM](https://en.wikipedia.org/wiki/ARM_architecture)-based host (e.g. 6 | Kindle device) as well. 7 | 8 | 9 | Cross-compiler setup 10 | -------------------- 11 | 12 | [Kindle devices](https://en.wikipedia.org/wiki/Amazon_Kindle) are based on the [Freescale 13 | i.MX](https://en.wikipedia.org/wiki/I.MX) CPU family. If performance is not an issue, one might 14 | use generic ARM CPU architecture during compilation, however this will produce sub-optimal 15 | executables. In order to create optimal setup environment, please check which CPU particular 16 | device has, and use appropriate settings. 17 | 18 | 19 | ### OpenEmbedded build framework 20 | 21 | Using the [OpenEmbedded](http://www.openembedded.org/) build framework seems to be the most 22 | straightforward approach for the cross-complier setup. This framework provides cross-compilation 23 | toolchain (built from scratches), plus optimization patches required for ARM architecture. 24 | 25 | Firstly, you have to initialize the build environment. To do so, run the initialization script 26 | provided by this repository as follows: 27 | 28 | $ ./bin/oecore-init 29 | 30 | This script will fetch required OpenEmbedded components and will pre-setup build environment for 31 | the ARM architecture. Next step is to tune auto-generated local configuration file (local.conf), 32 | which will be placed in the build/conf/ directory. Set the desired machine as a build target, 33 | e.g.: 34 | 35 | > MACHINE = "kindle-touch" 36 | 37 | For more information see the [oemeta](/oemeta) directory, which contains Kindle-specific 38 | OpenEmbedded layer. 39 | 40 | Afterwards, source the initialization script (`. ./bin/oecore-init`) and you are ready to go. 41 | 42 | 43 | ### Gentoo crossdev 44 | 45 | The second easiest way of creating optimal cross-compilation setup is to use [Gentoo 46 | Linux](https://www.gentoo.org/) as a build environment. This instruction is dedicated for the 1st 47 | generation Kindle Touch device. 48 | 49 | Install GCC cross-compilation toolchain as follows (it might be required to specify exact libc or 50 | gcc version for build to succeed): 51 | 52 | # emerge sys-devel/crossdev 53 | # crossdev -t armv7a-softfp-linux-gnueabi 54 | 55 | Tune the pre-generated portage make.conf file (located in the 56 | /usr/armv7a-softfp-linux-gnueabi/etc/portage/ directory) to match CPU capabilities. 57 | 58 | > -march=armv7-a 59 | > -mtune=cortex-a8 60 | > -mfloat-abi=softfp 61 | > -mfpu=neon 62 | > -mthumb 63 | 64 | See the exemplary [portage-make.conf](/portage-make.conf) file, it might give you a hint. 65 | 66 | 67 | Mounting root image 68 | ------------------- 69 | 70 | Download an appropriate firmware from the Amazon Kindle Software Updates 71 | [page](http://www.amazon.com/help/kindlesoftwareupdates) and unpack it using the 72 | [kindletool](https://github.com/NiLuJe/KindleTool) extraction tool (which source is linked as a 73 | submodule in the [tools](/tools) directory), as follows: 74 | 75 | $ kindletool extract update_kindle_x.x.x.bin /tmp 76 | $ gunzip /tmp/rootfs.img.gz 77 | $ mv /tmp/rootfs.img kindle-rootfs.img 78 | 79 | Mount extracted image using provided mount wrapper (root privileges might be required): 80 | 81 | # ./bin/mount.kindle -w kindle-rootfs.img 82 | 83 | The original Kindle firmware image contains linker-script libraries which are not suitable for 84 | cross-compilation. In order to link executables with libraries present on the Kindle root image, 85 | it is required to fix these linker-scripts. To do so, use provided `kindle-ldfix` tool as follows: 86 | 87 | # ./bin/kindle-ldfix 88 | 89 | For more information see 90 | [this thread](https://stackoverflow.com/questions/7476625/set-global-gcc-default-search-paths) on 91 | Stack Overflow. 92 | 93 | 94 | Further reading 95 | --------------- 96 | 97 | 1. [Kindle Touch Hacking](http://wiki.mobileread.com/wiki/Kindle_Touch_Hacking) 98 | 2. [Kindle Touch hackers group](https://bitbucket.org/katey_hack/) 99 | 3. [OpenEmbedded build framework](http://www.openembedded.org/) 100 | 4. [Toolchains](http://elinux.org/Toolchains) 101 | -------------------------------------------------------------------------------- /oemeta/files/additional-licenses/ASL: -------------------------------------------------------------------------------- 1 | Amazon Software License 2 | 3 | 1. Definitions 4 | 5 | "Licensor" means any person or entity that distributes its Work. 6 | 7 | "Software" means the original work of authorship made available under this 8 | License. 9 | 10 | "Work" means the Software and any additions to or derivative works of the 11 | Software that are made available under this License. 12 | 13 | The terms "reproduce", "reproduction", "derivative works", and "distribution" 14 | have the meaning as provided under U.S. copyright law; provided, however, that 15 | for the purposes of this License, derivative works shall not include works 16 | that remain separable from, or merely link (or bind by name) to the interfaces 17 | of, the Work. 18 | 19 | Works, including the Software, are "made available" under this License by 20 | including in or with the Work either (a) a copyright notice referencing the 21 | applicability of this License to the Work, or (b) a copy of this License. 22 | 23 | 2. License Grants 24 | 25 | 2.1 Copyright Grant. Subject to the terms and conditions of this License, 26 | each Licensor grants to you a perpetual, worldwide, non-exclusive, 27 | royalty-free, copyright license to reproduce, prepare derivative works of, 28 | publicly display, publicly perform, sublicense and distribute its Work and 29 | any resulting derivative works in any form. 30 | 31 | 2.2 Patent Grant. Subject to the terms and conditions of this License, each 32 | Licensor grants to you a perpetual, worldwide, non-exclusive, royalty-free 33 | patent license to make, have made, use, sell, offer for sale, import, and 34 | otherwise transfer its Work, in whole or in part. The foregoing license 35 | applies only to the patent claims licensable by Licensor that would be 36 | infringed by Licensor's Work (or portion thereof) individually and excluding 37 | any combinations with any other materials or technology. 38 | 39 | 3. Limitations 40 | 41 | 3.1 Redistribution. You may reproduce or distribute the Work only if (a) you 42 | do so under this License, (b) you include a complete copy of this License 43 | with your distribution, and (c) you retain without modification any 44 | copyright, patent, trademark, or attribution notices that are present in the 45 | Work. 46 | 47 | 3.2 Derivative Works. You may specify that additional or different terms 48 | apply to the use, reproduction, and distribution of your derivative works of 49 | the Work ("Your Terms") only if (a) Your Terms provide that the use 50 | limitation in Section 3.3 applies to your derivative works, and (b) you 51 | identify the specific derivative works that are subject to Your Terms. 52 | Notwithstanding Your Terms, this License (including the redistribution 53 | requirements in Section 3.1) will continue to apply to the Work itself. 54 | 55 | 3.3 Use Limitation. The Work and any derivative works thereof only may be 56 | used or intended for use with the web services, computing platforms or 57 | applications provided by Amazon.com, Inc. or its affiliates, including 58 | Amazon Web Services, Inc. 59 | 60 | 3.4 Patent Claims. If you bring or threaten to bring a patent claim against 61 | any Licensor (including any claim, cross-claim or counterclaim in a lawsuit) 62 | to enforce any patents that you allege are infringed by any Work, then your 63 | rights under this License from such Licensor (including the grants in 64 | Sections 2.1 and 2.2) will terminate immediately. 65 | 66 | 3.5 Trademarks. This License does not grant any rights to use any Licensor's 67 | or its affiliates' names, logos, or trademarks, except as necessary to 68 | reproduce the notices described in this License. 69 | 70 | 3.6 Termination. If you violate any term of this License, then your rights 71 | under this License (including the grants in Sections 2.1 and 2.2) will 72 | terminate immediately. 73 | 74 | 4. Disclaimer of Warranty. 75 | 76 | THE WORK IS PROVIDED "AS IS" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 77 | EITHER EXPRESS OR IMPLIED, INCLUDING WARRANTIES OR CONDITIONS OF 78 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE OR NON-INFRINGEMENT. 79 | YOU BEAR THE RISK OF UNDERTAKING ANY ACTIVITIES UNDER THIS LICENSE. SOME 80 | STATES' CONSUMER LAWS DO NOT ALLOW EXCLUSION OF AN IMPLIED WARRANTY, SO THIS 81 | DISCLAIMER MAY NOT APPLY TO YOU. 82 | 83 | 5. Limitation of Liability. 84 | 85 | EXCEPT AS PROHIBITED BY APPLICABLE LAW, IN NO EVENT AND UNDER NO LEGAL THEORY, 86 | WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE SHALL ANY 87 | LICENSOR BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY DIRECT, INDIRECT, 88 | SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATED TO 89 | THIS LICENSE, THE USE OR INABILITY TO USE THE WORK (INCLUDING BUT NOT LIMITED 90 | TO LOSS OF GOODWILL, BUSINESS INTERRUPTION, LOST PROFITS OR DATA, COMPUTER 91 | FAILURE OR MALFUNCTION, OR ANY OTHER COMMERCIAL DAMAGES OR LOSSES), EVEN IF 92 | THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 93 | 94 | Effective Date – April 18, 2008 © 2008 Amazon.com, Inc. or its affiliates. All 95 | rights reserved. 96 | --------------------------------------------------------------------------------