blob: 173d1ce8b11e6a8eaf7483e4ad615a4a5c955dc8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
#!/bin/sh
#
# YAFFS: Yet another FFS. A NAND-flash specific file system.
#
# Copyright (C) 2002-2006 Aleph One Ltd.
#
# Created by Charles Manning <charles@aleph1.co.uk>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# Patch YAFFS into the kernel
#
# args: kpath : Full path to kernel sources to be patched
#
# Somewhat "inspired by" the mtd patchin script
#
# $Id: patch-ker.sh,v 1.3 2007/07/25 01:04:38 charles Exp $
VERSION=0
PATCHLEVEL=0
SUBLEVEL=0
COPYORLINK=$1
LINUXDIR=$2
# To be a Linux directory, it must have a Makefile
# Display usage of this script
usage () {
echo "usage: $0 c/l kernelpath"
echo " if c/l is c, then copy. If l then link"
exit 1
}
if [ -z $LINUXDIR ]
then
usage;
fi
if [ $COPYORLINK = l ]; then
CPY="ln -s"
elif [ $COPYORLINK = c ]; then
CPY="cp"
else
echo "unknown copy or link type"
usage;
fi
# Check if kerneldir contains a Makefile
if [ ! -f $LINUXDIR/Makefile ]
then
echo "Directory $LINUXDIR does not exist or is not a kernel source directory";
exit 1;
fi
# Get kernel version
VERSION=`grep -s VERSION <$LINUXDIR/Makefile | head -n 1 | sed s/'VERSION = '//`
PATCHLEVEL=`grep -s PATCHLEVEL <$LINUXDIR/Makefile | head -n 1 | sed s/'PATCHLEVEL = '//`
SUBLEVEL=`grep -s SUBLEVEL <$LINUXDIR/Makefile | head -n 1 | sed s/'SUBLEVEL = '//`
# Can we handle this version?
if [ $VERSION -ne 2 -o $PATCHLEVEL -lt 6 ]
then
echo "Cannot patch kernel version $VERSION.$PATCHLEVEL.$SUBLEVEL, must be 2.6.x or higher"
exit 1;
fi
KCONFIG=$LINUXDIR/fs/Kconfig
KCONFIGOLD=$LINUXDIR/fs/Kconfig.pre.yaffs
YAFFS_PATCHED_STRING=`grep -s yaffs <$KCONFIG | head -n 1`
MAKEFILE=$LINUXDIR/fs/Makefile
MAKEFILEOLD=$LINUXDIR/fs/Makefile.pre.yaffs
if [ ! -z "$YAFFS_PATCHED_STRING" ]
then
YAFFS_PATCHED=0
echo "$KCONFIG already mentions YAFFS, so we will not change it"
else
# Change the fs/Kconfig file
# Save the old Kconfig
# Copy all stuff up to JFFS
# Insert some YAFFS stuff
# Copy all the rest of the stuff
YAFFS_PATCHED=1
echo "Updating $KCONFIG"
mv -f $KCONFIG $KCONFIGOLD
sed -n -e "/JFFS/,99999 ! p" $KCONFIGOLD >$KCONFIG
echo "">>$KCONFIG
echo "# Patched by YAFFS" >>$KCONFIG
echo "source \"fs/yaffs2/Kconfig\"">>$KCONFIG
echo "">>$KCONFIG
sed -n -e "/JFFS/,99999 p" $KCONFIGOLD >>$KCONFIG
# now do fs/Makefile -- simply add the target at the end
echo "Updating $MAKEFILE"
cp -f $MAKEFILE $MAKEFILEOLD
echo "">>$MAKEFILE
echo "# Patched by YAFFS" >>$MAKEFILE
echo "obj-\$(CONFIG_YAFFS_FS) += yaffs2/" >>$MAKEFILE
fi
YAFFSDIR=$LINUXDIR/fs/yaffs2
if [ -e $YAFFSDIR ]
then
echo "$YAFFSDIR exists, not patching"
else
mkdir $LINUXDIR/fs/yaffs2
$CPY $PWD/Makefile.kernel $LINUXDIR/fs/yaffs2/Makefile
$CPY $PWD/Kconfig $LINUXDIR/fs/yaffs2
$CPY $PWD/*.c $PWD/*.h $LINUXDIR/fs/yaffs2
fi
|