Hi guys,
here after is a script I wrote to setup and bitbake stuff under
Ubuntu.
HOW TO USE:
DO NOT RUN THIS ON A MOUNTED NTFS PARTITION, you will get errors and it
will take weeks to figure out why (I learnt the hard way).
The script is configured to use dual core processors which speeds things up
a bit.
Just download and run the script, it will ask you where what folder you
want to make the main folder.
NOTE: The script will then open up .bashrc with gedit, this is to allow you
to remove additional OE_HOME entries if you add them accidentally, if there
is only one entry at the bottom of the file, just close gedit.
Once it has finished, if you go to
cd ${OE_HOME}/build
source profile
bitbake -k <some image>
TO DO:
I haven't implemented testing for some of the folders, but I don't have
time to revise it now, so feel free to add to the script and repost it.
I have some hard coded branches of OE and bitbake because I know these work
properly. Feel free to update and repost, just please make sure they work
properly.
OTHER STUFF:
I suggest you use the kernel provided by this website, as the OE one will
work but is lacking a lot of the mini2440 specific driver modules.
It took me days to setup OE the first time, the learning curve is just
terrible, so hopefully this will help.
Thanks to all of those guys who posted tutorials for OpenEmbedded.
Especially those who were working hard at this stuff 6 months ago when I
started out, and naturally to BusError.
Cheers
Paul
-----------------------------
COPY THE FOLLOWING TO A FILE
-----------------------------
#!/bin/sh
echo "Cleaning up first..."
rm $OE_HOME/build/conf/local.conf
rm $OE_HOME/build/profile
rm $OE_HOME/openembedded/conf/machine/mini2440.conf
echo "OE_HOME=$OE_HOME"
echo "Is OE_HOME set above? (y,n): "
read x
if [ "$x" = "n" ] ; then
echo "Enter path to OE_HOME: "
read oepath
export OE_HOME=$oepath
echo export OE_HOME=$oepath >> $HOME/.bashrc
gedit $HOME/.bashrc
source $HOME/.bashrc
fi
mkdir -p $OE_HOME
mkdir -p $OE_HOME/build
mkdir -p $OE_HOME/build/conf
mkdir -p $OE_HOME/custom_recipies/
sudo apt-get install sed wget cvs subversion git-core \
coreutils unzip texi2html texinfo libsdl1.2-dev docbook-utils \
gawk python-pysqlite2 diffstat help2man make gcc build-essential g++ \
texi2html libncurses5-dev python-dev python-psyco \
gnome-doc-utils gettext automake docbook bison flex libxml2-utils xmlto
python-psyco
echo
echo "Please choose a repository:"
echo "1. STABLE git://repo.or.cz/openembedded/mini2440.git";
echo "2. DEV git://repo.or.cz/openembedded/mini2440.git";
echo "3. git://git.openembedded.org/openembedded";
read x
cd $OE_HOME
if [ "$x" = "1" ] ; then
git clone git://repo.or.cz/openembedded/mini2440.git openembedded
cd openembedded
git checkout -b mini2440-stable --track origin/mini2440-stable
git branch
elif [ "$x" = "2" ] ; then
git clone git://repo.or.cz/openembedded/mini2440.git openembedded
elif [ "$x" = "3" ] ; then
git clone git://git.openembedded.org/openembedded
else
echo "defaulting to repo.or.cz stable"
git clone git://repo.or.cz/openembedded/mini2440.git openembedded
cd openembedded
git checkout -b mini2440-stable --track origin/mini2440-stable
git branch
fi
echo "Downloading Bitbake 1.8"
cd $OE_HOME
git clone git://git.openembedded.org/bitbake.git
cd bitbake
git checkout -b 1.8 --track origin/1.8
git branch
cd ..
cp $OE_HOME/openembedded/conf/local.conf.sample
$OE_HOME/build/conf/local.conf
################################################################################
################
echo "Generating $OE_HOME/build/profile"
cat > $OE_HOME/build/profile << ENDOFFILE
export OE_HOME="$OE_HOME"
export PATH=${OE_HOME}/bitbake/bin:$PATH
BBPATH=${OE_HOME}/:${OE_HOME}/build/:${OE_HOME}/openembedded/
PKGDIR=${OE_HOME}/build/
DL_DIR=${OE_HOME}/downloads
echo Setting up dev env for Angstrom
cd $PKGDIR
LD_LIBRARY_PATH=
export PATH LD_LIBRARY_PATH BBPATH
export LANG=C
export BB_ENV_EXTRAWHITE="MACHINE DISTRO OE_HOME ANGSTROM_MODE ANGSTROMLIBC
LIBC"
echo "Altered environment for OE Development"
umask 0002
if [ "\$PS1" ]; then
if [ "\$BASH" ]; then
export PS1="\[\033[01;32m\]OE:\$MY_OE_CONF\[\033[00m\] \${PS1}"
fi
fi
cd ${OE_HOME}/build
ENDOFFILE
################################################################################
################
echo "Generating $OE_HOME/build/conf/local.conf"
# Local Configuration File
cat > $OE_HOME/build/conf/local.conf << ENDOFFILE
MACHINE = "mini2440"
DISTRO = "angstrom-2008.1"
# Where to store sources
DL_DIR = "${OE_HOME}/downloads"
# Removes work files
# INHERIT += " rm_work "
# Make sure you have these installed
ASSUME_PROVIDED += "gdk-pixbuf-csource-native imagemagick-native
librsvg-native"
# Which files do we want to parse:
BBFILES := "${OE_HOME}/openembedded/recipes/*/*.bb
${OE_HOME}/custom_recipies/*.bb ${OE_HOME}/custom_recipies/*/*.bb"
BBMASK = ""
# What kind of images do we want?
IMAGE_FSTYPES += " tar.bz2 "
# Set TMPDIR instead of defaulting it to $pwd/tmp
TMPDIR = "${OE_HOME}/build"
# Make use of SMP and fast disks
PARALLEL_MAKE = "-j2"
BB_NUMBER_THREADS = "2"
#tinderbox
#INHERIT += "oestats-client"
OESTATS_BUILDER = "paulm"
ENDOFFILE
################################################################################
################
echo "sysctl vm.mmap_min_addr=0"
sudo sysctl vm.mmap_min_addr=0
echo "Adding mini2440 to ${OE_HOME}/build/conf/local.conf"
echo "MACHINE = \"mini2440\"" >> ${OE_HOME}/build/conf/local.conf
################################################################################
################
echo "Generating ${OE_HOME}/openembedded/conf/machine/mini2440.conf"
cat > ${OE_HOME}/openembedded/conf/machine/mini2440.conf << ENDOFFILE
#@TYPE: Machine
#@Name: Samsung MINI2440 Dev Board
#@DESCRIPTION: Machine configuration for MINI2440 Dev Board
TARGET_ARCH = "arm"
PREFERRED_VERSION_u-boot = "git"
UBOOT_ENTRYPOINT = "30008000"
PREFERRED_PROVIDER_virtual/kernel = "linux-mini2440"
# used by sysvinit_2
SERIAL_CONSOLE = "115200 ttySAC0"
IMAGE_DEVICE_TABLES = "files/device_table-minimal.txt \
files/device_table_add-s3c_serial.txt"
IMAGE_FSTYPES = "jffs2 ext3 tar.gz"
MACHINE_FEATURES = "kernel26 uboot touchscreen screen lcd rgb16"
MACHINE_FEATURES += "usbhost usbgadget"
MACHINE_FEATURES += "i2c spi"
MACHINE_FEATURES += "mmc mmcroot vfat"
MACHINE_FEATURES += "ethernet"
MACHINE_FEATURES += "sound alsa"
KERNEL_IMAGETYPE = "uImage"
require conf/machine/include/tune-arm920t.inc
MACHINE_EXTRA_RDEPENDS = "rt73-firmware"
EXTRA_IMAGEDEPENDS += "u-boot"
EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --squash -s 0x200 -n -e
16KiB"
ENDOFFILE
sudo dpkg-reconfigure dash
OpenEmbedded Setup Script
Forgot, when asked, say that you want to reconfigure to use BASH, not dash, otherwise bitbake will complain. Here are some useful commands: bitbake -k <recipe> continues building even if there are errors, ideal for overnight builds. bitbake <recipe> -c clean deletes the built recipe bitbake <recipe> -c rebuild rebuilds the recipe bitbake <recipe> -c deploy redeploys the selected recipe I never figured out how to install ipk files, so I would be very grateful if someone could clarify. Cheers Paul
Thx for this script....but my problem is that i need the Prolific 2303 driver in my kernel and i don't know what is the best way to do this ... Could you help ? Thanks
Hey Paul You can install .ipk files by: opkg install <nameofpack>.ipk or ipkg install <nameofpack>.ipk Thank you for the script.
Hi, I've used this script, I was also loosing much time with the OE learning curve and the script at least created a base installation without many issues. My problem now is that when bitbaking some recipes I got errors extracting some of the downloaded packages. I've tried to do a bitbake -c clean world but it didn't download the package again. Then trying to force it to download the packages I deleted the files in the 'download' folder, but it still don't try to download them again, now it generates file not found errors. What could I do to really clean and force the download of the packages mentioned in the recipes? I've tried to bitbake a package not build before and it downloaded and compiled it with no problems, so at least the basics are working, I suppose that the errors that I had when extracting the downloaded packages could be caused by network problems during the package transfer. i could also delete everything and install OE again, but i suppose that there should be an easier way to clean the build... Best regards Fernando
hello guys and special thanks to you paul for writing such a wonderful script for the developement of the openembedded and bitbake for the ubuntu system. I am configuring the system and instaling the openembedded and bittbake on my ubuntu 10.04 , but I have to ask one question about the error I have encountered during the building and installing of openembedded on my system. Here is the description of my problem: actually when it started it completing the process in tasks and showing each time which task it is completing and the total number of the tasks is 2705. upto the task no.916 it is ok but when it moves to task 917 and 918 it gave out the errors as follows: NOTE: Running task 916 of 2705 (ID: 1600, /home/piyush/oe/openembedded/recipes/module-init-tools/module-init-tools-cross_3 .2.2.bb, do_configure) NOTE: generating locale sl_SI (UTF-8) NOTE: Running task 917 of 2705 (ID: 709, /home/piyush/oe/openembedded/recipes/linux/linux-mini2440_2.6.32+git.bb, do_setscene) NOTE: Running task 918 of 2705 (ID: 710, /home/piyush/oe/openembedded/recipes/linux/linux-mini2440_2.6.32+git.bb, do_fetch) ERROR: Error in executing: /home/piyush/oe/openembedded/recipes/linux/linux-mini2440_2.6.32+git.bb ERROR: Exception:<class 'bb.fetch.FetchError'> Message:Fetch command export HOME=/home/piyush; export SSH_AUTH_SOCK=/tmp/keyring-oblKDf/ssh; export PATH=/home/piyush/oe/build/staging/i686-linux/usr/bin/mini2440-angstrom-linux-gn ueabi:/home/piyush/oe/build/staging/i686-linux/usr/bin/armv4t-angstrom-linux-gnu eabi:/home/piyush/oe/build/staging/i686-linux/usr/sbin:/home/piyush/oe/build/sta ging/i686-linux/usr/bin:/home/piyush/oe/build/cross/armv4t/bin:/home/piyush/oe/b uild/staging/i686-linux/sbin:/home/piyush/oe/build/staging/i686-linux/bin:/home/ piyush/oe/bitbake/bin:/home/piyush/work/oe/bitbake/bin:/home/piyush/work/oe/bitb ake/bin:/opt/qte-4.5.3/lib:/opt/qte-4.5.3/bin:/usr/local/arm/4.3.2/bin:/usr/loca l/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4. 3.2/bin:/usr/local/gnuarm/install/bin; git ls-remote git://repo.or.cz/linux-2.6/mini2440.git mini2440-stable-v2.6.32 failed with signal 128, output: fatal: read error (Connection reset by peer) ERROR: Printing the environment of the function ERROR: Error in executing: /home/piyush/oe/openembedded/recipes/linux/linux-mini2440_2.6.32+git.bb ERROR: Exception:<class 'bb.fetch.FetchError'> Message:Fetch command export HOME=/home/piyush; export SSH_AUTH_SOCK=/tmp/keyring-oblKDf/ssh; export PATH=/home/piyush/oe/build/staging/i686-linux/usr/bin/mini2440-angstrom-linux-gn ueabi:/home/piyush/oe/build/staging/i686-linux/usr/bin/armv4t-angstrom-linux-gnu eabi:/home/piyush/oe/build/staging/i686-linux/usr/sbin:/home/piyush/oe/build/sta ging/i686-linux/usr/bin:/home/piyush/oe/build/cross/armv4t/bin:/home/piyush/oe/b uild/staging/i686-linux/sbin:/home/piyush/oe/build/staging/i686-linux/bin:/home/ piyush/oe/bitbake/bin:/home/piyush/work/oe/bitbake/bin:/home/piyush/work/oe/bitb ake/bin:/opt/qte-4.5.3/lib:/opt/qte-4.5.3/bin:/usr/local/arm/4.3.2/bin:/usr/loca l/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4. 3.2/bin:/usr/local/gnuarm/install/bin; git ls-remote git://repo.or.cz/linux-2.6/mini2440.git mini2440-stable-v2.6.32 failed with signal 128, output: fatal: read error (Connection reset by peer) ERROR: Printing the environment of the function ERROR: Build of /home/piyush/oe/openembedded/recipes/linux/linux-mini2440_2.6.32+git.bb do_fetch failed Traceback (most recent call last): File "/home/piyush/oe/bitbake/bin/bitbake", line 143, in <module> main() File "/home/piyush/oe/bitbake/bin/bitbake", line 140, in main cooker.cook() File "/home/piyush/oe/bitbake/lib/bb/cooker.py", line 640, in cook return self.buildTargets(pkgs_to_build) File "/home/piyush/oe/bitbake/lib/bb/cooker.py", line 547, in buildTargets failures = rq.execute_runqueue() File "/home/piyush/oe/bitbake/lib/bb/runqueue.py", line 841, in execute_runqueue self.execute_runqueue_internal() File "/home/piyush/oe/bitbake/lib/bb/runqueue.py", line 950, in execute_runqueue_internal self.cooker.tryBuild(fn) File "/home/piyush/oe/bitbake/lib/bb/cooker.py", line 136, in tryBuild return self.tryBuildPackage(fn, item, self.configuration.cmd, the_data) File "/home/piyush/oe/bitbake/lib/bb/cooker.py", line 110, in tryBuildPackage bb.build.exec_task('do_%s' % task, the_data) File "/home/piyush/oe/bitbake/lib/bb/build.py", line 283, in exec_task exec_func(task, localdata) File "/home/piyush/oe/bitbake/lib/bb/build.py", line 120, in exec_func exec_func_python(func, d) File "/home/piyush/oe/bitbake/lib/bb/build.py", line 141, in exec_func_python utils.better_exec(comp, g, tmp, bbfile) File "/home/piyush/oe/bitbake/lib/bb/utils.py", line 185, in better_exec exec code in context File "do_fetch", line 4, in <module> File "do_fetch", line 2, in do_fetch File "/home/piyush/oe/bitbake/lib/bb/build.py", line 120, in exec_func exec_func_python(func, d) File "/home/piyush/oe/bitbake/lib/bb/build.py", line 141, in exec_func_python utils.better_exec(comp, g, tmp, bbfile) File "/home/piyush/oe/bitbake/lib/bb/utils.py", line 185, in better_exec exec code in context File "base_do_fetch", line 69, in <module> File "base_do_fetch", line 12, in base_do_fetch File "/home/piyush/oe/bitbake/lib/bb/fetch/__init__.py", line 126, in init urldata[url].setup_localpath(d) File "/home/piyush/oe/bitbake/lib/bb/fetch/__init__.py", line 339, in setup_localpath self.localpath = self.method.localpath(self.url, self, d) File "/home/piyush/oe/bitbake/lib/bb/fetch/git.py", line 51, in localpath ud.tag = self.latest_revision(url, ud, d) File "/home/piyush/oe/bitbake/lib/bb/fetch/__init__.py", line 531, in latest_revision rev = self._latest_revision(url, ud, d) File "/home/piyush/oe/bitbake/lib/bb/fetch/git.py", line 143, in _latest_revision output = runfetchcmd("git ls-remote %s://%s%s%s %s" % (ud.proto, username, ud.host, ud.path, ud.branch), d, True) File "/home/piyush/oe/bitbake/lib/bb/fetch/__init__.py", line 305, in runfetchcmd raise FetchError("Fetch command %s failed with signal %s, output:\n%s" % (cmd, signal, output)) bb.fetch.FetchError: Fetch command export HOME=/home/piyush; export SSH_AUTH_SOCK=/tmp/keyring-oblKDf/ssh; export PATH=/home/piyush/oe/build/staging/i686-linux/usr/bin/mini2440-angstrom-linux-gn ueabi:/home/piyush/oe/build/staging/i686-linux/usr/bin/armv4t-angstrom-linux-gnu eabi:/home/piyush/oe/build/staging/i686-linux/usr/sbin:/home/piyush/oe/build/sta ging/i686-linux/usr/bin:/home/piyush/oe/build/cross/armv4t/bin:/home/piyush/oe/b uild/staging/i686-linux/sbin:/home/piyush/oe/build/staging/i686-linux/bin:/home/ piyush/oe/bitbake/bin:/home/piyush/work/oe/bitbake/bin:/home/piyush/work/oe/bitb ake/bin:/opt/qte-4.5.3/lib:/opt/qte-4.5.3/bin:/usr/local/arm/4.3.2/bin:/usr/loca l/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4. 3.2/bin:/usr/local/gnuarm/install/bin; git ls-remote git://repo.or.cz/linux-2.6/mini2440.git mini2440-stable-v2.6.32 failed with signal 128, output: fatal: read error (Connection reset by peer) ERROR: Task 710 (/home/piyush/oe/openembedded/recipes/linux/linux-mini2440_2.6.32+git.bb, do_fetch) failed NOTE: Waiting for 1 active tasks to finish So I want to know that why it is getting problem in the linux-mini2440_2.6.32+git.bb file of the receipe of the openembedded. Please tell me guys what is this and what to do to rectify this, I am asking this because I know that lots of you people must have tried this on your ubuntu system and since it's not possible to debug the entire repository for a single person like me. Thank you
Hi, had some problems running the script, did add some libraries to make bitbake run and had to give root access to all folders in the oeroot directory. Sadly, Bitbake stops at line 2008 with this error: NOTE: Running task 2008 of 2159 (ID: 42, /oeroot/openembedded/recipes/quilt/quilt-native_0.46.bb, do_package_stage) NOTE: Tasks Summary: Attempted 2008 tasks of which 3 didn't need to be rerun and 1 failed. ERROR: '/oeroot/openembedded/recipes/perl/perl-native_5.8.8.bb' failed Now, I am out of ideas.... Any help ? TnX, Ben
Hey ben, follow the link http://ubuntuforums.org/showthread.php?p=11246852 i have the same problem but after following link its successful Regards Girish
Girish, thanks for reminding me to read the answer on the ubuntuforum. It did solve a great deal of the problem. However, one other problem appears, so I am pasting my reply from the ubuntuforum also on this forum and I hope someone recognizes this problem and can give me a working solution. Thanks a lot for your reply. It solved a big part of my problem. However, some other problem shows up: NOTE: Running task 590 of 2159 (ID: 1041, /oeroot/openembedded/recipes/intltool/intltool-native_0.40.3.bb, do_configure) ERROR: function do_configure failed ERROR: see log in /oeroot/build/work/i686-linux/intltool-native-0.40.3-r2/temp/log.do_configure.19 465 NOTE: Task failed: /oeroot/build/work/i686-linux/intltool-native-0.40.3-r2/temp/log.do_configure.19 465 ERROR: TaskFailed event exception, aborting ERROR: Build of /oeroot/openembedded/recipes/intltool/intltool-native_0.40.3.bb do_configure failed ERROR: Task 1041 (/oeroot/openembedded/recipes/intltool/intltool-native_0.40.3.bb, do_configure) failed NOTE: Tasks Summary: Attempted 2024 tasks of which 2024 didn't need to be rerun and 1 failed. ERROR: '/oeroot/openembedded/recipes/intltool/intltool-native_0.40.3.bb' failed The log file which it point to tells me: checking for XML::Parser... configure: error: XML::Parser perl module is required for intltool FATAL: oe_runconf failed libxml-parser-perl is installed. Checked (as found on different Google results) with bitbake libxml-parser-perl-native but with the same error. Did remove libxml-parser-perl and re-installed it, but the same result. Did find one page with a test for checking the libxml-parser-perl availability with /usr/bin/perl -e "require XML::Parser" but this test was passing without errors so it IS there.. Did read about 100 pages on the WWW about this error but none comes to the right solution for me. Any help anyone ? Thanks in advance, Ben
Now, I tried it completely different. Installed VMWare player, downloaded Ubuntu9 from VMPLanet and did run the script on that system. Installation went quite well,bitbake -k console-image gives me the first error within 2 minutes: unable to parse conf/bitbake.conf ( /oeroot/build/conf/local.conf:13 unparsed line: 'librsvg-native" ') So I tried to locate librsvg-native for installation but I can only find librsvg2-2 and librsvg2-dev but they are installed allready. I have been trying to solve the XML::Parser error for one hour each day for the last four weeks now, with no solution, but bitbaking OpenEmbedded on the VMWare player with Ubunty 9 does make me worry also within the first 2 minutes, Does anyone have an idea how to solve this librsvg-native problem ? Thanks in advance, Ben
After a little editing of the script (thank you! btw...) I'm getting the exact same error as Ben above: unable to parse conf/bitbake.conf ( /oeroot/build/conf/local.conf:13 unparsed line: 'librsvg-native" ') Aside from that, everything went as it should on the script (I think...) Where do I go from here??


