TipsAndTricks/OnTargetWorkFlowLeveragingRPMPackagefeeds: Difference between revisions
From Yocto Project
Jump to navigationJump to search
No edit summary |
No edit summary |
||
Line 2: | Line 2: | ||
I was trying to build a sw repo on target and found that I lacked many of the tools and libraries in order to accomplish this. I found reflashing and rebooting the image on the target to be quite slow. Luckily YP supports a much better workflow for this process. | I was trying to build a sw repo on target and found that I lacked many of the tools and libraries in order to accomplish this. I found reflashing and rebooting the image on the target to be quite slow. Luckily YP supports a much better workflow for this process. | ||
<br> | <br> | ||
In this example, we will be building znc, | In this example, we will be building znc 1.6.5, an irc bouncer. This is just a good complex example. In order to use this guide, you should set up your bitbake environment and your target as outlined in [https://wiki.yoctoproject.org/wiki/TipsAndTricks/EnablingAPackageFeed#Easiest_Way PkgFeeds the EasiestWay] | ||
== Steps == | |||
* It's typically easies to make an image that has *most* of what you think you'll need. In this example, I added the following to my local.conf: | |||
EXTRA_IMAGE_FEATURES += " ssh-server-openssh package-management dev-pkgs tools-sdk tools-debug tools-profile " | |||
* Now I'll grab the src code we will try to build | |||
git clone https://github.com/znc/znc.git | |||
cd znc | |||
git checkout -b 1.6.5 znc-1.6.5 | |||
* follow the build instructions | |||
./autogen.sh | |||
./configure | |||
This worked, but we decide we want to have cyrus support as well. | |||
* First we try | |||
./configure --enable-cyrus | |||
but we get | |||
configure: error: could not find libsasl2. Try --disable-cyrus. | |||
* So we need the cyrus-sals-dev pkg. If we aren't sure where that is, we can use [https://layers.openembedded.org/layerindex/branch/master/layers/ openembedded layer index] and search for the recipe cyrus (this finds cyrus-sasl2 in meta-networking). So, we add meta-networking to bblayers (and meta-oe and meta-python, as its dependencies) then build cyrus-sasl. | |||
bitbake cyrus-sasl | |||
and remake the package index | |||
bitbake package-index | |||
* target side, pull in the new package. Since I am building stuff, I need the -dev pkg for configure to be happy. | |||
$dnf install cyrus-sasl-dev (note this will also pull in the cyrus-sasl rpm as a dependency.) | |||
* now we rerun configure and get: | |||
./configure --enable-cyrus | |||
ZNC 1.6.5 configured | |||
prefix: /usr/local | |||
debug: no | |||
ipv6: yes | |||
openssl: yes | |||
dns: threads | |||
perl: no | |||
python: no | |||
swig: not needed | |||
cyrus: yes | |||
tcl: no | |||
charset: yes | |||
zlib: yes | |||
run from src: no | |||
Pretty Easy, you can see how this cycle may be repeated a number of times for more complex projects. | |||
* I prefer emacs, so I tend to to this a lot as zile is a small emacs analogue: | |||
bitbake zile | |||
bitbake package-index | |||
Target -> | |||
$ dnf install zile |
Revision as of 00:53, 8 July 2017
Leveraging Pkg Feeds or How I got Tired of Burning Images
I was trying to build a sw repo on target and found that I lacked many of the tools and libraries in order to accomplish this. I found reflashing and rebooting the image on the target to be quite slow. Luckily YP supports a much better workflow for this process.
In this example, we will be building znc 1.6.5, an irc bouncer. This is just a good complex example. In order to use this guide, you should set up your bitbake environment and your target as outlined in PkgFeeds the EasiestWay
Steps
- It's typically easies to make an image that has *most* of what you think you'll need. In this example, I added the following to my local.conf:
EXTRA_IMAGE_FEATURES += " ssh-server-openssh package-management dev-pkgs tools-sdk tools-debug tools-profile "
- Now I'll grab the src code we will try to build
git clone https://github.com/znc/znc.git cd znc git checkout -b 1.6.5 znc-1.6.5 * follow the build instructions ./autogen.sh ./configure
This worked, but we decide we want to have cyrus support as well.
- First we try
./configure --enable-cyrus
but we get
configure: error: could not find libsasl2. Try --disable-cyrus.
- So we need the cyrus-sals-dev pkg. If we aren't sure where that is, we can use openembedded layer index and search for the recipe cyrus (this finds cyrus-sasl2 in meta-networking). So, we add meta-networking to bblayers (and meta-oe and meta-python, as its dependencies) then build cyrus-sasl.
bitbake cyrus-sasl
and remake the package index
bitbake package-index
- target side, pull in the new package. Since I am building stuff, I need the -dev pkg for configure to be happy.
$dnf install cyrus-sasl-dev (note this will also pull in the cyrus-sasl rpm as a dependency.)
- now we rerun configure and get:
./configure --enable-cyrus ZNC 1.6.5 configured
prefix: /usr/local debug: no ipv6: yes openssl: yes dns: threads perl: no python: no swig: not needed cyrus: yes tcl: no charset: yes zlib: yes run from src: no
Pretty Easy, you can see how this cycle may be repeated a number of times for more complex projects.
- I prefer emacs, so I tend to to this a lot as zile is a small emacs analogue:
bitbake zile bitbake package-index
Target ->
$ dnf install zile