packages: Separate out most of the remaining packages into recipes

Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
This commit is contained in:
Richard Purdie
2010-09-01 19:09:11 +01:00
parent caab7fc509
commit d62ee7eaf2
569 changed files with 0 additions and 76 deletions

View File

@@ -0,0 +1,59 @@
DESCRIPTION = "Console based version of exmap, a memory usage analysis tool"
HOMEPAGE = "http://projects.o-hand.com/exmap-console"
SECTION = "devel"
LICENSE = "GPL"
DEPENDS = "virtual/kernel readline glib-2.0"
SRC_URI = "http://projects.o-hand.com/sources/exmap-console/exmap-console-${PV}.tgz"
TEMPPACKAGE_ARCH := "${PACKAGE_ARCH}"
inherit module-base
inherit autotools
PACKAGE_ARCH = "${TEMPPACKAGE_ARCH}"
PACKAGES =+ "exmap-server kernel-module-exmap"
FILES_exmap-console = "${bindir}/exmap ${bindir}/exmapd"
RDEPENDS_exmap-console += "kernel-module-exmap"
FILES_exmap-server = "${bindir}/exmapserver"
RDEPENDS_exmap-server += "kernel-module-exmap"
FILES_kernel-module-exmap = "${base_libdir}"
PACKAGE_ARCH_kernel-module-exmap = "${MACHINE_ARCH}"
RDEPENDS_kernel-module-exmap += "update-modules kernel-image-${KERNEL_VERSION}"
S = "${WORKDIR}/exmap-console-${PV}"
export MODULE_PATH="${D}${base_libdir}/modules/${KERNEL_VERSION}"
do_compile() {
cd ${S}/src
make
cd ${S}/kernel
unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR} \
KERNEL_SRC=${STAGING_KERNEL_DIR} \
KERNEL_VERSION=${KERNEL_VERSION} \
CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
${MAKE_TARGETS}
}
do_install() {
oe_runmake 'DESTDIR=${D}' 'DEPMOD=/bin/true' install
}
pkg_postinst_append_kernel-module-exmap () {
if [ -n "$D" ]; then
exit 1
fi
depmod -a
update-modules || true
}
pkg_postrm_append_kernel-module-exmap () {
update-modules || true
}

View File

@@ -0,0 +1,3 @@
require exmap-console.inc
PR = "r8"

View File

@@ -0,0 +1,8 @@
require exmap-console.inc
PV = "0.4+svnr${SRCREV}"
PR = "r5"
SRC_URI = "svn://svn.o-hand.com/repos/misc/trunk;module=exmap-console;proto=http"
S = "${WORKDIR}/exmap-console"

View File

@@ -1,31 +0,0 @@
# "extern inline" in traditional gcc means that the function should be
# inlined wherever it's seen, while in C99, "extern inline" means that i
# the function should only be inlined where the inline definition is
# seen while in other places it's not inlined:
# http://gcc.gnu.org/ml/gcc/2006-11/msg00006.html
#
# gmp checks "--std=gnu99" to use C99 convention however it internally
# defines some "extern inline" functions in gmp.h, which is included
# by mainly .c files and finally lead a flood of redefinition function
# errors when linking objects together.
#
# So disable C99/ANSI detection to stick to tranditional gcc behavior
#
# by Kevin Tian <kevin.tian@intel.com>, 2010-08-13
#
# (this patch is licensed under GPLv2+)
diff --git a/configure.in b/configure.in
index 450cc92..aab0b59 100644
--- a/configure.in
+++ b/configure.in
@@ -1869,9 +1869,7 @@ AC_SUBST(DEFN_LONG_LONG_LIMB)
# The C compiler and preprocessor, put into ANSI mode if possible.
AC_PROG_CC
-AC_PROG_CC_STDC
AC_PROG_CPP
-GMP_H_ANSI
# The C compiler on the build system, and associated tests.

View File

@@ -1,16 +0,0 @@
SECTION = "devel"
DESCRIPTION = "GNU multiprecision arithmetic library"
HOMEPAGE = "http://www.swox.com/gmp/"
LICENSE = "GPLv3 LGPLv3"
SRC_URI = "ftp://ftp.gnu.org/gnu/gmp/gmp-${PV}.tar.bz2 \
file://configure.patch \
file://amd64.patch "
inherit autotools
ARM_INSTRUCTION_SET = "arm"
acpaths = ""
BBCLASSEXTEND = "native nativesdk"

View File

@@ -1,14 +0,0 @@
--- gmp-4.1.4/longlong.h.orig 2004-04-22 00:34:28.000000000 +0200
+++ gmp-4.1.4/longlong.h 2005-07-18 01:13:06.000000000 +0200
@@ -738,8 +738,10 @@
count is only an int. */
#define count_trailing_zeros(count, x) \
do { \
+ UDItype __cbtmp; \
ASSERT ((x) != 0); \
- __asm__ ("bsfq %1,%q0" : "=r" (count) : "rm" ((UDItype)(x))); \
+ __asm__ ("bsfq %1,%0" : "=r" (__cbtmp) : "rm" ((UDItype)(x))); \
+ (count) = __cbtmp; \
} while (0)
#endif /* x86_64 */

View File

@@ -1,195 +0,0 @@
acinclude.m4 | 26 ++++++++++++++------------
configure.in | 24 +++++++++---------------
2 files changed, 23 insertions(+), 27 deletions(-)
Index: gmp-5.0.1/acinclude.m4
===================================================================
--- gmp-5.0.1.orig/acinclude.m4
+++ gmp-5.0.1/acinclude.m4
@@ -30,20 +30,20 @@ dnl a_out.exe - OpenVMS DEC C called
dnl conftest.exe - various DOS compilers
-define(IA64_PATTERN,
+define([IA64_PATTERN],
[[ia64*-*-* | itanium-*-* | itanium2-*-*]])
dnl Need to be careful not to match m6811, m6812, m68hc11 and m68hc12, all
dnl of which config.sub accepts. (Though none of which are likely to work
dnl with GMP.)
dnl
-define(M68K_PATTERN,
+define([M68K_PATTERN],
[[m68k-*-* | m68[0-9][0-9][0-9]-*-*]])
-define(POWERPC64_PATTERN,
+define([POWERPC64_PATTERN],
[[powerpc64-*-* | powerpc64le-*-* | powerpc620-*-* | powerpc630-*-* | powerpc970-*-* | power[3-9]-*-*]])
-define(X86_PATTERN,
+define([X86_PATTERN],
[[i?86*-*-* | k[5-8]*-*-* | pentium*-*-* | athlon-*-* | viac3*-*-* | geode*-*-* | atom-*-*]])
define(X86_64_PATTERN,
@@ -64,7 +64,7 @@ dnl x86 -> x86
dnl x86/k6 -> k6
dnl x86/k6/mmx -> k6_mmx
-define(GMP_FAT_SUFFIX,
+define([GMP_FAT_SUFFIX],
[[$1=`echo $2 | sed -e '/\//s:^[^/]*/::' -e 's:[\\/]:_:g'`]])
@@ -73,7 +73,7 @@ dnl ----------------------------------
dnl Emit code to remove any occurrence of ITEM from $LISTVAR. ITEM can be a
dnl shell expression like $foo if desired.
-define(GMP_REMOVE_FROM_LIST,
+define([GMP_REMOVE_FROM_LIST],
[remove_from_list_tmp=
for remove_from_list_i in $[][$1]; do
if test $remove_from_list_i = [$2]; then :;
@@ -89,12 +89,12 @@ dnl GMP_STRIP_PATH(subdir)
dnl ----------------------
dnl Strip entries */subdir from $path and $fat_path.
-define(GMP_STRIP_PATH,
+define([GMP_STRIP_PATH],
[GMP_STRIP_PATH_VAR(path, [$1])
GMP_STRIP_PATH_VAR(fat_path, [$1])
])
-define(GMP_STRIP_PATH_VAR,
+define([GMP_STRIP_PATH_VAR],
[tmp_path=
for i in $[][$1]; do
case $i in
@@ -115,7 +115,7 @@ dnl
dnl Dummy value for GMP_LIMB_BITS is enough
dnl for all current configure-time uses of gmp.h.
-define(GMP_INCLUDE_GMP_H,
+define([GMP_INCLUDE_GMP_H],
[[#define __GMP_WITHIN_CONFIGURE 1 /* ignore template stuff */
#define GMP_NAIL_BITS $GMP_NAIL_BITS
#define GMP_LIMB_BITS 123
@@ -130,7 +130,7 @@ dnl Expand at autoconf time to the valu
dnl FILE. The regexps here aren't very rugged, but are enough for gmp.
dnl /dev/null as a parameter prevents a hang if $2 is accidentally omitted.
-define(GMP_HEADER_GETVAL,
+define([GMP_HEADER_GETVAL],
[patsubst(patsubst(
esyscmd([grep "^#define $1 " $2 /dev/null 2>/dev/null]),
[^.*$1[ ]+],[]),
@@ -144,7 +144,7 @@ dnl The gmp version number, extracted f
dnl autoconf time. Two digits like 3.0 if patchlevel <= 0, or three digits
dnl like 3.0.1 if patchlevel > 0.
-define(GMP_VERSION,
+define([GMP_VERSION],
[GMP_HEADER_GETVAL(__GNU_MP_VERSION,gmp-h.in)[]dnl
.GMP_HEADER_GETVAL(__GNU_MP_VERSION_MINOR,gmp-h.in)[]dnl
.GMP_HEADER_GETVAL(__GNU_MP_VERSION_PATCHLEVEL,gmp-h.in)])
@@ -1506,7 +1506,9 @@ esac
echo ["define(<CONFIG_TOP_SRCDIR>,<\`$tmp'>)"] >>$gmp_tmpconfigm4
# All CPUs use asm-defs.m4
-echo ["include][(CONFIG_TOP_SRCDIR\`/mpn/asm-defs.m4')"] >>$gmp_tmpconfigm4i
+echo -n ["include("] >>$gmp_tmpconfigm4i
+echo -n ["CONFIG_TOP_SRCDIR\`/mpn/asm-defs.m4'"] >>$gmp_tmpconfigm4i
+echo [")"] >>$gmp_tmpconfigm4i
])
Index: gmp-5.0.1/configure.in
===================================================================
--- gmp-5.0.1.orig/configure.in
+++ gmp-5.0.1/configure.in
@@ -29,12 +29,6 @@ AC_REVISION($Revision$)
AC_PREREQ(2.59)
AC_INIT(GNU MP, GMP_VERSION, gmp-bugs@gmplib.org, gmp)
AC_CONFIG_SRCDIR(gmp-impl.h)
-m4_pattern_forbid([^[ \t]*GMP_])
-m4_pattern_allow(GMP_LDFLAGS)
-m4_pattern_allow(GMP_LIMB_BITS)
-m4_pattern_allow(GMP_MPARAM_H_SUGGEST)
-m4_pattern_allow(GMP_NAIL_BITS)
-m4_pattern_allow(GMP_NUMB_BITS)
# If --target is not used then $target_alias is empty, but if say
# "./configure athlon-pc-freebsd3.5" is used, then all three of
@@ -303,7 +297,7 @@ AH_VERBATIM([HAVE_HOST_CPU_1],
# After GMP specific searches and tests, the standard autoconf AC_PROG_CC is
# called. User selections of CC etc are respected.
#
-# Care is taken not to use macros like AC_TRY_COMPILE during the GMP
+# Care is taken not to use macros like AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[],[]) during the GMP
# pre-testing, since they of course depend on AC_PROG_CC, and also some of
# them cache their results, which is not wanted.
#
@@ -395,7 +389,7 @@ abilist="standard"
# FIXME: We'd like to prefer an ANSI compiler, perhaps by preferring
# c89 over cc here. But note that on HP-UX c89 provides a castrated
# environment, and would want to be excluded somehow. Maybe
-# AC_PROG_CC_STDC already does enough to stick cc into ANSI mode and
+# already does enough to stick cc into ANSI mode and
# we don't need to worry.
#
cclist="gcc cc"
@@ -1580,7 +1574,7 @@ esac
CFLAGS_or_unset=${CFLAGS-'(unset)'}
CPPFLAGS_or_unset=${CPPFLAGS-'(unset)'}
-cat >&AC_FD_CC <<EOF
+cat >&AS_MESSAGE_LOG_FD() <<EOF
User:
ABI=$ABI
CC=$CC
@@ -1987,7 +1981,6 @@ AC_SUBST(DEFN_LONG_LONG_LIMB)
# The C compiler and preprocessor, put into ANSI mode if possible.
AC_PROG_CC
-AC_PROG_CC_STDC
AC_PROG_CPP
GMP_H_ANSI
@@ -2010,11 +2003,11 @@ AC_SUBST(CCAS)
# The C++ compiler, if desired.
want_cxx=no
+AC_PROG_CXX
if test $enable_cxx != no; then
test_CXXFLAGS=${CXXFLAGS+set}
- AC_PROG_CXX
- echo "CXXFLAGS chosen by autoconf: $CXXFLAGS" >&AC_FD_CC
+ echo "CXXFLAGS chosen by autoconf: $CXXFLAGS" >&AS_MESSAGE_LOG_FD()
cxxflags_ac_prog_cxx=$CXXFLAGS
cxxflags_list=ac_prog_cxx
@@ -2120,7 +2113,7 @@ case $host in
esac
-cat >&AC_FD_CC <<EOF
+cat >&AS_MESSAGE_LOG_FD() <<EOF
Decided:
ABI=$ABI
CC=$CC
@@ -3376,7 +3369,7 @@ GMP_FINISH
# FIXME: Upcoming version of autoconf/automake may not like broken lines.
# Right now automake isn't accepting the new AC_CONFIG_FILES scheme.
-AC_OUTPUT(Makefile \
+AC_CONFIG_FILES([Makefile \
mpbsd/Makefile mpf/Makefile mpn/Makefile mpq/Makefile \
mpz/Makefile printf/Makefile scanf/Makefile cxx/Makefile \
tests/Makefile tests/devel/Makefile tests/mpbsd/Makefile \
@@ -3385,4 +3378,5 @@ AC_OUTPUT(Makefile \
tests/cxx/Makefile \
doc/Makefile tune/Makefile \
demos/Makefile demos/calc/Makefile demos/expr/Makefile \
- gmp.h:gmp-h.in mp.h:mp-h.in)
+ gmp.h:gmp-h.in mp.h:mp-h.in])
+AC_OUTPUT

View File

@@ -1,26 +0,0 @@
--- gmp-4.1.4/mpn/sh/add_n.s 2005/11/17 08:44:00 1.1
+++ gmp-4.1.4/mpn/sh/add_n.s 2005/11/17 08:18:57
@@ -29,8 +29,8 @@
.text
.align 2
- .global ___gmpn_add_n
-___gmpn_add_n:
+ .global __gmpn_add_n
+__gmpn_add_n:
mov #0,r3 ! clear cy save reg
Loop: mov.l @r5+,r1
--- gmp-4.1.4/mpn/sh/sub_n.s 2005/11/17 08:44:04 1.1
+++ gmp-4.1.4/mpn/sh/sub_n.s 2005/11/17 08:18:59
@@ -29,8 +29,8 @@
.text
.align 2
- .global ___gmpn_sub_n
-___gmpn_sub_n:
+ .global __gmpn_sub_n
+__gmpn_sub_n:
mov #0,r3 ! clear cy save reg
Loop: mov.l @r5+,r1

View File

@@ -1,13 +0,0 @@
Index: gmp-4.2.4/Makefile.am
===================================================================
--- gmp-4.2.4.orig/Makefile.am 2008-09-10 19:31:27.000000000 +0000
+++ gmp-4.2.4/Makefile.am 2009-07-06 20:19:19.000000000 +0000
@@ -106,7 +106,7 @@
# but anyone knowledgable enough to be playing with exec_prefix will be able
# to address that.
#
-includeexecdir = $(exec_prefix)/include
+includeexecdir = $(includedir)
include_HEADERS = $(GMPXX_HEADERS_OPTION)
nodist_includeexec_HEADERS = gmp.h $(MPBSD_HEADERS_OPTION)
lib_LTLIBRARIES = libgmp.la $(GMPXX_LTLIBRARIES_OPTION) $(MPBSD_LTLIBRARIES_OPTION)

View File

@@ -1,14 +0,0 @@
DESCRIPTION = "GMP is a free library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating point numbers"
HOMEPAGE = "http://gmplib.org/"
BUGTRACKER = "http://gmplib.org/mailman/listinfo/gmp-bugs"
# demo is licensed under GPLv2+, which however we don't package at all
LICENSE = "LGPLv2.1+"
LIC_FILES_CHKSUM = "file://COPYING;md5=892f569a555ba9c07a568a7c0c4fa63a \
file://COPYING.LIB;md5=fbc093901857fcd118f065f900982c24 \
file://gmp-h.in;startline=6;endline=21;md5=5e25ffd16996faba8c1cd27b04b16099"
PR = "r0"
SRC_URI = "ftp://ftp.gnu.org/gnu/gmp/${BP}.tar.bz2 \
file://disable-stdc.patch"
inherit autotools

View File

@@ -1,7 +0,0 @@
require gmp.inc
PR = "r0"
SRC_URI_append += "file://sh4-asmfix.patch \
file://use-includedir.patch "

View File

@@ -0,0 +1,89 @@
#! /bin/sh /usr/share/dpatch/dpatch-run
## 40_segfault_virtprov.dpatch by Petter Reinholdtsen
Avoid segfault when an enabled service provide a virtual system
facility.
@DPATCH@
--- insserv/insserv.c
+++ insserv/insserv.c 2008-02-01 11:43:45.634618329 +0100
@@ -166,7 +166,7 @@ typedef struct pwd_struct {
static list_t pwd = { &(pwd), &(pwd) }, * topd = &(pwd);
-static void pushd(const char *const __restrict path);
+static void pushd(const char *const __restrict path) __attribute__((nonnull(1)));
static void pushd(const char *const path)
{
pwd_t * dir;
@@ -305,13 +305,13 @@ out:
return getserv(ptr);
}
-static serv_t * findserv(const char *const __restrict serv) __attribute__((nonnull(1)));
+static serv_t * findserv(const char *const __restrict serv);
static serv_t * findserv(const char *const serv)
{
list_t * ptr;
serv_t * ret = (serv_t*)0;
- if (!serv)
+ if (serv == (const char*)0)
goto out;
list_for_each(ptr, serv_start) {
@@ -334,6 +334,9 @@ static void rememberreq(serv_t *serv, ui
list_t * ptr;
uint old = bit;
+ if (!tmp)
+ error("%s", strerror(errno));
+
while ((token = strsep(&tmp, delimeter))) {
boolean found = false;
req_t * this;
@@ -399,6 +402,9 @@ static void reversereq(const serv_t * se
char * rev = strdupa(list);
uint old = bit;
+ if (!rev)
+ error("%s", strerror(errno));
+
while ((dep = strsep(&rev, delimeter)) && *dep) {
serv_t * tmp;
list_t * ptr;
@@ -437,7 +443,7 @@ static void reversereq(const serv_t * se
/*
* Check required services for name
*/
-static boolean chkrequired(const char *const __restrict name) __attribute__((nonnull(1)));
+static boolean chkrequired(const char *const __restrict name);
static boolean chkrequired(const char *const name)
{
serv_t * serv = findserv(name);
--- insserv/listing.h
+++ insserv/listing.h 2008-02-01 11:40:45.347748072 +0100
@@ -97,11 +97,11 @@ extern int makeprov(const char *__restri
extern void setorder(const char *__restrict script, const int order, boolean recursive) __attribute__((nonnull(1)));
extern int getorder(const char *__restrict script) __attribute__((nonnull(1)));
extern boolean notincluded(const char *__restrict script, const int runlevel) __attribute__((nonnull(1)));
-extern boolean foreach(const char **__restrict script, int *__restrict order, const int runlevel) __attribute__((nonnull(1,2)));
-extern void virtprov(const char *__restrict virt, const char *__restrict real) __attribute__((nonnull(1,2)));
+extern boolean foreach(const char **__restrict script, int *__restrict order, const int runlevel) __attribute__((nonnull(2)));
+extern void virtprov(const char *__restrict virt, const char *__restrict real) __attribute__((nonnull(1)));
extern const char * getscript(const char *__restrict prov) __attribute__((nonnull(1)));
extern const char * getprovides(const char *__restrict script) __attribute__((nonnull(1)));
-extern boolean listscripts(const char **__restrict script, const int lvl) __attribute__((nonnull(1)));
+extern boolean listscripts(const char **__restrict script, const int lvl);
extern int maxorder;
extern boolean is_loop_detected(void);
@@ -116,7 +116,7 @@ extern int map_has_runlevels(void);
extern int map_runlevel_to_lvl (const int runlevel);
extern int map_key_to_lvl(const char key);
-static inline char * xstrdup(const char *__restrict s) __attribute__((always_inline,nonnull(1)));
+static inline char * xstrdup(const char *__restrict s) __attribute__((always_inline));
static inline char * xstrdup(const char * s)
{
char * r;

View File

@@ -0,0 +1,20 @@
#! /bin/sh /usr/share/dpatch/dpatch-run
## 40_loopnochangemsg.dpatch by Petter Reinholdtsen
Make it more obvious that introducing a loop will not change the
existing boot sequence. Thanks to Frans Pop for the rationale for
this change.
@DPATCH@
--- insserv-1.11.0.orig/insserv.c
+++ insserv-1.11.0/insserv.c
@@ -2647,7 +2647,7 @@
follow_all();
if (is_loop_detected() && !ignore)
- error("exiting now!\n");
+ error("exiting without changing boot order!\n");
/*
* Re-order some well known scripts to get

View File

@@ -0,0 +1,22 @@
Index: insserv-1.11.0/Makefile
===================================================================
--- insserv-1.11.0.orig/Makefile 2008-08-25 16:00:00.000000000 +0100
+++ insserv-1.11.0/Makefile 2008-08-25 16:00:25.000000000 +0100
@@ -18,16 +18,7 @@
#
# Architecture
#
-ifdef RPM_OPT_FLAGS
- COPTS = -g $(RPM_OPT_FLAGS)
-else
- ARCH = $(shell uname -i)
-ifeq ($(ARCH),i386)
- COPTS = -O2 -mcpu=i586 -mtune=i686
-else
- COPTS = -O2
-endif
-endif
+COPTS = -O2
COPTS += -g
MY_CFLAGS = $(CFLAGS) -Wall $(COPTS) $(DEBUG) $(LOOPS) -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 \

View File

@@ -0,0 +1,41 @@
#
# All local filesystems are mounted (done during boot phase)
#
$local_fs mountall
#
# Low level networking (ethernet card)
#
$network networking +pcmcia +hotplug
#
# Named is operational
#
$named +named +dnsmasq +lwresd $network
#
# All remote filesystems are mounted (note in some cases /usr may
# be remote. Most applications that care will probably require
# both $local_fs and $remote_fs)
#
$remote_fs $local_fs +mountnfs
#
# System logger is operational
#
$syslog sysklogd
#
# SunRPC portmapper available
#
$portmap portmap
#
# The system time has been set correctly
#
$time hwclock
#
# Services which need to be interactive
#
<interactive> hostname udev

View File

@@ -0,0 +1,58 @@
=== modified file 'Makefile'
--- old/Makefile 2008-06-24 14:49:47 +0000
+++ new/Makefile 2008-06-24 15:56:15 +0000
@@ -7,10 +7,10 @@
INITDIR = /etc/init.d
INSCONF = /etc/insserv.conf
#DESTDIR = /tmp/root
-#DEBUG = -DDEBUG=1 -Wpacked
+DEBUG = -DDEBUG=1 -Wpacked
#LOOPS = -DIGNORE_LOOPS=1
DEBUG =
-ISSUSE = -DSUSE
+#ISSUSE = -DSUSE
DESTDIR =
VERSION = 1.11.0
DATE = $(shell date +'%d%b%y' | tr '[:lower:]' '[:upper:]')
@@ -28,7 +28,9 @@
COPTS = -O2
endif
endif
- CFLAGS = -Wall $(COPTS) $(DEBUG) $(LOOPS) -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 \
+COPTS += -g
+
+ MY_CFLAGS = $(CFLAGS) -Wall $(COPTS) $(DEBUG) $(LOOPS) -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 \
$(ISSUSE) -DINITDIR=\"$(INITDIR)\" -DINSCONF=\"$(INSCONF)\" -pipe
CLOOP = -falign-loops=0
CC = gcc
@@ -58,13 +60,13 @@
all: $(TODO)
listing.o: listing.c listing.h .system
- $(CC) $(CFLAGS) $(CLOOP) -c $<
+ $(CC) $(MY_CFLAGS) $(CLOOP) -c $<
insserv.o: insserv.c listing.h .system
- $(CC) $(CFLAGS) $(CLOOP) -c $<
+ $(CC) $(MY_CFLAGS) $(CLOOP) -c $<
insserv: insserv.o listing.o
- $(CC) $(CFLAGS) -Wl,-O,3,--relax -o $@ $^
+ $(CC) $(MY_CFLAGS) -Wl,-O,3,--relax -o $@ $^
ifeq ($(ISSUSE),-DSUSE)
insserv.8: insserv.8.in .system
@@ -86,10 +88,10 @@
-include .depend.listing .depend.insserv
.depend.listing:
- @$(CC) $(CFLAGS) -M listing.c >$@ 2>/dev/null
+ @$(CC) $(MY_CFLAGS) -M listing.c >$@ 2>/dev/null
.depend.insserv:
- @$(CC) $(CFLAGS) -M insserv.c >$@ 2>/dev/null
+ @$(CC) $(MY_CFLAGS) -M insserv.c >$@ 2>/dev/null
install: $(TODO)
$(MKDIR) $(SBINDIR)

View File

@@ -0,0 +1,17 @@
LICENSE = "GPL"
SECTION = "base"
PR = "r1"
SRC_URI = "ftp://ftp.suse.com/pub/projects/init/${BPN}-${PV}.tar.gz \
file://40_segfault_virtprov.dpatch;patch=1 \
file://42_loopnochangemsg.dpatch;patch=1 \
file://make.patch;patch=1 \
file://crosscompile_fix.patch;patch=1 \
file://insserv.conf"
do_install () {
oe_runmake 'DESTDIR=${D}' install
install -m0644 ${WORKDIR}/insserv.conf ${D}${sysconfdir}/insserv.conf
}
BBCLASSEXTEND = "native"

View File

@@ -0,0 +1,50 @@
Index: intltool-0.40.0/intltool-extract.in
===================================================================
--- intltool-0.40.0.orig/intltool-extract.in 2008-12-17 11:50:19.000000000 +0000
+++ intltool-0.40.0/intltool-extract.in 2008-12-17 11:50:31.000000000 +0000
@@ -1,4 +1,4 @@
-#!@INTLTOOL_PERL@ -w
+#!@INTLTOOL_PERL@
# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4 -*-
#
Index: intltool-0.40.0/intltool-merge.in
===================================================================
--- intltool-0.40.0.orig/intltool-merge.in 2008-12-17 11:50:19.000000000 +0000
+++ intltool-0.40.0/intltool-merge.in 2008-12-17 11:50:38.000000000 +0000
@@ -1,4 +1,4 @@
-#!@INTLTOOL_PERL@ -w
+#!@INTLTOOL_PERL@
# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4 -*-
#
Index: intltool-0.40.0/intltool-prepare.in
===================================================================
--- intltool-0.40.0.orig/intltool-prepare.in 2008-12-17 11:50:19.000000000 +0000
+++ intltool-0.40.0/intltool-prepare.in 2008-12-17 11:50:42.000000000 +0000
@@ -1,4 +1,4 @@
-#!@INTLTOOL_PERL@ -w
+#!@INTLTOOL_PERL@
# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4 -*-
# Intltool .desktop, .directory Prepare Tool
Index: intltool-0.40.0/intltool-unicodify.in
===================================================================
--- intltool-0.40.0.orig/intltool-unicodify.in 2008-12-17 11:50:19.000000000 +0000
+++ intltool-0.40.0/intltool-unicodify.in 2008-12-17 11:50:46.000000000 +0000
@@ -1,4 +1,4 @@
-#!@INTLTOOL_PERL@ -w
+#!@INTLTOOL_PERL@
#
# The i18n Unicode Encoding Utility
Index: intltool-0.40.0/intltool-update.in
===================================================================
--- intltool-0.40.0.orig/intltool-update.in 2008-12-17 11:50:19.000000000 +0000
+++ intltool-0.40.0/intltool-update.in 2008-12-17 11:50:49.000000000 +0000
@@ -1,4 +1,4 @@
-#!@INTLTOOL_PERL@ -w
+#!@INTLTOOL_PERL@
# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4 -*-
#

View File

@@ -0,0 +1,17 @@
DESCRIPTION = "Utility scripts for internationalizing XML"
PRIORITY = "optional"
SECTION = "devel"
LICENSE = "GPL"
URLV="${@'.'.join(bb.data.getVar('PV',d,1).split('.')[0:2])}"
SRC_URI = "${GNOME_MIRROR}/intltool/${URLV}/intltool-${PV}.tar.bz2"
S = "${WORKDIR}/intltool-${PV}"
DEPENDS = "libxml-parser-perl-native"
#RDEPENDS = "libxml-parser-perl"
RRECOMMENDS = "perl-modules"
inherit autotools pkgconfig
export PERL_virtclass-native = "/usr/bin/env perl"
BBCLASSEXTEND = "native"

View File

@@ -0,0 +1,5 @@
require intltool.inc
PR = "r0"
SRC_URI_append = " file://intltool-nowarn-0.40.0.patch"

View File

@@ -1,6 +0,0 @@
DESCRIPTION = "A C library for multiple-precision floating-point computations with exact rounding"
HOMEPAGE = "http://www.mpfr.org/"
LICENSE = "LGPLv3+"
SECTION = "devel"
inherit autotools

View File

@@ -1,9 +0,0 @@
require mpfr.inc
DEPENDS = "gmp"
PR = "r0"
SRC_URI = "http://www.mpfr.org/mpfr-${PV}/mpfr-${PV}.tar.bz2"
S = "${WORKDIR}/mpfr-${PV}"
BBCLASSEXTEND = "native nativesdk"

View File

@@ -0,0 +1,24 @@
DESCRIPTION = "General-purpose x86 assembler"
SECTION = "devel"
LICENSE = "simplifiedBSD"
LIC_CHKSUM_FILES = "file://LICENSE;md5=d89d124974e487e5d64da6f1cd8acfbb"
COMPATIBLE_HOST = '(x86_64|i.86.*)-(linux|freebsd.*)'
PR = "r0"
SRC_URI = "${SOURCEFORGE_MIRROR}/nasm/nasm-${PV}.tar.bz2 "
inherit autotools
do_configure_prepend () {
mv aclocal.m4 acinclude.m4
}
do_install() {
install -d ${D}${bindir}
install -d ${D}${mandir}/man1
oe_runmake 'INSTALLROOT=${D}' install
}
BBCLASSEXTEND = "native"

View File

@@ -0,0 +1,15 @@
# /etc/rsyncd.conf
# Minimal configuration file for rsync daemon
# See rsync(1) and rsyncd.conf(5) man pages for help
# This file is required by rsync --daemon
pid file = /var/run/rsyncd.pid
use chroot = yes
read only = yes
# Simple example for enabling your own local rsync server
#[everything]
# path = /
# comment = Everything except /etc exposed
# exclude = /etc

View File

@@ -0,0 +1,11 @@
DESCRIPTION = "strace is a system call tracing tool."
HOMEPAGE = "http://sourceforge.net/projects/strace/"
SECTION = "console/utils"
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=4535377ede62550fdeaf39f595fd550a"
PR = "r0"
SRC_URI = "${SOURCEFORGE_MIRROR}/strace/strace-${PV}.tar.bz2"
inherit autotools
export INCLUDES = "-I. -I./linux"

View File

@@ -0,0 +1,92 @@
--- a/Makefile
+++ b/Makefile
@@ -32,7 +32,7 @@
install -d -m 755 $(INSTALLROOT)$(SBIN)
install -d -m 755 $(INSTALLROOT)$(INIT)
install -c $(BINDIR)/agent -m 755 $(INSTALLROOT)$(SBIN)/tcf-agent
- install -c $(TCF_AGENT_DIR)/main/tcf-agent.init -m 755 $(INSTALLROOT)$(INIT)/tcf-agent
+ install -c tcf-agent.init -m 755 $(INSTALLROOT)$(INIT)/tcf-agent
clean:
rm -rf $(BINDIR)
--- /dev/null
+++ b/tcf-agent.init
@@ -0,0 +1,78 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: tcf-agent
+# Default-Start: 3 5
+# Default-Stop: 0 1 2 6
+# Short-Description: Target Communication Framework agent
+### END INIT INFO
+
+DAEMON_PATH=/usr/sbin/tcf-agent
+DAEMON_NAME=`basename $DAEMON_PATH`
+
+. /etc/init.d/functions
+
+test -x $DAEMON_PATH || exit 0
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+export PATH
+
+RETVAL=0
+
+case "$1" in
+ start)
+ echo -n "Starting $DAEMON_NAME: "
+ $DAEMON_PATH -d -L- -l0
+ RETVAL=$?
+ if [ $RETVAL -eq 0 ] ; then
+ echo "OK"
+ touch /var/lock/subsys/$DAEMON_NAME
+ else
+ echo "FAIL"
+ fi
+ ;;
+
+ stop)
+ echo -n "Stopping $DAEMON_NAME: "
+ count=0
+ while [ -n "`/bin/pidof $DAEMON_PATH`" -a $count -lt 10 ] ; do
+ killproc $DAEMON_PATH >& /dev/null
+ sleep 1
+ RETVAL=$?
+ if [ $RETVAL != 0 -o -n "`/bin/pidof $DAEMON_PATH`" ] ; then
+ sleep 3
+ fi
+ count=`expr $count + 1`
+ done
+ rm -f /var/lock/subsys/$DAEMON_NAME
+ if [ -n "`/bin/pidof $DAEMON_PATH`" ] ; then
+ echo "FAIL"
+ else
+ echo "OK"
+ fi
+ ;;
+
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+
+ status)
+ if [ -n "`/bin/pidof $DAEMON_PATH`" ] ; then
+ echo "$DAEMON_NAME is running"
+ else
+ echo "$DAEMON_NAME is not running"
+ fi
+ ;;
+
+ condrestart)
+ [ -f /var/lock/subsys/$DAEMON_NAME ] && $0 restart
+ ;;
+
+ *)
+ echo "usage: $0 { start | stop | restart | condrestart | status }"
+ ;;
+esac
+
+exit $RETVAL
+

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,36 @@
DESCRIPTION = "Target Communication Framework"
HOMEPAGE = "http://dsdp.eclipse.org/dsdp/tm/"
BUGTRACKER = "https://bugs.eclipse.org/bugs/"
LICENSE = "EPLv1.0 | EDLv1.0"
LIC_FILES_CHKSUM = "file://../epl-v10.html;md5=7aa4215a330a0a4f6a1cbf8da1a0879f \
file://../agent/edl-v10.html;md5=522a390a83dc186513f0500543ad3679"
PV = "0.3.0+svnr${SRCREV}"
PR = "r0"
SRC_URI = "svn://dev.eclipse.org/svnroot/dsdp/org.eclipse.tm.tcf/;module=tags/0.3.0/;proto=http \
file://terminals_agent.patch \
file://fix_tcf-agent.init.patch"
S = "${WORKDIR}/tags/0.3.0/tcf-agent"
inherit update-rc.d
INITSCRIPT_NAME = "tcf-agent"
INITSCRIPT_PARAMS = "start 999 3 5 . stop 20 0 1 2 6 ."
# mangling needed for make
MAKE_ARCH = `echo ${TARGET_ARCH} | sed s,i.86,i686,`
MAKE_OS = `echo ${TARGET_OS} | sed s,linux,GNU/Linux,`
EXTRA_OEMAKE = "MACHINE=${MAKE_ARCH} OPSYS=${MAKE_OS} 'CC=${CC}' 'AR=${AR}'"
do_compile() {
oe_runmake
}
do_install() {
oe_runmake install INSTALLROOT=${D}
}

View File

@@ -0,0 +1,12 @@
Index: ubootchart.conf
===================================================================
--- ubootchart.conf (revision 9)
+++ ubootchart.conf (working copy)
@@ -1,6 +1,6 @@
# If you want to chain on and run somthing other than /sbin/init...
-export init_prog=/sbin/init
+export init_prog=/sbin/init.sysvinit
# On startup ubootchart will mount a tmpfs filesystem at this
# location and chdir here. This is only used for the logging of

View File

@@ -0,0 +1,3 @@
#! /bin/sh
kill -USR1 $(pidof ubootchartd_bin)

View File

@@ -0,0 +1,6 @@
[Desktop Entry]
Encoding=UTF-8
Exec=/sbin/ubootchart-stop
Name=Stop Bootchart
Type=Application
Categories=Programming;

View File

@@ -0,0 +1,37 @@
DESCRIPTION = "A boot profiling tool"
HOMEPAGE = "http://code.google.com/p/ubootchart/"
LICENSE = "GPLv3"
PV = "0.0+r${SRCREV}"
PR = "r4"
#RRECOMMENDS = "acct"
SRC_URI = "svn://ubootchart.googlecode.com/svn/;proto=http;module=trunk \
file://sysvinit.patch;patch=1;pnum=0 \
file://ubootchart-stop \
file://ubootchart.desktop"
S = "${WORKDIR}/trunk"
inherit update-alternatives
ALTERNATIVE_NAME = "init"
ALTERNATIVE_LINK = "${base_sbindir}/init"
ALTERNATIVE_PATH = "${base_sbindir}/ubootchartd"
ALTERNATIVE_PRIORITY = "70"
do_compile() {
${CC} ${CFLAGS} ${LDFLAGS} ${LIBS} ${INCLUDES} ${S}/ubootchartd_bin.c -o ubootchartd_bin
}
do_install() {
install -m 0755 -d ${D}/sbin ${D}/etc/ubootchart ${D}/usr/share/applications
install -m 0755 ${S}/ubootchartd_bin ${D}/sbin
install -m 0755 ${S}/ubootchartd ${D}/sbin
install -m 0644 ${S}/ubootchart.conf ${D}/etc/ubootchart
install -m 0755 ${S}/start.sh ${D}/etc/ubootchart
install -m 0755 ${S}/finish.sh ${D}/etc/ubootchart
install -m 0755 ${WORKDIR}/ubootchart-stop ${D}/sbin
install -m 0644 ${WORKDIR}/ubootchart.desktop ${D}/usr/share/applications
}

View File

@@ -0,0 +1,345 @@
*
* mkyaffs2image hacks by NCB
*
* Changes by Sergey Kubushin flagged KSI
*
*/
/* KSI:
* All this nightmare should be rewritten from ground up. Why save return
* values if nobody checks them? The read/write function returns only one
* error, -1. Positive return value does NOT mean read/write operation has
* been completed successfully. If somebody opens files, he MUST close them
* when they are not longer needed. Only those brave enough can write 64
* bytes from a yaffs_PackedTags2 structure. The list is too long, there is
* enough bugs here to write a couple of thick books on how NOT to write
* programs...
*
* And BTW, what was one supposed to do with that file that this horror
* occasionally managed to generate?
*/
diff -urN yaffs2.orig/utils/mkyaffs2image.c yaffs2/utils/mkyaffs2image.c
--- yaffs2.orig/utils/mkyaffs2image.c 2005-12-12 16:34:58.000000000 -0800
+++ yaffs2/utils/mkyaffs2image.c 2006-02-10 16:56:13.000000000 -0800
@@ -31,10 +47,10 @@
#include <dirent.h>
#include <string.h>
#include <unistd.h>
+#include <mtd/mtd-user.h>
#include "yaffs_ecc.h"
#include "yaffs_guts.h"
-#include "yaffs_tagsvalidity.h"
#include "yaffs_packedtags2.h"
unsigned yaffs_traceMask=0;
@@ -43,9 +59,45 @@
#define chunkSize 2048
#define spareSize 64
+#define PT2_BYTES 25
const char * mkyaffsimage_c_version = "$Id: mkyaffs2image.c,v 1.4 2007-02-14 01:09:06 wookey Exp $";
+static int layout_no;
+
+static struct nand_oobinfo oob_layout[] = {
+ /* KSI:
+ * Dummy "raw" layout - no ECC, all the bytes are free. Does NOT
+ * really work, only used for compatibility with CVS YAFFS2 that
+ * never ever worked with any stock MTD.
+ */
+ {
+ .useecc = MTD_NANDECC_AUTOPLACE,
+ .eccbytes = 0,
+ .eccpos = {},
+ .oobfree = { {0, 64} }
+ },
+ /* KSI:
+ * Regular MTD AUTOPLACED ECC for large page NAND devices, the
+ * only one existing in stock MTD so far. It corresponds to layout# 1
+ * in command line arguments. Any other layouts could be added to
+ * the list when they made their way in kernel's MTD. The structure
+ * is simply copied from kernel's drivers/mtd/nand/nand_base.c as-is.
+ */
+ {
+ .useecc = MTD_NANDECC_AUTOPLACE,
+ .eccbytes = 24,
+ .eccpos = {
+ 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63},
+ .oobfree = { {2, 38} }
+ },
+ /* End-of-list marker */
+ {
+ .useecc = -1,
+ }
+};
typedef struct
{
@@ -59,7 +111,7 @@
static int n_obj = 0;
static int obj_id = YAFFS_NOBJECT_BUCKETS + 1;
-static int nObjects, nDirectories, nPages;
+static int nObjects = 0, nDirectories = 0, nPages = 0;
static int outFile;
@@ -123,6 +175,11 @@
return -1;
}
+/* KSI:
+ * No big endian for now. This is left for a later time. The existing code
+ * is FUBAR.
+ */
+#if 0
/* This little function converts a little endian tag to a big endian tag.
* NOTE: The tag is not usable after this other than calculating the CRC
* with.
@@ -155,11 +212,56 @@
tags->asBytes[7] = temp.asBytes[7];
#endif
}
+#endif
+
+void nandmtd2_pt2buf(unsigned char *buf, yaffs_PackedTags2 *pt)
+{
+ int i, j = 0, k, n;
+ unsigned char pt2_byte_buf[PT2_BYTES];
+
+ *((unsigned int *) &pt2_byte_buf[0]) = pt->t.sequenceNumber;
+ *((unsigned int *) &pt2_byte_buf[4]) = pt->t.objectId;
+ *((unsigned int *) &pt2_byte_buf[8]) = pt->t.chunkId;
+ *((unsigned int *) &pt2_byte_buf[12]) = pt->t.byteCount;
+ pt2_byte_buf[16] = pt->ecc.colParity;
+ pt2_byte_buf[17] = pt->ecc.lineParity & 0xff;
+ pt2_byte_buf[18] = (pt->ecc.lineParity >> 8) & 0xff;
+ pt2_byte_buf[19] = (pt->ecc.lineParity >> 16) & 0xff;
+ pt2_byte_buf[20] = (pt->ecc.lineParity >> 24) & 0xff;
+ pt2_byte_buf[21] = pt->ecc.lineParityPrime & 0xff;
+ pt2_byte_buf[22] = (pt->ecc.lineParityPrime >> 8) & 0xff;
+ pt2_byte_buf[23] = (pt->ecc.lineParityPrime >> 16) & 0xff;
+ pt2_byte_buf[24] = (pt->ecc.lineParityPrime >> 24) & 0xff;
+
+ k = oob_layout[layout_no].oobfree[j][0];
+ n = oob_layout[layout_no].oobfree[j][1];
+
+ if (n == 0) {
+ fprintf(stderr, "No OOB space for tags");
+ exit(-1);
+ }
+
+ for (i = 0; i < PT2_BYTES; i++) {
+ if (n == 0) {
+ j++;
+ k = oob_layout[layout_no].oobfree[j][0];
+ n = oob_layout[layout_no].oobfree[j][1];
+ if (n == 0) {
+ fprintf(stderr, "No OOB space for tags");
+ exit(-1);
+ }
+ }
+ buf[k++] = pt2_byte_buf[i];
+ n--;
+ }
+}
static int write_chunk(__u8 *data, __u32 objId, __u32 chunkId, __u32 nBytes)
{
yaffs_ExtendedTags t;
yaffs_PackedTags2 pt;
+ unsigned char spare_buf[spareSize];
+
error = write(outFile,data,chunkSize);
if(error < 0) return error;
@@ -177,18 +279,27 @@
// added NCB **CHECK**
t.chunkUsed = 1;
+/* KSI: Broken anyway -- e.g. &t is pointer to a wrong type... */
+#if 0
if (convert_endian)
{
little_to_big_endian(&t);
}
+#endif
nPages++;
yaffs_PackTags2(&pt,&t);
-
-// return write(outFile,&pt,sizeof(yaffs_PackedTags2));
- return write(outFile,&pt,spareSize);
-
+
+ memset(spare_buf, 0xff, sizeof(spare_buf));
+
+ if (layout_no == 0) {
+ memcpy(spare_buf, &pt, sizeof(yaffs_PackedTags2));
+ } else {
+ nandmtd2_pt2buf(spare_buf, &pt);
+ }
+
+ return write(outFile,spare_buf,spareSize);
}
#define SWAP32(x) ((((x) & 0x000000FF) << 24) | \
@@ -199,6 +310,8 @@
#define SWAP16(x) ((((x) & 0x00FF) << 8) | \
(((x) & 0xFF00) >> 8))
+/* KSI: Removed for now. TBD later when the proper util (from scratch) is written */
+#if 0
// This one is easier, since the types are more standard. No funky shifts here.
static void object_header_little_to_big_endian(yaffs_ObjectHeader* oh)
{
@@ -256,6 +369,7 @@
oh->roomToGrow[11] = SWAP32(oh->roomToGrow[11]);
#endif
}
+#endif
static int write_object_header(int objId, yaffs_ObjectType t, struct stat *s, int parent, const char *name, int equivalentObj, const char * alias)
{
@@ -300,10 +414,13 @@
strncpy(oh->alias,alias,YAFFS_MAX_ALIAS_LENGTH);
}
+/* KSI: FUBAR. Left for a leter time. */
+#if 0
if (convert_endian)
{
object_header_little_to_big_endian(oh);
}
+#endif
return write_chunk(bytes,objId,0,0xffff);
@@ -319,7 +436,7 @@
nDirectories++;
dir = opendir(path);
-
+
if(dir)
{
while((entry = readdir(dir)) != NULL)
@@ -403,12 +520,12 @@
error = nBytes;
printf("%d data chunks written\n",chunk);
+ close(h);
}
else
{
perror("Error opening file");
}
- close(h);
}
@@ -448,58 +565,82 @@
}
}
}
+ /* KSI:
+ * Who is supposed to close those open directories in this
+ * recursive function, lord Byron? Stock "ulimit -n" is 1024
+ * and e.g. stock Fedora /etc directory has more that 1024
+ * directories...
+ */
+ closedir(dir);
}
return 0;
}
+void usage(void)
+{
+ printf("usage: mkyaffs2image layout# dir image_file [convert]\n");
+ printf(" layout# NAND OOB layout # (0 - raw, 1 - nand_oob_64)\n");
+ printf(" dir the directory tree to be converted\n");
+ printf(" image_file the output file to hold the image\n");
+ printf(" 'convert' make a big-endian img on a little-endian machine. BROKEN !\n");
+ exit(1);
+}
int main(int argc, char *argv[])
{
struct stat stats;
+ int i;
printf("mkyaffs2image: image building tool for YAFFS2 built "__DATE__"\n");
- if(argc < 3)
+ if ((argc < 4) || (sscanf(argv[1], "%u", &layout_no) != 1))
{
- printf("usage: mkyaffs2image dir image_file [convert]\n");
- printf(" dir the directory tree to be converted\n");
- printf(" image_file the output file to hold the image\n");
- printf(" 'convert' produce a big-endian image from a little-endian machine\n");
- exit(1);
+ usage();
}
- if ((argc == 4) && (!strncmp(argv[3], "convert", strlen("convert"))))
- {
- convert_endian = 1;
- }
+ i = 0;
+
+ while (oob_layout[i].useecc != -1)
+ i++;
+
+ if (layout_no >= i)
+ usage();
+
+ if ((argc == 5) && (!strncmp(argv[4], "convert", strlen("convert"))))
+ {
+ /* KSI: Broken as of now. TBD. Fail. */
+ usage();
+ convert_endian = 1;
+ }
- if(stat(argv[1],&stats) < 0)
+ if(stat(argv[2],&stats) < 0)
{
- printf("Could not stat %s\n",argv[1]);
+ printf("Could not stat %s\n",argv[2]);
exit(1);
}
if(!S_ISDIR(stats.st_mode))
{
- printf(" %s is not a directory\n",argv[1]);
+ printf(" %s is not a directory\n",argv[2]);
exit(1);
}
- outFile = open(argv[2],O_CREAT | O_TRUNC | O_WRONLY, S_IREAD | S_IWRITE);
+ outFile = open(argv[3],O_CREAT | O_TRUNC | O_WRONLY, S_IREAD | S_IWRITE);
if(outFile < 0)
{
- printf("Could not open output file %s\n",argv[2]);
+ printf("Could not open output file %s\n",argv[3]);
exit(1);
}
- printf("Processing directory %s into image file %s\n",argv[1],argv[2]);
+ printf("Processing directory %s into image file %s\n",argv[2],argv[3]);
error = write_object_header(1, YAFFS_OBJECT_TYPE_DIRECTORY, &stats, 1,"", -1, NULL);
+
if(error)
- error = process_directory(YAFFS_OBJECTID_ROOT,argv[1]);
+ error = process_directory(YAFFS_OBJECTID_ROOT,argv[2]);
close(outFile);

View File

@@ -0,0 +1,216 @@
diff -urN yaffs2.orig/yaffs_mtdif2.c yaffs2/yaffs_mtdif2.c
--- yaffs2.orig/yaffs_mtdif2.c 2005-12-07 14:00:38.000000000 -0800
+++ yaffs2/yaffs_mtdif2.c 2006-02-10 17:13:58.000000000 -0800
@@ -29,6 +29,130 @@
#include "yaffs_packedtags2.h"
+#define PT2_BYTES 25
+
+void nandmtd2_pt2buf(yaffs_Device *dev, yaffs_PackedTags2 *pt, int is_raw)
+{
+ struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
+ int i, j = 0, k, n;
+ __u8 pt2_byte_buf[PT2_BYTES];
+
+ /* Pack buffer with 0xff */
+ for (i = 0; i < mtd->oobsize; i++)
+ dev->spareBuffer[i] = 0xff;
+
+ if (!is_raw) {
+ *((unsigned int *) &dev->spareBuffer[0]) = pt->t.sequenceNumber;
+ *((unsigned int *) &dev->spareBuffer[4]) = pt->t.objectId;
+ *((unsigned int *) &dev->spareBuffer[8]) = pt->t.chunkId;
+ *((unsigned int *) &dev->spareBuffer[12]) = pt->t.byteCount;
+ dev->spareBuffer[16] = pt->ecc.colParity;
+ dev->spareBuffer[17] = pt->ecc.lineParity & 0xff;
+ dev->spareBuffer[18] = (pt->ecc.lineParity >> 8) & 0xff;
+ dev->spareBuffer[19] = (pt->ecc.lineParity >> 16) & 0xff;
+ dev->spareBuffer[20] = (pt->ecc.lineParity >> 24) & 0xff;
+ dev->spareBuffer[21] = pt->ecc.lineParityPrime & 0xff;
+ dev->spareBuffer[22] = (pt->ecc.lineParityPrime >> 8) & 0xff;
+ dev->spareBuffer[23] = (pt->ecc.lineParityPrime >> 16) & 0xff;
+ dev->spareBuffer[24] = (pt->ecc.lineParityPrime >> 24) & 0xff;
+ } else {
+ *((unsigned int *) &pt2_byte_buf[0]) = pt->t.sequenceNumber;
+ *((unsigned int *) &pt2_byte_buf[4]) = pt->t.objectId;
+ *((unsigned int *) &pt2_byte_buf[8]) = pt->t.chunkId;
+ *((unsigned int *) &pt2_byte_buf[12]) = pt->t.byteCount;
+ pt2_byte_buf[16] = pt->ecc.colParity;
+ pt2_byte_buf[17] = pt->ecc.lineParity & 0xff;
+ pt2_byte_buf[18] = (pt->ecc.lineParity >> 8) & 0xff;
+ pt2_byte_buf[19] = (pt->ecc.lineParity >> 16) & 0xff;
+ pt2_byte_buf[20] = (pt->ecc.lineParity >> 24) & 0xff;
+ pt2_byte_buf[21] = pt->ecc.lineParityPrime & 0xff;
+ pt2_byte_buf[22] = (pt->ecc.lineParityPrime >> 8) & 0xff;
+ pt2_byte_buf[23] = (pt->ecc.lineParityPrime >> 16) & 0xff;
+ pt2_byte_buf[24] = (pt->ecc.lineParityPrime >> 24) & 0xff;
+
+ k = mtd->oobinfo.oobfree[j][0];
+ n = mtd->oobinfo.oobfree[j][1];
+
+ if (n == 0) {
+ T(YAFFS_TRACE_ERROR, (TSTR("No OOB space for tags" TENDSTR)));
+ YBUG();
+ }
+
+ for (i = 0; i < PT2_BYTES; i++) {
+ if (n == 0) {
+ j++;
+ k = mtd->oobinfo.oobfree[j][0];
+ n = mtd->oobinfo.oobfree[j][1];
+ if (n == 0) {
+ T(YAFFS_TRACE_ERROR, (TSTR("No OOB space for tags" TENDSTR)));
+ YBUG();
+ }
+ }
+ dev->spareBuffer[k++] = pt2_byte_buf[i];
+ n--;
+ }
+ }
+}
+
+void nandmtd2_buf2pt(yaffs_Device *dev, yaffs_PackedTags2 *pt, int is_raw)
+{
+ struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
+ int i, j = 0, k, n;
+ __u8 pt2_byte_buf[PT2_BYTES];
+
+
+ if (!is_raw) {
+ pt->t.sequenceNumber = *((unsigned int *) &dev->spareBuffer[0]);
+ pt->t.objectId = *((unsigned int *) &dev->spareBuffer[4]);
+ pt->t.chunkId = *((unsigned int *) &dev->spareBuffer[8]);
+ pt->t.byteCount = *((unsigned int *) &dev->spareBuffer[12]);
+ pt->ecc.colParity = dev->spareBuffer[16];
+ pt->ecc.lineParity = (dev->spareBuffer[17] & 0x000000ff) |
+ ((dev->spareBuffer[18] << 8) & 0x0000ff00) |
+ ((dev->spareBuffer[19] << 16) & 0x00ff0000) |
+ ((dev->spareBuffer[20] << 24) & 0xff000000);
+ pt->ecc.lineParityPrime = (dev->spareBuffer[21] & 0x000000ff) |
+ ((dev->spareBuffer[22] << 8) & 0x0000ff00) |
+ ((dev->spareBuffer[23] << 16) & 0x00ff0000) |
+ ((dev->spareBuffer[24] << 24) & 0xff000000);
+ } else {
+ k = mtd->oobinfo.oobfree[j][0];
+ n = mtd->oobinfo.oobfree[j][1];
+
+ if (n == 0) {
+ T(YAFFS_TRACE_ERROR, (TSTR("No space in OOB for tags" TENDSTR)));
+ YBUG();
+ }
+
+ for (i = 0; i < PT2_BYTES; i++) {
+ if (n == 0) {
+ j++;
+ k = mtd->oobinfo.oobfree[j][0];
+ n = mtd->oobinfo.oobfree[j][1];
+ if (n == 0) {
+ T(YAFFS_TRACE_ERROR, (TSTR("No space in OOB for tags" TENDSTR)));
+ YBUG();
+ }
+ }
+ pt2_byte_buf[i] = dev->spareBuffer[k++];
+ n--;
+ }
+ pt->t.sequenceNumber = *((unsigned int *) &pt2_byte_buf[0]);
+ pt->t.objectId = *((unsigned int *) &pt2_byte_buf[4]);
+ pt->t.chunkId = *((unsigned int *) &pt2_byte_buf[8]);
+ pt->t.byteCount = *((unsigned int *) &pt2_byte_buf[12]);
+ pt->ecc.colParity = pt2_byte_buf[16];
+ pt->ecc.lineParity = (pt2_byte_buf[17] & 0x000000ff) |
+ ((pt2_byte_buf[18] << 8) & 0x0000ff00) |
+ ((pt2_byte_buf[19] << 16) & 0x00ff0000) |
+ ((pt2_byte_buf[20] << 24) & 0xff000000);
+ pt->ecc.lineParityPrime = (pt2_byte_buf[21] & 0x000000ff) |
+ ((pt2_byte_buf[22] << 8) & 0x0000ff00) |
+ ((pt2_byte_buf[23] << 16) & 0x00ff0000) |
+ ((pt2_byte_buf[24] << 24) & 0xff000000);
+ }
+}
+
int nandmtd2_WriteChunkWithTagsToNAND(yaffs_Device * dev, int chunkInNAND,
const __u8 * data,
const yaffs_ExtendedTags * tags)
@@ -51,24 +175,22 @@
}
if (data && tags) {
- if (dev->useNANDECC)
- retval =
- mtd->write_ecc(mtd, addr, dev->nBytesPerChunk,
- &dummy, data, (__u8 *) & pt, NULL);
- else
+ nandmtd2_pt2buf(dev, &pt, 0);
retval =
mtd->write_ecc(mtd, addr, dev->nBytesPerChunk,
- &dummy, data, (__u8 *) & pt, NULL);
+ &dummy, data, dev->spareBuffer,
+ NULL);
} else {
if (data)
retval =
mtd->write(mtd, addr, dev->nBytesPerChunk, &dummy,
data);
- if (tags)
+ if (tags) {
+ nandmtd2_pt2buf(dev, &pt, 1);
retval =
mtd->write_oob(mtd, addr, mtd->oobsize, &dummy,
- (__u8 *) & pt);
-
+ dev->spareBuffer);
+ }
}
if (retval == 0)
@@ -94,30 +216,24 @@
TENDSTR), chunkInNAND, data, tags));
if (data && tags) {
- if (dev->useNANDECC) {
retval =
mtd->read_ecc(mtd, addr, dev->nBytesPerChunk,
&dummy, data, dev->spareBuffer,
NULL);
- } else {
- retval =
- mtd->read_ecc(mtd, addr, dev->nBytesPerChunk,
- &dummy, data, dev->spareBuffer,
- NULL);
- }
+ nandmtd2_buf2pt(dev, &pt, 0);
} else {
if (data)
retval =
mtd->read(mtd, addr, dev->nBytesPerChunk, &dummy,
data);
- if (tags)
+ if (tags) {
retval =
mtd->read_oob(mtd, addr, mtd->oobsize, &dummy,
dev->spareBuffer);
+ nandmtd2_buf2pt(dev, &pt, 1);
+ }
}
- memcpy(&pt, dev->spareBuffer, sizeof(pt));
-
if (tags)
yaffs_UnpackTags2(tags, &pt);
@@ -178,10 +294,11 @@
*sequenceNumber = 0;
*state = YAFFS_BLOCK_STATE_EMPTY;
}
+
+ T(YAFFS_TRACE_MTD,
+ (TSTR("block is OK seq %d state %d" TENDSTR), *sequenceNumber,
+ *state));
}
- T(YAFFS_TRACE_MTD,
- (TSTR("block is bad seq %d state %d" TENDSTR), *sequenceNumber,
- *state));
if (retval == 0)
return YAFFS_OK;

View File

@@ -0,0 +1,27 @@
DESCRIPTION = "Tools for managing 'yaffs2' file systems."
SECTION = "base"
HOMEPAGE = "http://www.yaffs.net"
LICENSE = "GPLv2"
PV = "0.0.0+cvs${SRCDATE}"
PR = "r0"
DEPENDS = "mtd-utils"
SRC_URI = "cvs://anonymous@cvs.aleph1.co.uk/home/aleph1/cvs;module=yaffs2 \
file://mkyaffs2image.patch;patch=1"
S = "${WORKDIR}/yaffs2"
CFLAGS += "-I.. -DCONFIG_YAFFS_UTIL"
CFLAGS_append_virtclass-native = " -I.. -DCONFIG_YAFFS_UTIL"
do_compile() {
cd utils && oe_runmake
}
do_install() {
install -d ${D}${sbindir}/
for i in mkyaffsimage mkyaffs2image; do
install -m 0755 utils/$i ${D}${sbindir}/
done
}
BBCLASSEXTEND = "native"

View File

@@ -0,0 +1,3 @@
require yaffs2-utils.inc
PR = "r1"