Compare commits
2 Commits
thud
...
remote-sst
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fa22dbf4d3 | ||
|
|
5f0b014af3 |
177
README
Normal file
177
README
Normal file
@@ -0,0 +1,177 @@
|
|||||||
|
.-. .-.
|
||||||
|
| \ / | .-.
|
||||||
|
| \/ |.-----.----.| | .-----.-----.-----..----.
|
||||||
|
| || | .-'| '--.| ---' __ | |.-- |
|
||||||
|
| | || ' | | | --'|--- | | | | ' \
|
||||||
|
'----'---''-----'--' '----''-----'--. |--'--''--`--`
|
||||||
|
.-' |
|
||||||
|
'----'
|
||||||
|
|
||||||
|
meta-mortsgna is yet another distribution layer. It is based on Ångström
|
||||||
|
distribution - check https://github.com/Angstrom-distribution/meta-angstrom.
|
||||||
|
|
||||||
|
The target of this layer is to build images with the best out-of-the-box
|
||||||
|
experience and to support developers with helpers for common tasks.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Layer maintainer: Andreas Müller <schnitzeltony@gmail.com>
|
||||||
|
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Additionally this layer checks the following variable in local.conf:
|
||||||
|
|
||||||
|
* MORTSGNA_ARMV7_TUNE:
|
||||||
|
If this variable is set to "1", all armv7a / cortex variants are build as
|
||||||
|
armv7a.
|
||||||
|
|
||||||
|
+ Reduce build time/disk-space required when building for multiple machines
|
||||||
|
- Build optimization (e.g vfp/NEON) is not the best your machine can get
|
||||||
|
|
||||||
|
Rules of thumb:
|
||||||
|
* If you build images for multiple armv7 machines and don't need to tickle
|
||||||
|
the last quarter of your machine's performance:
|
||||||
|
Set MORTSGNA_ARMV7_TUNE="1"
|
||||||
|
* If you are looking for best optimization for your machine and/or you have
|
||||||
|
a fast build host with lots of disk-space: don't!
|
||||||
|
see conf/distro/include/mortsgna-armv7-tune.inc for more information
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
The following image-features are (re-)added:
|
||||||
|
|
||||||
|
* x11-base: Let systemd boot into grahical target
|
||||||
|
|
||||||
|
* volatile-log: If set, journal goes to volatile /run/log and /var/log is
|
||||||
|
linked to /run/log which is volatile.
|
||||||
|
NOTE: We change OE-Core's default here: In bitbake.conf VOLATILE_LOG_DIR is
|
||||||
|
enabled so that all images are build for volatile log. Since this is far off
|
||||||
|
what others do change the default.
|
||||||
|
See conf/distro/include/mortsgna-image-logfile-volatile.inc for more
|
||||||
|
information.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
This layer contains the following folders:
|
||||||
|
|
||||||
|
appends:
|
||||||
|
All bbappends are stored in this folder. For each layer a sub-folder exists
|
||||||
|
and the appends are dynamic: If a layer is not in bblayers.conf the folder
|
||||||
|
for the layer is ignored (see conf/layer.conf).
|
||||||
|
|
||||||
|
classes:
|
||||||
|
* instant-remote-debug.bbclass: Create a sysroot for remote debugging -
|
||||||
|
Yocto's suggested workflows are cumbersome for ad-hoc remote debugging.
|
||||||
|
* instant-native-sysroot.bbclass: Native recipes inheriting this class
|
||||||
|
install everything necessary to run into a native sysroot. It's like a
|
||||||
|
quick & minimal native SDK. Currently gcc-cross and gdb-cross inherit this
|
||||||
|
class to enable instant remote debugging.
|
||||||
|
* user-with-full-skel.bbclass: Helper to populate /etc/skel in user's
|
||||||
|
home at image creation time.
|
||||||
|
|
||||||
|
conf:
|
||||||
|
layer.conf / and distro configurations
|
||||||
|
|
||||||
|
recipes-defaultconfig:
|
||||||
|
* default configurations for lxqt and xfce to get a preconfigured
|
||||||
|
environment. Note that all data is stored in th image at /etc/skel
|
||||||
|
* unpriv-user: A default non root user (named morona) member of many groups
|
||||||
|
required for daily operations. It is shipped with home folder populated
|
||||||
|
form /etc/skel.
|
||||||
|
|
||||||
|
recipes-image:
|
||||||
|
All images for console / kde / lxqt / xfce ar found. allgui-images build
|
||||||
|
images for all graphical environments.
|
||||||
|
|
||||||
|
recipes-utlis:
|
||||||
|
* udev-rules-udisks-hide-bootpart: Hide boot partition from udisks
|
||||||
|
* Some tools (these are the only left from angstrom). Honestly: Have never
|
||||||
|
used them but kept them if users come from angstrom and might miss
|
||||||
|
them.
|
||||||
|
|
||||||
|
scripts:
|
||||||
|
A script collection
|
||||||
|
* to write images or kernel only to sdcards
|
||||||
|
* for changing recipe checksums automatically after version bump
|
||||||
|
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
This layer depends on:
|
||||||
|
|
||||||
|
URI: git://git.openembedded.org/openembedded-core
|
||||||
|
branch: master
|
||||||
|
revision: HEAD
|
||||||
|
|
||||||
|
|
||||||
|
For building console images:
|
||||||
|
|
||||||
|
URI: git://git.openembedded.org/meta-openembedded
|
||||||
|
Layer: meta-oe
|
||||||
|
branch: master
|
||||||
|
revision: HEAD
|
||||||
|
|
||||||
|
URI: git://git.openembedded.org/meta-openembedded
|
||||||
|
Layer: meta-networking
|
||||||
|
branch: master
|
||||||
|
revision: HEAD
|
||||||
|
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Other layers are required when building 'GUI images'
|
||||||
|
|
||||||
|
URI: git://git.openembedded.org/meta-openembedded
|
||||||
|
Layer: meta-gnome
|
||||||
|
branch: master
|
||||||
|
revision: HEAD
|
||||||
|
|
||||||
|
URI: git://git.openembedded.org/meta-openembedded
|
||||||
|
Layer: meta-multimedia
|
||||||
|
branch: master
|
||||||
|
revision: HEAD
|
||||||
|
|
||||||
|
URI: git://git.openembedded.org/meta-openembedded
|
||||||
|
Layer: meta-python
|
||||||
|
branch: master
|
||||||
|
revision: HEAD
|
||||||
|
|
||||||
|
URI: git://git.openembedded.org/meta-openembedded
|
||||||
|
Layer: meta-xfce
|
||||||
|
branch: master
|
||||||
|
revision: HEAD
|
||||||
|
|
||||||
|
URI: git://github.com/meta-qt5/meta-qt5.git
|
||||||
|
branch: master
|
||||||
|
revision: HEAD
|
||||||
|
|
||||||
|
URI: git://github.com/schnitzeltony/meta-qt5-extra.git
|
||||||
|
branch: master
|
||||||
|
revision: HEAD
|
||||||
|
|
||||||
|
URI: git://github.com/schnitzeltony/meta-office.git
|
||||||
|
branch: master
|
||||||
|
revision: HEAD
|
||||||
|
|
||||||
|
URI: git://github.com/OSSystems/meta-browser.git
|
||||||
|
branch: master
|
||||||
|
revision: HEAD
|
||||||
|
|
||||||
|
URI: git://github.com/cazfi/meta-games.git
|
||||||
|
branch: master
|
||||||
|
revision: HEAD
|
||||||
|
|
||||||
|
URI: git://github.com/schnitzeltony/meta-retro
|
||||||
|
branch: master
|
||||||
|
revision: HEAD
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
To add plymouth to 'GUI images'
|
||||||
|
|
||||||
|
URI: git://git.openembedded.org/meta-openembedded
|
||||||
|
Layer: meta-initramfs
|
||||||
|
branch: master
|
||||||
|
revision: HEAD
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
To hear radio
|
||||||
|
|
||||||
|
URI: git://github.com/balister/meta-sdr.git
|
||||||
|
Layer: meta-initramfs
|
||||||
|
branch: master
|
||||||
|
revision: HEAD
|
||||||
230
README.md
230
README.md
@@ -1,230 +0,0 @@
|
|||||||
# meta-mortsgna: (more than) yet another distro layer
|
|
||||||
|
|
||||||
The target of this layer is to build images with the best out-of-the-box experience and to support developers with helpers for common tasks.
|
|
||||||
It has its origin Ångström distribution - check https://github.com/Angstrom-distribution/meta-angstrom.
|
|
||||||
|
|
||||||
----------------------------------------------
|
|
||||||
### Additional global variable for local.conf:
|
|
||||||
|
|
||||||
* MORTSGNA_ARMV7_TUNE:
|
|
||||||
|
|
||||||
If this variable is set to "1", all armv7a / cortex variants are build as
|
|
||||||
armv7a.
|
|
||||||
|
|
||||||
\+ Reduce build time/disk-space required when building for multiple machines
|
|
||||||
|
|
||||||
\- Build optimization (e.g vfp/NEON) is not the best your machine can get
|
|
||||||
|
|
||||||
Rules of thumb:
|
|
||||||
* If you build images for multiple armv7 machines and don't need to tickle
|
|
||||||
the last quarter of your machine's performance:
|
|
||||||
Set MORTSGNA_ARMV7_TUNE="1"
|
|
||||||
* If you are looking for best optimization for your machine and/or you have
|
|
||||||
a fast build host with lots of disk-space: don't!
|
|
||||||
see [mortsgna-armv7-tune.inc](conf/distro/include/mortsgna-armv7-tune.inc) for more information
|
|
||||||
|
|
||||||
------------------------------------------------
|
|
||||||
### The following image-features are (re-)added:
|
|
||||||
|
|
||||||
* x11-base:
|
|
||||||
Let systemd boot into grahical target
|
|
||||||
|
|
||||||
* volatile-log:
|
|
||||||
If set, journal goes to volatile /run/log and /var/log is linked to /run/log
|
|
||||||
which is volatile. NOTE: We change OE-Core's default here: In bitbake.conf
|
|
||||||
VOLATILE_LOG_DIR is enabled so that all images are build for volatile log.
|
|
||||||
Since this is far off what others do change the default. See
|
|
||||||
[mortsgna-image-logfile-volatile.inc](conf/distro/include/mortsgna-image-logfile-volatile.inc) for more
|
|
||||||
information.
|
|
||||||
|
|
||||||
----------------------------------------------
|
|
||||||
### This layer contains the following folders:
|
|
||||||
|
|
||||||
[appends](appends):
|
|
||||||
* All bbappends are stored in this folder. For each layer a sub-folder exists
|
|
||||||
and the appends are dynamic: If a layer is not in bblayers.conf the folder
|
|
||||||
for the layer is ignored (see conf/layer.conf).
|
|
||||||
|
|
||||||
[classes](classes):
|
|
||||||
* [instant-sysroot-target.bbclass](classes/instant-sysroot-target.bbclass): Create a sysroot for target remote
|
|
||||||
building/debugging - Yocto's suggested workflows are cumbersome for ad-hoc
|
|
||||||
usage.
|
|
||||||
* [instant-sysroot-native.bbclass](classes/instant-sysroot-native.bbclass): Native recipes inheriting this class
|
|
||||||
install everything necessary to run into a native sysroot. For a
|
|
||||||
quick & minimal native SDK gcc-cross and gdb-cross inherit this class.
|
|
||||||
class to enable instant remote debugging.
|
|
||||||
* [user-with-full-skel.bbclass](classes/user-with-full-skel.bbclass): Helper to populate /etc/skel in user's
|
|
||||||
home at image creation time.
|
|
||||||
|
|
||||||
[conf](conf):
|
|
||||||
* layer.conf / and distro configurations
|
|
||||||
|
|
||||||
[recipes-defaultconfig](recipes-defaultconfig):
|
|
||||||
* default configurations for lxqt and xfce to get a preconfigured
|
|
||||||
environment. Note that all data is stored in th image at /etc/skel
|
|
||||||
* unpriv-user: A default non root user (named morona) member of many groups
|
|
||||||
required for daily operations. It is shipped with home folder populated
|
|
||||||
form /etc/skel.
|
|
||||||
|
|
||||||
[recipes-image](recipes-image):
|
|
||||||
* All images for console / kde / lxqt / xfce ar found. allgui-images build
|
|
||||||
images for all graphical environments.
|
|
||||||
|
|
||||||
[recipes-utlis](recipes-utlis):
|
|
||||||
* udev-rules-udisks-hide-bootpart: Hide boot partition from udisks
|
|
||||||
* Some tools (these are the only left from angstrom). Honestly: Have never
|
|
||||||
used them but kept them if users come from angstrom and might miss
|
|
||||||
them.
|
|
||||||
|
|
||||||
[scripts](scripts):
|
|
||||||
A script collection
|
|
||||||
* to write images or kernel only to sdcards
|
|
||||||
* for changing recipe checksums automatically after version bump -> [update-recipe-checksums.sh](scripts/update-recipe-checksums.sh)
|
|
||||||
|
|
||||||
|
|
||||||
--------------------------
|
|
||||||
### This layer depends on:
|
|
||||||
|
|
||||||
```
|
|
||||||
URI: git://git.openembedded.org/openembedded-core
|
|
||||||
branch: thud
|
|
||||||
revision: HEAD
|
|
||||||
```
|
|
||||||
|
|
||||||
#### For building console-images:
|
|
||||||
```
|
|
||||||
URI: git://git.openembedded.org/meta-openembedded
|
|
||||||
Layer: meta-oe
|
|
||||||
branch: thud
|
|
||||||
revision: HEAD
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
URI: git://git.openembedded.org/meta-openembedded
|
|
||||||
Layer: meta-networking
|
|
||||||
branch: thud
|
|
||||||
revision: HEAD
|
|
||||||
```
|
|
||||||
|
|
||||||
#### For building GUI-images:
|
|
||||||
|
|
||||||
```
|
|
||||||
URI: git://git.openembedded.org/meta-openembedded
|
|
||||||
Layer: meta-gnome
|
|
||||||
branch: thud
|
|
||||||
revision: HEAD
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
URI: git://git.openembedded.org/meta-openembedded
|
|
||||||
Layer: meta-multimedia
|
|
||||||
branch: thud
|
|
||||||
revision: HEAD
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
URI: git://git.openembedded.org/meta-openembedded
|
|
||||||
Layer: meta-python
|
|
||||||
branch: thud
|
|
||||||
revision: HEAD
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
URI: git://git.openembedded.org/meta-openembedded
|
|
||||||
Layer: meta-xfce
|
|
||||||
branch: thud
|
|
||||||
revision: HEAD
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
URI: git://github.com/meta-qt5/meta-qt5.git
|
|
||||||
branch: thud
|
|
||||||
revision: HEAD
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
URI: git://github.com/schnitzeltony/meta-qt5-extra.git
|
|
||||||
branch: thud
|
|
||||||
revision: HEAD
|
|
||||||
```
|
|
||||||
|
|
||||||
#### To add plymouth to GUI-images:
|
|
||||||
|
|
||||||
```
|
|
||||||
URI: git://git.openembedded.org/meta-openembedded
|
|
||||||
Layer: meta-initramfs
|
|
||||||
branch: thud
|
|
||||||
revision: HEAD
|
|
||||||
```
|
|
||||||
|
|
||||||
#### To surf the internet:
|
|
||||||
|
|
||||||
```
|
|
||||||
URI: git://github.com/OSSystems/meta-browser.git
|
|
||||||
branch: master
|
|
||||||
revision: HEAD
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
URI: git://github.com/meta-rust/meta-rust.git
|
|
||||||
branch: master
|
|
||||||
revision: HEAD
|
|
||||||
```
|
|
||||||
|
|
||||||
#### To pretend work:
|
|
||||||
```
|
|
||||||
URI: git://github.com/schnitzeltony/meta-office.git
|
|
||||||
branch: thud
|
|
||||||
revision: HEAD
|
|
||||||
```
|
|
||||||
|
|
||||||
#### To produce music:
|
|
||||||
```
|
|
||||||
URI: git://github.com/schnitzeltony/meta-qt5-extra.git
|
|
||||||
branch: thud
|
|
||||||
revision: HEAD
|
|
||||||
```
|
|
||||||
|
|
||||||
#### To hear radio:
|
|
||||||
|
|
||||||
```
|
|
||||||
URI: git://github.com/balister/meta-sdr.git
|
|
||||||
branch: master
|
|
||||||
revision: HEAD
|
|
||||||
```
|
|
||||||
|
|
||||||
#### To happily waste time:
|
|
||||||
|
|
||||||
```
|
|
||||||
URI: git://github.com/cazfi/meta-games.git
|
|
||||||
branch: master
|
|
||||||
revision: HEAD
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
URI: git://github.com/schnitzeltony/meta-retro
|
|
||||||
branch: master
|
|
||||||
revision: HEAD
|
|
||||||
```
|
|
||||||
|
|
||||||
------------
|
|
||||||
Contributing
|
|
||||||
------------
|
|
||||||
* Submit any patches against the `meta-mortsgna` layer by using the GitHub pull-request feature.
|
|
||||||
|
|
||||||
|
|
||||||
--------
|
|
||||||
Policies
|
|
||||||
--------
|
|
||||||
* Please do not send private emails to maintainers. For questions/suggestions.. use GitHub issues.
|
|
||||||
* Pull requests should follow [OE-Styleguide](https://www.openembedded.org/wiki/Styleguide) with the following additions:
|
|
||||||
* Use 4 spaces for indention always
|
|
||||||
* For splitting of long list values use four-space indentation on sucessive lines set the closing quote as the first character ([OE-Styleguide](https://www.openembedded.org/wiki/Styleguide) - second example)
|
|
||||||
|
|
||||||
|
|
||||||
-----------
|
|
||||||
Maintainers
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Layer maintainer: Andreas Müller <schnitzeltony@gmail.com>
|
|
||||||
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
PACKAGECONFIG_append = " use-egl impl-side-painting proprietary-codecs"
|
|
||||||
@@ -3,4 +3,5 @@ PACKAGECONFIG_append = " \
|
|||||||
libmms \
|
libmms \
|
||||||
faad \
|
faad \
|
||||||
fluidsynth \
|
fluidsynth \
|
||||||
|
gtk \
|
||||||
"
|
"
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
PACKAGECONFIG_append = " \
|
PACKAGECONFIG_append = " \
|
||||||
|
mad \
|
||||||
x264 \
|
x264 \
|
||||||
"
|
"
|
||||||
@@ -1 +0,0 @@
|
|||||||
inherit instant-sysroot-native
|
|
||||||
@@ -4,34 +4,3 @@ PACKAGECONFIG_DISTRO += " \
|
|||||||
gtk \
|
gtk \
|
||||||
harfbuzz \
|
harfbuzz \
|
||||||
"
|
"
|
||||||
|
|
||||||
inherit instant-paths
|
|
||||||
|
|
||||||
do_copy_to_target_sysroot_append() {
|
|
||||||
# ---------- qt.conf ----------
|
|
||||||
# create
|
|
||||||
generate_qt_config_file_paths
|
|
||||||
|
|
||||||
# move to target sysroot
|
|
||||||
qtconf=`basename ${OE_QMAKE_QTCONF_PATH}`
|
|
||||||
targetpath=${INSTANT_TARGET_PATH}${OE_QMAKE_PATH_HOST_BINS}
|
|
||||||
rm -f "$targetpath/$qtconf"
|
|
||||||
mv "${OE_QMAKE_QTCONF_PATH}" "$targetpath"
|
|
||||||
echo "${OE_QMAKE_PATH_HOST_BINS}/$qtconf" >> ${INSTANT_MANIFEST}
|
|
||||||
|
|
||||||
# adjust to instant sysroot
|
|
||||||
sed -i \
|
|
||||||
-e 's:${STAGING_DIR_NATIVE}:${INSTANT_NATIVE_PATH}:g' \
|
|
||||||
-e 's:${STAGING_DIR_HOST}:${INSTANT_TARGET_PATH}:g' \
|
|
||||||
-e 's:^HostBinaries =.*:HostBinaries = ${INSTANT_NATIVE_PATH}${bindir}${QT_DIR_NAME}:g' \
|
|
||||||
"$targetpath/$qtconf"
|
|
||||||
|
|
||||||
# ---------- mkspecs qmake.conf ----------
|
|
||||||
rm ${INSTANT_TARGET_PATH}${libdir}${QT_DIR_NAME}/mkspecs/${XPLATFORM}/qmake.conf
|
|
||||||
cp -f "${WORKDIR}/packages-split/${PN}-mkspecs${libdir}${QT_DIR_NAME}/mkspecs/${XPLATFORM}/qmake.conf" \
|
|
||||||
"${INSTANT_TARGET_PATH}${libdir}${QT_DIR_NAME}/mkspecs/${XPLATFORM}/"
|
|
||||||
sed -i \
|
|
||||||
-e 's:${DEBUG_PREFIX_MAP}:-fdebug-prefix-map=${INSTANT_TARGET_PATH}= -fdebug-prefix-map=${INSTANT_NATIVE_PATH}=:g' \
|
|
||||||
"${INSTANT_TARGET_PATH}${libdir}${QT_DIR_NAME}/mkspecs/${XPLATFORM}/qmake.conf"
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
PACKAGECONFIG_append = " examples"
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
PACKAGECONFIG_append = " examples"
|
|
||||||
@@ -3,12 +3,14 @@
|
|||||||
|
|
||||||
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin"
|
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin"
|
||||||
|
|
||||||
|
EDITOR="vi" # needed for packages like cron, git-commit
|
||||||
|
|
||||||
TERM="xterm-256color"
|
TERM="xterm-256color"
|
||||||
|
|
||||||
# Set the prompt for bash
|
# Set the prompt for bash and ash (no other shells known to be in use here)
|
||||||
PS1='\u@\h:\W\$ '
|
PS1='\u@\h:\W\$ '
|
||||||
|
PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
|
||||||
|
|
||||||
# loop profile.d scriptlets
|
|
||||||
if [ -d /etc/profile.d ]; then
|
if [ -d /etc/profile.d ]; then
|
||||||
for i in /etc/profile.d/*.sh; do
|
for i in /etc/profile.d/*.sh; do
|
||||||
if [ -f $i -a -r $i ]; then
|
if [ -f $i -a -r $i ]; then
|
||||||
@@ -18,44 +20,15 @@ if [ -d /etc/profile.d ]; then
|
|||||||
unset i
|
unset i
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# locale fallback for UTF8
|
if command -v resize >/dev/null && command -v tty >/dev/null; then
|
||||||
if [ -z "$LANG" ]; then
|
# Make sure we are on a serial console (i.e. the device used starts with
|
||||||
LANG="en_US.utf8"
|
# /dev/tty[A-z]), otherwise we confuse e.g. the eclipse launcher which
|
||||||
export LANG
|
# tries do use ssh
|
||||||
|
case $(tty) in
|
||||||
|
/dev/tty[A-z]*) resize >/dev/null;;
|
||||||
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# `ls' enhancements:
|
export PATH PS1 OPIEDIR QPEDIR QTDIR EDITOR TERM PROMPT_COMMAND
|
||||||
export LS_OPTIONS='--color=auto'
|
|
||||||
eval `dircolors`
|
|
||||||
alias ls='ls $LS_OPTIONS'
|
|
||||||
alias ll='ls $LS_OPTIONS -l'
|
|
||||||
|
|
||||||
# colorize all grep variants
|
|
||||||
alias grep='grep --color'
|
|
||||||
alias egrep='egrep --color=auto'
|
|
||||||
alias fgrep='fgrep --color=auto'
|
|
||||||
alias xzegrep='xzegrep --color=auto'
|
|
||||||
alias xzfgrep='xzfgrep --color=auto'
|
|
||||||
alias xzgrep='xzgrep --color=auto'
|
|
||||||
alias zegrep='zegrep --color=auto'
|
|
||||||
alias zfgrep='zfgrep --color=auto'
|
|
||||||
alias zgrep='zgrep --color=auto'
|
|
||||||
|
|
||||||
# Turn on parallel history
|
|
||||||
shopt -s histappend
|
|
||||||
history -a
|
|
||||||
|
|
||||||
HOSTNAME=`hostname 2>/dev/null`
|
|
||||||
HISTSIZE=1000
|
|
||||||
if [ "$HISTCONTROL" = "ignorespace" ] ; then
|
|
||||||
export HISTCONTROL=ignoreboth
|
|
||||||
else
|
|
||||||
export HISTCONTROL=ignoredups
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Turn on checkwinsize
|
|
||||||
shopt -s checkwinsize
|
|
||||||
|
|
||||||
export PATH TERM PS1 PROMPT_COMMAND HOSTNAME HISTSIZE
|
|
||||||
|
|
||||||
umask 022
|
umask 022
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
# ~/.bashrc: executed by bash(1) for interactive non-login shells.
|
# ~/.bashrc: executed by bash(1) for non-login shells.
|
||||||
|
|
||||||
if [ -f /etc/profile ]; then
|
PS1='\u@\h:\W\$ '
|
||||||
. /etc/profile
|
|
||||||
fi
|
# `ls' enhancements:
|
||||||
|
export LS_OPTIONS='--color=auto'
|
||||||
|
eval `dircolors`
|
||||||
|
alias ls='ls $LS_OPTIONS'
|
||||||
|
alias ll='ls $LS_OPTIONS -l'
|
||||||
|
# REVISIT - do not change path
|
||||||
|
alias su='su --login'
|
||||||
|
|
||||||
|
umask 022
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
# ~/.profile: executed by interactive login shells.
|
# ~/.profile: executed by Bourne-compatible login shells.
|
||||||
|
|
||||||
if [ -f ~/.bashrc ]; then
|
if [ -f ~/.bashrc ]; then
|
||||||
. ~/.bashrc
|
. ~/.bashrc
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Might fail after "su - myuser" when /dev/tty* is not writable by "myuser".
|
||||||
|
mesg n 2>/dev/null
|
||||||
|
|
||||||
|
# locale fallback for UTF8
|
||||||
|
if [ -z "$LANG" ]; then
|
||||||
|
LANG="en_US.utf8"
|
||||||
|
export LANG
|
||||||
|
fi
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
do_install_append() {
|
|
||||||
sed -i 's|root::0:0:root:/home/root:/bin/sh|root::0:0:root:/home/root:/bin/bash|' ${D}${datadir}/${BPN}/passwd.master
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
inherit instant-sysroot-native
|
|
||||||
@@ -1 +1 @@
|
|||||||
inherit instant-sysroot-native
|
inherit instant-native-sysroot
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
inherit instant-sysroot-native
|
inherit instant-native-sysroot
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
PACKAGECONFIG_append = " gnome"
|
PACKAGECONFIG ?= "gnome"
|
||||||
|
|||||||
@@ -1,86 +0,0 @@
|
|||||||
#
|
|
||||||
# Writes build information to target filesystem on /etc/buildinfo
|
|
||||||
#
|
|
||||||
# Copyright (C) 2014 Intel Corporation
|
|
||||||
# Author: Alejandro Enedino Hernandez Samaniego <alejandro.hernandez@intel.com>
|
|
||||||
#
|
|
||||||
# Licensed under the MIT license, see COPYING.MIT for details
|
|
||||||
#
|
|
||||||
# Usage: add INHERIT += "image-buildinfo_mortsgna-mortsgna" to your conf file
|
|
||||||
#
|
|
||||||
# This is a slightly reworked version oe-core's version. Patch was sent [1]
|
|
||||||
# but...
|
|
||||||
# [1] http://lists.openembedded.org/pipermail/openembedded-core/2018-September/274747.html
|
|
||||||
|
|
||||||
# Desired variables to display
|
|
||||||
IMAGE_BUILDINFO_MORTSGNA_VARS ?= "DISTRO DISTRO_VERSION"
|
|
||||||
|
|
||||||
# Desired location of the output file in the image.
|
|
||||||
IMAGE_BUILDINFO_MORTSGNA_FILE ??= "${sysconfdir}/buildinfo"
|
|
||||||
|
|
||||||
# Gets git branch's status (clean or dirty)
|
|
||||||
def get_layer_mortsgna_git_status(path):
|
|
||||||
import subprocess
|
|
||||||
try:
|
|
||||||
subprocess.check_output("""cd %s; export PSEUDO_UNLOAD=1; set -e;
|
|
||||||
git diff --quiet --no-ext-diff
|
|
||||||
git diff --quiet --no-ext-diff --cached""" % path,
|
|
||||||
shell=True,
|
|
||||||
stderr=subprocess.STDOUT)
|
|
||||||
return ""
|
|
||||||
except subprocess.CalledProcessError as ex:
|
|
||||||
# Silently treat errors as "modified", without checking for the
|
|
||||||
# (expected) return code 1 in a modified git repo. For example, we get
|
|
||||||
# output and a 129 return code when a layer isn't a git repo at all.
|
|
||||||
return "-- modified"
|
|
||||||
|
|
||||||
# Returns layer revisions along with their respective status
|
|
||||||
def get_layer_mortsgna_revs(d):
|
|
||||||
layers = (d.getVar("BBLAYERS") or "").split()
|
|
||||||
medadata_revs = ["%-17s = %s:%s %s" % (os.path.basename(i), \
|
|
||||||
base_get_metadata_git_branch(i, None).strip(), \
|
|
||||||
base_get_metadata_git_revision(i, None), \
|
|
||||||
get_layer_mortsgna_git_status(i)) \
|
|
||||||
for i in layers]
|
|
||||||
return '\n'.join(medadata_revs)
|
|
||||||
|
|
||||||
def buildinfo_mortsgna_target(d):
|
|
||||||
# Get context
|
|
||||||
if d.getVar('BB_WORKERCONTEXT') != '1':
|
|
||||||
return ""
|
|
||||||
# taken from base.bbclass
|
|
||||||
localdata = bb.data.createCopy(d)
|
|
||||||
statuslines = []
|
|
||||||
g = globals()
|
|
||||||
func = 'buildcfg_vars'
|
|
||||||
if func not in g:
|
|
||||||
bb.warn("Build configuration function '%s' does not exist" % func)
|
|
||||||
else:
|
|
||||||
flines = g[func](localdata)
|
|
||||||
if flines:
|
|
||||||
statuslines.extend(flines)
|
|
||||||
return ('\n%s\n' % '\n'.join(statuslines))
|
|
||||||
|
|
||||||
# Write build information to target filesystem
|
|
||||||
python buildinfo_mortsgna () {
|
|
||||||
if not d.getVar('IMAGE_BUILDINFO_MORTSGNA_FILE'):
|
|
||||||
return
|
|
||||||
with open(d.expand('${IMAGE_ROOTFS}${IMAGE_BUILDINFO_MORTSGNA_FILE}'), 'w') as build:
|
|
||||||
build.writelines((
|
|
||||||
'''-----------------------
|
|
||||||
Build Configuration: |
|
|
||||||
-----------------------
|
|
||||||
''',
|
|
||||||
buildinfo_mortsgna_target(d),
|
|
||||||
'''
|
|
||||||
-----------------------
|
|
||||||
Layer Revisions: |
|
|
||||||
-----------------------
|
|
||||||
''',
|
|
||||||
get_layer_mortsgna_revs(d),
|
|
||||||
'''
|
|
||||||
'''
|
|
||||||
))
|
|
||||||
}
|
|
||||||
|
|
||||||
IMAGE_PREPROCESS_COMMAND += "buildinfo_mortsgna;"
|
|
||||||
@@ -1,10 +1,11 @@
|
|||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# class for instant native sysroot
|
# class for instant native sysroot
|
||||||
#
|
|
||||||
# Hardlink recipe sysroot and generated sysroot to instant native sysroot
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
inherit utils instant-paths
|
inherit utils
|
||||||
|
|
||||||
|
# This is where instant sysroot is installed into
|
||||||
|
INSTANT_SYSROOT_PATH ??= "${TMPDIR}/sysroot-instant-native"
|
||||||
|
|
||||||
do_prepare_recipe_sysroot[postfuncs] += "${INSTANTSYSROOTFUNC}"
|
do_prepare_recipe_sysroot[postfuncs] += "${INSTANTSYSROOTFUNC}"
|
||||||
INSTANTSYSROOTFUNC = ""
|
INSTANTSYSROOTFUNC = ""
|
||||||
@@ -12,8 +13,8 @@ INSTANTSYSROOTFUNC_class-native = "instant_sysroot_copy"
|
|||||||
INSTANTSYSROOTFUNC_class-cross = "instant_sysroot_copy"
|
INSTANTSYSROOTFUNC_class-cross = "instant_sysroot_copy"
|
||||||
|
|
||||||
instant_sysroot_copy () {
|
instant_sysroot_copy () {
|
||||||
mkdir -p ${INSTANT_NATIVE_PATH}
|
mkdir -p ${INSTANT_SYSROOT_PATH}
|
||||||
hardlinkdir ${RECIPE_SYSROOT_NATIVE} ${INSTANT_NATIVE_PATH}
|
hardlinkdir ${RECIPE_SYSROOT_NATIVE} ${INSTANT_SYSROOT_PATH}
|
||||||
}
|
}
|
||||||
|
|
||||||
do_populate_sysroot[postfuncs] += "${INSTANTPOPULATE}"
|
do_populate_sysroot[postfuncs] += "${INSTANTPOPULATE}"
|
||||||
@@ -22,10 +23,10 @@ INSTANTPOPULATE_class-native = "instant_populate_sysroot"
|
|||||||
INSTANTPOPULATE_class-cross = "instant_populate_sysroot"
|
INSTANTPOPULATE_class-cross = "instant_populate_sysroot"
|
||||||
|
|
||||||
instant_populate_sysroot () {
|
instant_populate_sysroot () {
|
||||||
find "${SYSROOT_DESTDIR}${STAGING_DIR_NATIVE}" -type f -o -type l | while read file; do
|
for executable in `find ${SYSROOT_DESTDIR}/${STAGING_DIR_NATIVE} -type f`; do
|
||||||
alignedpath=`echo "$file" | sed 's:${SYSROOT_DESTDIR}${STAGING_DIR_NATIVE}::'`
|
alignedpath=`echo ${executable} | sed 's:${SYSROOT_DESTDIR}/${STAGING_DIR_NATIVE}::'`
|
||||||
targetdir=`dirname "${INSTANT_NATIVE_PATH}/${alignedpath}"`
|
targetdir=`dirname ${INSTANT_SYSROOT_PATH}/${alignedpath}`
|
||||||
mkdir -p "$targetdir"
|
mkdir -p "$targetdir"
|
||||||
cp -fld "${file}" "${targetdir}"
|
cp -fl "${executable}" "${targetdir}"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
# This is where instant native sysroot is installed to
|
|
||||||
INSTANT_NATIVE_PATH = "${TMPDIR}/sysroot-instant-native"
|
|
||||||
|
|
||||||
# This is where instant target sysroot is installed to
|
|
||||||
INSTANT_TARGET_PATH = "${TMPDIR}/sysroot-instant-target-${MACHINE_ARCH}"
|
|
||||||
158
classes/instant-remote-debug.bbclass
Normal file
158
classes/instant-remote-debug.bbclass
Normal file
@@ -0,0 +1,158 @@
|
|||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# class for instant remote debugging by building a debug sysroot
|
||||||
|
#
|
||||||
|
# It adresses a use case seen umptenth times: After creating or changing a
|
||||||
|
# recipe, the build result crashes on target e.g with segfault or without
|
||||||
|
# dropping helpful information. In these situations one wants to debug NOW
|
||||||
|
# without further waiting or quirky activities.
|
||||||
|
#
|
||||||
|
# To achieve, a machine specific debug sysroot is build
|
||||||
|
#
|
||||||
|
# to enable debug sysroot build set:
|
||||||
|
# 'INHERIT += "instant-remote-debug"'
|
||||||
|
# in your local.conf
|
||||||
|
#
|
||||||
|
# to debug by remote do:
|
||||||
|
#
|
||||||
|
# ON TARGET:
|
||||||
|
# * install gdbserver (build automatically for images if this class enabled - see
|
||||||
|
# EXTRA_IMAGEDEPENDS below)
|
||||||
|
# * open a shell and enter 'gdbserver :<IP-Port> <full path of executable with optional args>' e.g
|
||||||
|
# 'gdbserver :5000 /usr/bin/thunar'
|
||||||
|
#
|
||||||
|
# ON BUILD HOST (suggested IDE: QtCreator)
|
||||||
|
# * build gdb-cross-<TARGET_ARCH> (done automatically on images if this class
|
||||||
|
# enabled - see EXTRA_IMAGEDEPENDS below)
|
||||||
|
# * in QtCreator select Menu Debug/Start Debugging/Attach to Running Debug Server
|
||||||
|
# -> Dialog 'Start Debugger' opens
|
||||||
|
# * At the first session a so called 'Kit' has to be set up (1st line -> 'Manage').
|
||||||
|
# The settings are kept so 1.-6. have to be done once only.
|
||||||
|
# 1. Create a Kit by 'Add' -> further dialog opens
|
||||||
|
# 2. Select an name for the Kit e.g 'OE'
|
||||||
|
# 3. Set sysroot (see INSTANT_REMOTE_PATH below):
|
||||||
|
# ${TMPDIR}/sysroot-instant-remote-${MACHINE_ARCH}
|
||||||
|
# 4. Select compilers (it is not necessary for debug but without QTCreator won't enable Kit) for C and C++ e.g:
|
||||||
|
# C: '<TMDIR>/sysroot-instant-native/usr/bin/arm-mortsgna-linux-gnueabi/arm-mortsgna-linux-gnueabi-gcc'
|
||||||
|
# C++: '<TMDIR>/sysroot-instant-native/usr/bin/arm-mortsgna-linux-gnueabi/arm-mortsgna-linux-gnueabi-g++'
|
||||||
|
# 5. Select debugger e.g:
|
||||||
|
# GDB: '<TMDIR>/sysroot-instant-native/usr/bin/arm-mortsgna-linux-gnueabi/arm-mortsgna-linux-gnueabi-gdb'
|
||||||
|
# 6. Select 'OK' in Options dialog -> 'Start Debugger' should be back on top
|
||||||
|
# * Make sure 'OE' Kit is selected
|
||||||
|
# * Browse for executable e.g '<TMDIR>/sysroot-instant-remote/usr/bin/thunar'
|
||||||
|
# * Set IP:Port of target machine e.g '192.168.2.108:5000'
|
||||||
|
# * Select 'OK'
|
||||||
|
#
|
||||||
|
# Happy debugging!!
|
||||||
|
#
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# ensure necessary gdb recipes are build
|
||||||
|
EXTRA_IMAGEDEPENDS += "gdb-cross-${TARGET_ARCH} gdb"
|
||||||
|
|
||||||
|
# This is where instant sysroot is installed into
|
||||||
|
INSTANT_REMOTE_PATH = "${TMPDIR}/sysroot-instant-remote-${MACHINE_ARCH}"
|
||||||
|
WORK_REMOTE_PATH = "${WORKDIR}/sysroot-instant-remote"
|
||||||
|
|
||||||
|
python __anonymous () {
|
||||||
|
if d.getVar('CLASSOVERRIDE') != 'class-target':
|
||||||
|
bb.build.deltask('do_copysourcestosysroot', d)
|
||||||
|
}
|
||||||
|
|
||||||
|
do_copysourcestosysroot() {
|
||||||
|
if [ ! -d "${WORKDIR}/packages-split" -o ! -d ${WORKDIR}/package ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
# ---------- link source code files ----------
|
||||||
|
if [ -d ${WORKDIR}/package/usr/src/debug/${PN} ] ; then
|
||||||
|
mkdir -p ${WORK_REMOTE_PATH}/usr/src/debug/${PN}
|
||||||
|
cd ${WORKDIR}/package/usr/src/debug/${PN}
|
||||||
|
find . -print0 | cpio --null -pdlu ${WORK_REMOTE_PATH}/usr/src/debug/${PN}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ---------- names of binaries and debuginfo -> manifest ----------
|
||||||
|
mkdir -p ${WORK_REMOTE_PATH}/manifests
|
||||||
|
# get path to library-link once only
|
||||||
|
if [ "${PN}" = "glibc-locale" ] ; then
|
||||||
|
PACK_SPLIT_LIB_LINK_SEARCH_PATH=`find ${WORKDIR}/packages-split -mindepth 1 -maxdepth 1 -type d ! -name '*-dbg' ! -name '*-dev' ! -name '*-staticdev' ! -name '*-doc' ! -name 'glibc*-localedata-*' ! -name 'glibc-charmap-*' ! -name 'locale-base-*'`
|
||||||
|
# other specials go here
|
||||||
|
# elif...
|
||||||
|
else
|
||||||
|
PACK_SPLIT_LIB_LINK_SEARCH_PATH=`find ${WORKDIR}/packages-split -mindepth 1 -maxdepth 1 -type d ! -name '*-dbg' ! -name '*-dev' ! -name '*-staticdev' ! -name '*-doc' ! -name '${PN}*-locale-*'`
|
||||||
|
fi
|
||||||
|
echo "Search so-link in $PACK_SPLIT_LIB_LINK_SEARCH_PATH.."
|
||||||
|
# add new
|
||||||
|
for pkgdbg in `find ${WORKDIR}/packages-split -mindepth 1 -maxdepth 1 -type d -name '*-dbg'` ; do
|
||||||
|
debug_binaries=
|
||||||
|
# Note: hardcoding is used in package.bbclass either (search for PACKAGE_DEBUG_SPLIT_STYLE)
|
||||||
|
if [ "${PACKAGE_DEBUG_SPLIT_STYLE}" = "debug-file-directory" ] ; then
|
||||||
|
if [ -d $pkgdbg/usr/lib/debug ] ; then
|
||||||
|
debug_binaries=`find $pkgdbg/usr/lib/debug -name '*.debug'`
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
debug_binaries=`find $pkgdbg -wholename '*.debug/*'`
|
||||||
|
fi
|
||||||
|
for file in $debug_binaries; do
|
||||||
|
# do 'root' path
|
||||||
|
file=`echo $file | sed -e 's:'$pkgdbg'::'`
|
||||||
|
|
||||||
|
# stripped binary (non debug)
|
||||||
|
if [ "${PACKAGE_DEBUG_SPLIT_STYLE}" = "debug-file-directory" ] ; then
|
||||||
|
filestripped=`echo $file | sed -e 's:/usr/lib/debug::' -e 's:\.debug::'`
|
||||||
|
else
|
||||||
|
filestripped=`echo $file | sed -e 's:\.debug/::'`
|
||||||
|
fi
|
||||||
|
# keep files in manifest
|
||||||
|
echo $file >> ${WORK_REMOTE_PATH}/manifests/${PN}
|
||||||
|
echo $filestripped >> ${WORK_REMOTE_PATH}/manifests/${PN}
|
||||||
|
# check for so-file links
|
||||||
|
if echo $filestripped | grep -q '\.so'; then
|
||||||
|
soname=`basename $filestripped`
|
||||||
|
for packsplit in $PACK_SPLIT_LIB_LINK_SEARCH_PATH; do
|
||||||
|
for link in `find $packsplit -lname $soname` ; do
|
||||||
|
# do 'root' path
|
||||||
|
link=`echo $link | sed -e 's:'$packsplit'::'`
|
||||||
|
echo $link >> ${WORK_REMOTE_PATH}/manifests/${PN}
|
||||||
|
done
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
# ---------- names of includes (they might contain debuggable code) -> manifest ----------
|
||||||
|
if [ -d ${WORKDIR}/packages-split/${PN}-dev/${includedir} ]; then
|
||||||
|
for include in `find ${WORKDIR}/packages-split/${PN}-dev/${includedir} -type f` ; do
|
||||||
|
# do 'root' path
|
||||||
|
include=`echo $include | sed -e 's:'${WORKDIR}/packages-split/${PN}-dev/'::'`
|
||||||
|
echo $include >> ${WORK_REMOTE_PATH}/manifests/${PN}
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ---------- link to files in package folder from manifest ----------
|
||||||
|
if [ -f ${WORK_REMOTE_PATH}/manifests/${PN} ] ; then
|
||||||
|
cd ${WORKDIR}/package
|
||||||
|
for file in `cat ${WORK_REMOTE_PATH}/manifests/${PN}` ; do
|
||||||
|
file=`echo $file | cut -c 2-`
|
||||||
|
if [ -e $file ] ; then
|
||||||
|
echo -n $file | cpio --null -pdlu ${WORK_REMOTE_PATH}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
addtask copysourcestosysroot after do_package before do_build
|
||||||
|
SSTATETASKS += "do_copysourcestosysroot"
|
||||||
|
|
||||||
|
do_copysourcestosysroot[sstate-inputdirs] = "${WORK_REMOTE_PATH}"
|
||||||
|
do_copysourcestosysroot[sstate-outputdirs] = "${INSTANT_REMOTE_PATH}"
|
||||||
|
|
||||||
|
# same as do package
|
||||||
|
do_copysourcestosysroot[vardeps] = "${PACKAGEBUILDPKGD} ${PACKAGESPLITFUNCS} ${PACKAGEFUNCS} ${@gen_packagevar(d)}"
|
||||||
|
|
||||||
|
do_copysourcestosysroot[stamp-extra-info] = "${MACHINE_ARCH}"
|
||||||
|
do_copysourcestosysroot[cleandirs] = "${WORK_REMOTE_PATH}"
|
||||||
|
|
||||||
|
python do_copysourcestosysroot_setscene () {
|
||||||
|
sstate_setscene(d)
|
||||||
|
}
|
||||||
|
addtask do_copysourcestosysroot_setscene
|
||||||
|
|
||||||
|
do_build[recrdeptask] += "do_copysourcestosysroot"
|
||||||
@@ -1,183 +0,0 @@
|
|||||||
#------------------------------------------------------------------------------
|
|
||||||
# class for instant remote debugging by building a debug sysroot
|
|
||||||
#
|
|
||||||
# It adresses a use case seen umptenth times: After creating or changing a
|
|
||||||
# recipe, the build result crashes on target e.g with segfault or without
|
|
||||||
# dropping helpful information. In these situations one wants to debug NOW
|
|
||||||
# without further waiting or quirky activities.
|
|
||||||
#
|
|
||||||
# To achieve, a debug sysroot is build with low cost:
|
|
||||||
#
|
|
||||||
# * All files are hard-linked to recipe's ${WORKDIR}/package
|
|
||||||
# * Additional build time for task do_copy_to_target_sysroot for most recipes is < 1s
|
|
||||||
#
|
|
||||||
# to enable debug sysroot build set:
|
|
||||||
# 'INHERIT += "instant-sysroot-target"'
|
|
||||||
# in your local.conf
|
|
||||||
#
|
|
||||||
# to debug by remote do:
|
|
||||||
#
|
|
||||||
# ON TARGET:
|
|
||||||
# * install gdbserver (build automatically for images if this class enabled - see
|
|
||||||
# EXTRA_IMAGEDEPENDS below)
|
|
||||||
# * open a shell and enter 'gdbserver :<IP-Port> <full path of executable with optional args>' e.g
|
|
||||||
# 'gdbserver :5000 /usr/bin/thunar'
|
|
||||||
#
|
|
||||||
# ON BUILD HOST (suggested IDE: QtCreator)
|
|
||||||
# * 'bitbake gdb-cross-<TARGET_ARCH>' (done automatically on images if this class
|
|
||||||
# is enabled - see EXTRA_IMAGEDEPENDS below)
|
|
||||||
# * 'bitbake qtcreator-sdk-prepare' once to create a valid qt.conf for qmake
|
|
||||||
# * in QtCreator select Menu Debug/Start Debugging/Attach to Running Debug Server
|
|
||||||
# -> Dialog 'Start Debugger' opens
|
|
||||||
# * At the first session a so called 'Kit' has to be set up (1st line -> 'Manage').
|
|
||||||
# The settings are kept so 1.- 8. have to be done once only.
|
|
||||||
# 1. Create a Kit by 'Add' -> further dialog opens
|
|
||||||
# 2. Select an name for the Kit e.g 'OE'
|
|
||||||
# 3. On recent QtCreators select 'Generic Linux Device' for 'Device type' -
|
|
||||||
# otherwise QtCreator won't let you select the kit later
|
|
||||||
# 4. Set sysroot (see INSTANT_TARGET_PATH in instant-path.bbclass):
|
|
||||||
# ${TMPDIR}/sysroot-instant-target-${MACHINE_ARCH}
|
|
||||||
# 5. Select compilers (it is not necessary for debug but without QTCreator won't enable Kit) for C and C++ e.g:
|
|
||||||
# C: '<TMDIR>/sysroot-instant-native/usr/bin/arm-mortsgna-linux-gnueabi/arm-mortsgna-linux-gnueabi-gcc'
|
|
||||||
# C++: '<TMDIR>/sysroot-instant-native/usr/bin/arm-mortsgna-linux-gnueabi/arm-mortsgna-linux-gnueabi-g++'
|
|
||||||
# 6. Select debugger e.g:
|
|
||||||
# GDB: '<TMDIR>/sysroot-instant-native/usr/bin/arm-mortsgna-linux-gnueabi/arm-mortsgna-linux-gnueabi-gdb'
|
|
||||||
# 7. To avoid qtcreator stopping on certain signals Select 'Debugger' in left list and in
|
|
||||||
# * 'GDB'-tab unselect 'Show a message box when reciving a signal'
|
|
||||||
# * 'Locals & Expressions' add in 'Debugging Helper Customization' lines as
|
|
||||||
# 'handle SIG32 pass nostop noprint' to pass SIG32 to application without
|
|
||||||
# running int breaks
|
|
||||||
# 8. Select 'OK' in Options dialog -> 'Start Debugger' should be back on top
|
|
||||||
# * Make sure 'OE' Kit is selected
|
|
||||||
# * Browse for executable e.g '<TMDIR>/sysroot-instant-target/usr/bin/thunar'
|
|
||||||
# * Set IP:Port of target machine e.g '192.168.2.108:5000'
|
|
||||||
# * Select 'OK'
|
|
||||||
#
|
|
||||||
# Happy debugging!!
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
inherit utils instant-paths
|
|
||||||
|
|
||||||
# ensure necessary gdb recipes are build
|
|
||||||
EXTRA_IMAGEDEPENDS += "gdb-cross-${TARGET_ARCH} gdb"
|
|
||||||
|
|
||||||
python __anonymous () {
|
|
||||||
if d.getVar('CLASSOVERRIDE') != 'class-target':
|
|
||||||
bb.build.deltask('do_copy_to_target_sysroot', d)
|
|
||||||
}
|
|
||||||
|
|
||||||
INSTANT_MANIFEST = "${INSTANT_TARGET_PATH}/manifests/${PN}"
|
|
||||||
|
|
||||||
do_copy_to_target_sysroot() {
|
|
||||||
# ---------- bail out on package-less recipes ----------
|
|
||||||
if [ ! -d "${WORKDIR}/packages-split" -o ! -d ${WORKDIR}/package ]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ---------- remove old sources ----------
|
|
||||||
rm -rf ${INSTANT_TARGET_PATH}/usr/src/debug/${PN}
|
|
||||||
|
|
||||||
# ---------- remove old files in manifest and manifest ----------
|
|
||||||
if [ -f ${INSTANT_MANIFEST} ] ; then
|
|
||||||
echo "Old manifest ${INSTANT_MANIFEST} found - remove files..."
|
|
||||||
# remove old files from sysroot
|
|
||||||
for file in `cat ${INSTANT_MANIFEST}` ; do
|
|
||||||
if ! rm "${INSTANT_TARGET_PATH}/$file" 2> /dev/null; then
|
|
||||||
echo "Tried to delete '${INSTANT_TARGET_PATH}/$file' but it is not there! A look into mainfest creation at '${INSTANT_MANIFEST}' might help."
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
# remove old manifest
|
|
||||||
rm ${INSTANT_MANIFEST}
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ---------- hard link source code files ----------
|
|
||||||
if [ -d ${WORKDIR}/package/usr/src/debug/${PN} ] ; then
|
|
||||||
mkdir -p ${INSTANT_TARGET_PATH}/usr/src/debug/${PN}
|
|
||||||
hardlinkdir ${WORKDIR}/package/usr/src/debug/${PN} ${INSTANT_TARGET_PATH}/usr/src/debug/${PN}
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ---------- names of binaries and debuginfo -> manifest ----------
|
|
||||||
mkdir -p ${INSTANT_TARGET_PATH}/manifests
|
|
||||||
# get path to library-link once only
|
|
||||||
if [ "${PN}" = "glibc-locale" ] ; then
|
|
||||||
PACK_SPLIT_LIB_LINK_SEARCH_PATH=`find ${WORKDIR}/packages-split -mindepth 1 -maxdepth 1 -type d ! -name '*-dbg' ! -name '*-dev' ! -name '*-staticdev' ! -name '*-doc' ! -name 'glibc*-localedata-*' ! -name 'glibc-charmap-*' ! -name 'locale-base-*'`
|
|
||||||
# other specials go here
|
|
||||||
# elif...
|
|
||||||
else
|
|
||||||
PACK_SPLIT_LIB_LINK_SEARCH_PATH=`find ${WORKDIR}/packages-split -mindepth 1 -maxdepth 1 -type d ! -name '*-dbg' ! -name '*-dev' ! -name '*-staticdev' ! -name '*-doc' ! -name '${PN}*-locale-*'`
|
|
||||||
fi
|
|
||||||
echo "Search so-links in:"
|
|
||||||
echo "$PACK_SPLIT_LIB_LINK_SEARCH_PATH"
|
|
||||||
echo
|
|
||||||
# add new
|
|
||||||
for pkgdbg in `find ${WORKDIR}/packages-split -mindepth 1 -maxdepth 1 -type d -name '*-dbg'` ; do
|
|
||||||
debug_binaries=
|
|
||||||
# Note: hardcoding is used in package.bbclass either (search for PACKAGE_DEBUG_SPLIT_STYLE)
|
|
||||||
if [ "${PACKAGE_DEBUG_SPLIT_STYLE}" = "debug-file-directory" ] ; then
|
|
||||||
if [ -d $pkgdbg/usr/lib/debug ] ; then
|
|
||||||
debug_binaries=`find $pkgdbg/usr/lib/debug -name '*.debug'`
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
debug_binaries=`find $pkgdbg -wholename '*.debug/*'`
|
|
||||||
fi
|
|
||||||
for file in $debug_binaries; do
|
|
||||||
# do 'root' path
|
|
||||||
file=`echo $file | sed -e 's:'$pkgdbg'::'`
|
|
||||||
|
|
||||||
# stripped binary (non debug)
|
|
||||||
if [ "${PACKAGE_DEBUG_SPLIT_STYLE}" = "debug-file-directory" ] ; then
|
|
||||||
filestripped=`echo $file | sed -e 's:/usr/lib/debug::' -e 's:\.debug::'`
|
|
||||||
else
|
|
||||||
filestripped=`echo $file | sed -e 's:\.debug/::'`
|
|
||||||
fi
|
|
||||||
# keep files in manifest
|
|
||||||
echo $file >> ${INSTANT_MANIFEST}
|
|
||||||
echo $filestripped >> ${INSTANT_MANIFEST}
|
|
||||||
# check for so-file links
|
|
||||||
if echo $filestripped | grep -q '\.so'; then
|
|
||||||
soname=`basename $filestripped`
|
|
||||||
for packsplit in $PACK_SPLIT_LIB_LINK_SEARCH_PATH; do
|
|
||||||
for link in `find $packsplit -lname $soname` ; do
|
|
||||||
# do 'root' path
|
|
||||||
link=`echo $link | sed -e 's:'$packsplit'::'`
|
|
||||||
echo $link >> ${INSTANT_MANIFEST}
|
|
||||||
done
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
done
|
|
||||||
|
|
||||||
# ---------- get -dev/-mkspecs packet contents -> manifest ----------
|
|
||||||
for package in "${PN}-dev" "${PN}-mkspecs" ; do
|
|
||||||
if [ -d ${WORKDIR}/packages-split/$package ]; then
|
|
||||||
echo "Add files from ${WORKDIR}/packages-split/$package to manifest..."
|
|
||||||
for file in `find ${WORKDIR}/packages-split/$package -type f` ; do
|
|
||||||
# do 'root' path
|
|
||||||
file=`echo $file | sed -e 's:${WORKDIR}/packages-split/'$package'::'`
|
|
||||||
echo $file >> ${INSTANT_MANIFEST}
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# ---------- manifest: do the hardlinks (optimization welcome..) ----------
|
|
||||||
if [ -f ${INSTANT_MANIFEST} ] ; then
|
|
||||||
echo "Create hardlinks from manifest ${INSTANT_MANIFEST}..."
|
|
||||||
cd ${WORKDIR}/package
|
|
||||||
for file in `cat ${INSTANT_MANIFEST}` ; do
|
|
||||||
file=`echo $file | cut -c 2-`
|
|
||||||
if [ -e $file ] ; then
|
|
||||||
echo -n $file | cpio --null -pdlu ${INSTANT_TARGET_PATH} > /dev/null 2>&1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
addtask copy_to_target_sysroot after do_package before do_build
|
|
||||||
|
|
||||||
# same as do package
|
|
||||||
do_copy_to_target_sysroot[vardeps] = "${PACKAGEBUILDPKGD} ${PACKAGESPLITFUNCS} ${PACKAGEFUNCS} ${@gen_packagevar(d)}"
|
|
||||||
|
|
||||||
do_copy_to_target_sysroot[stamp-extra-info] = "${MACHINE_ARCH}"
|
|
||||||
|
|
||||||
do_build[recrdeptask] += "do_copy_to_target_sysroot"
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
#------------------------------------------------------------------------------
|
|
||||||
# class for instant toolchain
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
inherit instant-paths
|
|
||||||
|
|
||||||
PACKAGE_ARCH = "${MACHINE_ARCH}"
|
|
||||||
|
|
||||||
do_compile[postfuncs] += "${COMPILE_POST_TARGET}"
|
|
||||||
COMPILE_POST_TARGET = ""
|
|
||||||
COMPILE_POST_TARGET_class-target = "instant_compile_target"
|
|
||||||
|
|
||||||
INSTANTPOPULATE_TOOLCHAIN_VARS = " \
|
|
||||||
CC \
|
|
||||||
CFLAGS \
|
|
||||||
"
|
|
||||||
|
|
||||||
python instant_compile_target () {
|
|
||||||
# create sourceable script that exports variables necessary
|
|
||||||
for envvar in d.getVar('INSTANTPOPULATE_TOOLCHAIN_VARS').split():
|
|
||||||
content = d.getVar(envvar).strip()
|
|
||||||
line = 'export %s="%s"' % (envvar, content)
|
|
||||||
line = line.replace(d.getVar('DEBUG_PREFIX_MAP'),'-fdebug-prefix-map=%s= -fdebug-prefix-map=%s=' % (d.getVar('INSTANT_TARGET_PATH'), d.getVar('INSTANT_NATIVE_PATH') ))
|
|
||||||
line = line.replace(d.getVar('STAGING_DIR_NATIVE'),d.getVar('INSTANT_NATIVE_PATH'))
|
|
||||||
line = line.replace(d.getVar('STAGING_DIR_HOST'),d.getVar('INSTANT_TARGET_PATH'))
|
|
||||||
print(line)
|
|
||||||
print(d.getVar('DEBUG_PREFIX_MAP'))
|
|
||||||
}
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
def armv7_tune_handler(d):
|
def armv7_tune_handler(d):
|
||||||
tune = d.getVar('DEFAULTTUNE')
|
tune = d.getVar('DEFAULTTUNE', True)
|
||||||
# set MORTSGNA_ARMV7_TUNE="1" in your local.conf to reduce all cortex variants
|
# set MORTSGNA_ARMV7_TUNE="1" in your local.conf to reduce all cortex variants
|
||||||
# to common tune value
|
# to common tune value
|
||||||
if d.getVar('MORTSGNA_ARMV7_TUNE') == '1':
|
if d.getVar('MORTSGNA_ARMV7_TUNE', True) == '1':
|
||||||
features = d.getVar('TUNE_FEATURES').split()
|
features = d.getVar('TUNE_FEATURES', True).split()
|
||||||
if 'armv7a' in features or 'armv7ve' in features:
|
if 'armv7a' in features or 'armv7ve' in features:
|
||||||
tune = 'armv7athf'
|
tune = 'armv7athf'
|
||||||
if 'bigendian' in features:
|
if 'bigendian' in features:
|
||||||
@@ -11,7 +11,7 @@ def armv7_tune_handler(d):
|
|||||||
if 'neon' in features:
|
if 'neon' in features:
|
||||||
tune += '-neon'
|
tune += '-neon'
|
||||||
else:
|
else:
|
||||||
tune = d.getVar('DEFAULTTUNE')
|
tune = d.getVar('DEFAULTTUNE', True)
|
||||||
|
|
||||||
return tune
|
return tune
|
||||||
|
|
||||||
|
|||||||
@@ -1,29 +1,5 @@
|
|||||||
# We want images supporting the following features (for packagegroup(-core)-base)
|
# We want images supporting the following features (for packagegroup(-core)-base)
|
||||||
|
DISTRO_FEATURES = "alsa argp bluetooth ext2 ipv4 ipv6 irda largefile nfs pam pci pcmcia ppp smbfs systemd usbgadget usbhost vfat wifi xattr zeroconf gobject-introspection-data"
|
||||||
DISTRO_FEATURES = " \
|
|
||||||
alsa \
|
|
||||||
argp \
|
|
||||||
bluetooth \
|
|
||||||
ext2 \
|
|
||||||
ipv4 \
|
|
||||||
ipv6 \
|
|
||||||
irda \
|
|
||||||
largefile \
|
|
||||||
nfs \
|
|
||||||
pam \
|
|
||||||
pci \
|
|
||||||
pcmcia \
|
|
||||||
ppp \
|
|
||||||
smbfs \
|
|
||||||
systemd \
|
|
||||||
usbgadget \
|
|
||||||
usbhost \
|
|
||||||
vfat \
|
|
||||||
wifi \
|
|
||||||
xattr \
|
|
||||||
zeroconf \
|
|
||||||
gobject-introspection-data \
|
|
||||||
"
|
|
||||||
|
|
||||||
# Disable sysvinit for recipes with systemd support
|
# Disable sysvinit for recipes with systemd support
|
||||||
DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit"
|
DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit"
|
||||||
@@ -37,7 +13,6 @@ DISTRO_FEATURES += "x11"
|
|||||||
DISTRO_FEATURES += "3g"
|
DISTRO_FEATURES += "3g"
|
||||||
DISTRO_FEATURES += "pulseaudio"
|
DISTRO_FEATURES += "pulseaudio"
|
||||||
DISTRO_FEATURES += "ldconfig"
|
DISTRO_FEATURES += "ldconfig"
|
||||||
DISTRO_FEATURES += "polkit"
|
|
||||||
|
|
||||||
# OpenGL support
|
# OpenGL support
|
||||||
DISTRO_FEATURES += "opengl"
|
DISTRO_FEATURES += "opengl"
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ INHERIT += "insane"
|
|||||||
INHERIT += "sstate"
|
INHERIT += "sstate"
|
||||||
|
|
||||||
# drop buildinfo to /etc/build
|
# drop buildinfo to /etc/build
|
||||||
INHERIT += "image-buildinfo-mortsgna"
|
INHERIT += "image-buildinfo"
|
||||||
|
|
||||||
# Prelink images
|
# Prelink images
|
||||||
INHERIT += "image-prelink"
|
INHERIT += "image-prelink"
|
||||||
|
|||||||
@@ -1,2 +1,17 @@
|
|||||||
# glibc:
|
# glibc:
|
||||||
PNBLACKLIST[libiconv] = "the glibc provided iconv library is used"
|
PNBLACKLIST[libiconv] = "the glibc provided iconv library is used"
|
||||||
|
|
||||||
|
TARGET_OS = "linux"
|
||||||
|
|
||||||
|
# sane-toolchain.inc has this, and explains the GNU and ABI suffices:
|
||||||
|
#TARGET_OS = "${@compute_os_portion_of_target_triplet(d)}"
|
||||||
|
|
||||||
|
TARGET_OS .= "${@['','-gnueabi'][d.getVar('TARGET_ARCH',d,1) in ['arm', 'armeb']]}"
|
||||||
|
TARGET_OS .= "${@['','-gnuspe'][d.getVar('TUNE_PKGARCH',d,1) in ['ppce500', 'ppce500v2']]}"
|
||||||
|
|
||||||
|
# perl has some problems, see http://bugs.openembedded.net/show_bug.cgi?id=1616
|
||||||
|
# [23:00] oxo: glibc (any version) on sparc does not like (repeat me) "-Os"
|
||||||
|
|
||||||
|
TARGET_LINK_HASH_STYLE = "${@['-Wl,--hash-style=gnu',''][d.getVar('TARGET_ARCH',d,1) in ['mips', 'mipsel', 'mips64', 'mips64el']]}"
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,10 @@
|
|||||||
|
|
||||||
# The things musl can provide. We default to wanting musl to provide them.
|
# The things musl can provide. We default to wanting musl to provide them.
|
||||||
# libc settings
|
# libc settings
|
||||||
DISTRO_FEATURES += "${@['', ' nls'][d.getVar('ENABLE_BINARY_LOCALE_GENERATION') == '1']}"
|
DISTRO_FEATURES += "${@['', ' nls'][d.getVar('ENABLE_BINARY_LOCALE_GENERATION', 1) == '1']}"
|
||||||
|
|
||||||
USE_NLS_glib-2.0 = "yes"
|
USE_NLS_glib-2.0 = "yes"
|
||||||
USE_NLS_glib-2.0-native = "yes"
|
USE_NLS_glib-2.0-native = "yes"
|
||||||
USE_NLS_gcc-cross = "no"
|
USE_NLS_gcc-cross = "no"
|
||||||
|
|
||||||
|
TARGET_LINK_HASH_STYLE = "${@['-Wl,--hash-style=gnu',''][d.getVar('TARGET_ARCH',1) in ['mips', 'mipsel', 'mips64', 'mips64el', 'avr32']]}"
|
||||||
|
|||||||
@@ -9,8 +9,7 @@
|
|||||||
# Global settings
|
# Global settings
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
# follow Yocto version scheme
|
DISTRO_VERSION = "v0.1"
|
||||||
DISTRO_VERSION = "v2.6"
|
|
||||||
|
|
||||||
# With Angstrom we had DISTRO_TYPE = "debug"/"release". No recipe except
|
# With Angstrom we had DISTRO_TYPE = "debug"/"release". No recipe except
|
||||||
# good old lxdm takes care (yes it was me). OE-Core way is setting
|
# good old lxdm takes care (yes it was me). OE-Core way is setting
|
||||||
@@ -131,12 +130,9 @@ require conf/distro/include/no-static-libs.inc
|
|||||||
# 1. They make sense
|
# 1. They make sense
|
||||||
# 2. Many poky users out there might complain about my other layers or patches
|
# 2. Many poky users out there might complain about my other layers or patches
|
||||||
# sent
|
# sent
|
||||||
WARN_TO_ERROR_QA = " \
|
WARN_TO_ERROR_QA = "already-stripped compile-host-path install-host-path \
|
||||||
already-stripped compile-host-path install-host-path \
|
installed-vs-shipped ldflags pn-overrides rpaths staticdev \
|
||||||
installed-vs-shipped ldflags pn-overrides rpaths staticdev \
|
unknown-configure-option useless-rpaths host-user-contaminated"
|
||||||
unknown-configure-option useless-rpaths host-user-contaminated \
|
|
||||||
invalid-packageconfig \
|
|
||||||
"
|
|
||||||
WARN_QA_remove = "${WARN_TO_ERROR_QA}"
|
WARN_QA_remove = "${WARN_TO_ERROR_QA}"
|
||||||
ERROR_QA_append = " ${WARN_TO_ERROR_QA}"
|
ERROR_QA_append = " ${WARN_TO_ERROR_QA}"
|
||||||
|
|
||||||
@@ -179,12 +175,7 @@ DISTRO_EXTRA_RRECOMMENDS += " \
|
|||||||
"
|
"
|
||||||
|
|
||||||
# In case one wants to use packagegroup-basic: Prefer openssh over dropbear
|
# In case one wants to use packagegroup-basic: Prefer openssh over dropbear
|
||||||
# Note: to avoid redundancies TASK_BASIC_SSHDAEMON is used in this layer
|
TASK_BASIC_SSHDAEMON = "openssh-ssh openssh-sshd openssh-scp openssh-sftp openssh-sftp-server"
|
||||||
TASK_BASIC_SSHDAEMON = " \
|
|
||||||
openssh-ssh openssh-sshd \
|
|
||||||
openssh-scp \
|
|
||||||
openssh-sftp openssh-sftp-server \
|
|
||||||
"
|
|
||||||
|
|
||||||
# Image features strongly suggested
|
# Image features strongly suggested
|
||||||
EXTRA_IMAGE_FEATURES += " \
|
EXTRA_IMAGE_FEATURES += " \
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ BBFILES_DYNAMIC += " \
|
|||||||
openembedded-layer:${LAYERDIR}/appends/meta-oe/*.bbappend \
|
openembedded-layer:${LAYERDIR}/appends/meta-oe/*.bbappend \
|
||||||
\
|
\
|
||||||
qt5-layer:${LAYERDIR}/appends/meta-qt5/*.bbappend \
|
qt5-layer:${LAYERDIR}/appends/meta-qt5/*.bbappend \
|
||||||
qt5-layer:${LAYERDIR}/qt5-sdk-recipes/*.bb \
|
|
||||||
\
|
\
|
||||||
xfce-layer:${LAYERDIR}/appends/meta-xfce/*.bbappend \
|
xfce-layer:${LAYERDIR}/appends/meta-xfce/*.bbappend \
|
||||||
\
|
\
|
||||||
|
|||||||
@@ -1,32 +0,0 @@
|
|||||||
SUMMARY = "Prepare environment for cross building/debugging with QtCreator"
|
|
||||||
LICENSE = "MIT"
|
|
||||||
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
|
|
||||||
|
|
||||||
inherit qmake5_base instant-toolchain-target
|
|
||||||
|
|
||||||
DEPENDS = "qtbase"
|
|
||||||
|
|
||||||
deltask do_prepare_recipe_sysroot
|
|
||||||
|
|
||||||
do_install[depends] = "qtbase:do_copy_to_target_sysroot"
|
|
||||||
do_install[nostamp] = "1"
|
|
||||||
|
|
||||||
do_install() {
|
|
||||||
# inject qt.conf into native sysroot
|
|
||||||
qtconf=`basename ${OE_QMAKE_QTCONF_PATH}`
|
|
||||||
sourcepath=${INSTANT_TARGET_PATH}${OE_QMAKE_PATH_HOST_BINS}
|
|
||||||
targetpath=${INSTANT_NATIVE_PATH}${OE_QMAKE_PATH_HOST_BINS}
|
|
||||||
# be sure we remove old link (if any...)
|
|
||||||
rm -f $targetpath/$qtconf
|
|
||||||
cp $sourcepath/$qtconf $targetpath/
|
|
||||||
}
|
|
||||||
|
|
||||||
ALLOW_EMPTY_${PN} = "1"
|
|
||||||
|
|
||||||
# An image installing this requires the following packages at least for working
|
|
||||||
# instant sdk support
|
|
||||||
RDEPENDS_${PN} = " \
|
|
||||||
qtbase \
|
|
||||||
gdbserver \
|
|
||||||
${TASK_BASIC_SSHDAEMON} \
|
|
||||||
"
|
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<channel name="pointers" version="1.0">
|
||||||
|
<property name="ADS7846_Touchscreen" type="empty">
|
||||||
|
<property name="TouchscreenPointer" type="bool" value="true"/>
|
||||||
|
</property>
|
||||||
|
<property name="eGalax_Inc_USB_TouchController" type="empty">
|
||||||
|
<property name="TouchscreenPointer" type="bool" value="true"/>
|
||||||
|
</property>
|
||||||
|
</channel>
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<channel name="ristretto" version="1.0">
|
||||||
|
<property name="window" type="empty">
|
||||||
|
<property name="navigationbar" type="empty">
|
||||||
|
<property name="position" type="string" value="left"/>
|
||||||
|
</property>
|
||||||
|
</property>
|
||||||
|
<property name="desktop" type="empty">
|
||||||
|
<property name="type" type="string" value="xfce"/>
|
||||||
|
</property>
|
||||||
|
</channel>
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<channel name="thunar-volman" version="1.0">
|
||||||
|
<property name="automount-drives" type="empty">
|
||||||
|
<property name="enabled" type="bool" value="true"/>
|
||||||
|
</property>
|
||||||
|
<property name="automount-media" type="empty">
|
||||||
|
<property name="enabled" type="bool" value="true"/>
|
||||||
|
</property>
|
||||||
|
</channel>
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<channel name="xfce4-appfinder" version="1.0">
|
||||||
|
<property name="last" type="empty">
|
||||||
|
<property name="window-height" type="int" value="343"/>
|
||||||
|
<property name="window-width" type="int" value="750"/>
|
||||||
|
<property name="pane-position" type="int" value="180"/>
|
||||||
|
</property>
|
||||||
|
</channel>
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<channel name="xfce4-mixer" version="1.0">
|
||||||
|
<property name="sound-card" type="string" value="overoAlsamixer"/>
|
||||||
|
<property name="sound-cards" type="empty">
|
||||||
|
<property name="overoAlsamixer" type="array">
|
||||||
|
<value type="string" value="DAC1 Analog"/>
|
||||||
|
<value type="string" value="Headset"/>
|
||||||
|
<value type="string" value="HeadsetL Mixer AudioL1"/>
|
||||||
|
<value type="string" value="HeadsetR Mixer AudioR1"/>
|
||||||
|
</property>
|
||||||
|
</property>
|
||||||
|
<property name="window-height" type="int" value="400"/>
|
||||||
|
<property name="window-width" type="int" value="659"/>
|
||||||
|
</channel>
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
<value type="int" value="11"/>
|
<value type="int" value="11"/>
|
||||||
<value type="int" value="12"/>
|
<value type="int" value="12"/>
|
||||||
<value type="int" value="1"/>
|
<value type="int" value="1"/>
|
||||||
|
<value type="int" value="7"/>
|
||||||
</property>
|
</property>
|
||||||
<property name="mode" type="uint" value="2"/>
|
<property name="mode" type="uint" value="2"/>
|
||||||
<property name="background-alpha" type="uint" value="17"/>
|
<property name="background-alpha" type="uint" value="17"/>
|
||||||
@@ -83,6 +84,9 @@
|
|||||||
</property>
|
</property>
|
||||||
<property name="plugin-3" type="string" value="whiskermenu"/>
|
<property name="plugin-3" type="string" value="whiskermenu"/>
|
||||||
<property name="plugin-1" type="string" value="cpugraph"/>
|
<property name="plugin-1" type="string" value="cpugraph"/>
|
||||||
|
<property name="plugin-7" type="string" value="xkb">
|
||||||
|
<property name="group-policy" type="uint" value="0"/>
|
||||||
|
</property>
|
||||||
<property name="plugin-11" type="string" value="cpufreq"/>
|
<property name="plugin-11" type="string" value="cpufreq"/>
|
||||||
<property name="plugin-12" type="string" value="systemload"/>
|
<property name="plugin-12" type="string" value="systemload"/>
|
||||||
</property>
|
</property>
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<channel name="xfce4-settings-editor" version="1.0">
|
||||||
|
<property name="last" type="empty">
|
||||||
|
<property name="window-width" type="int" value="640"/>
|
||||||
|
<property name="window-height" type="int" value="500"/>
|
||||||
|
<property name="paned-position" type="int" value="180"/>
|
||||||
|
</property>
|
||||||
|
</channel>
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
<channel name="xsettings" version="1.0">
|
<channel name="xsettings" version="1.0">
|
||||||
<property name="Net" type="empty">
|
<property name="Net" type="empty">
|
||||||
<property name="ThemeName" type="string" value="Adwaita-dark"/>
|
<property name="ThemeName" type="string" value="Adwaita-dark"/>
|
||||||
<property name="IconThemeName" type="string" value="Adwaita"/>
|
<property name="IconThemeName" type="empty"/>
|
||||||
<property name="DoubleClickTime" type="empty"/>
|
<property name="DoubleClickTime" type="empty"/>
|
||||||
<property name="DoubleClickDistance" type="empty"/>
|
<property name="DoubleClickDistance" type="empty"/>
|
||||||
<property name="DndDragThreshold" type="empty"/>
|
<property name="DndDragThreshold" type="empty"/>
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
<property name="MenuImages" type="empty"/>
|
<property name="MenuImages" type="empty"/>
|
||||||
<property name="ButtonImages" type="empty"/>
|
<property name="ButtonImages" type="empty"/>
|
||||||
<property name="MenuBarAccel" type="empty"/>
|
<property name="MenuBarAccel" type="empty"/>
|
||||||
<property name="CursorThemeName" type="string" value="Adwaita"/>
|
<property name="CursorThemeName" type="string" value="default"/>
|
||||||
<property name="CursorThemeSize" type="empty"/>
|
<property name="CursorThemeSize" type="empty"/>
|
||||||
<property name="DecorationLayout" type="empty"/>
|
<property name="DecorationLayout" type="empty"/>
|
||||||
<property name="TouchscreenMode" type="bool" value="false"/>
|
<property name="TouchscreenMode" type="bool" value="false"/>
|
||||||
|
|||||||
@@ -16,13 +16,10 @@ IMAGE_INSTALL += " \
|
|||||||
packagegroup-xfce-base \
|
packagegroup-xfce-base \
|
||||||
network-manager-applet \
|
network-manager-applet \
|
||||||
xfce4-default-config \
|
xfce4-default-config \
|
||||||
vte \
|
|
||||||
\
|
\
|
||||||
packagegroup-lxqt-base \
|
packagegroup-lxqt-base \
|
||||||
lxqt-default-config \
|
lxqt-default-config \
|
||||||
\
|
\
|
||||||
liri-world \
|
|
||||||
\
|
|
||||||
lumina \
|
lumina \
|
||||||
\
|
\
|
||||||
weston weston-xwayland \
|
weston weston-xwayland \
|
||||||
|
|||||||
@@ -7,13 +7,11 @@ IMAGE_INSTALL += " \
|
|||||||
${ROOTFS_PKGMANAGE} \
|
${ROOTFS_PKGMANAGE} \
|
||||||
update-alternatives-opkg \
|
update-alternatives-opkg \
|
||||||
coreutils \
|
coreutils \
|
||||||
bash \
|
|
||||||
bash-completion \
|
|
||||||
systemd-bash-completion \
|
|
||||||
systemd-analyze \
|
systemd-analyze \
|
||||||
cpufrequtils \
|
cpufrequtils \
|
||||||
htop \
|
htop \
|
||||||
fixmac \
|
fixmac \
|
||||||
|
glibc-utils \
|
||||||
util-linux-lsblk \
|
util-linux-lsblk \
|
||||||
nano \
|
nano \
|
||||||
"
|
"
|
||||||
|
|||||||
@@ -1,15 +1,13 @@
|
|||||||
require console-base-image.bb
|
require console-base-image.bb
|
||||||
|
|
||||||
NETWORKPACKS ?= " \
|
|
||||||
${TASK_BASIC_SSHDAEMON} \
|
|
||||||
avahi-autoipd \
|
|
||||||
iputils \
|
|
||||||
networkmanager \
|
|
||||||
networkmanager-bash-completion \
|
|
||||||
"
|
|
||||||
|
|
||||||
IMAGE_INSTALL += " \
|
IMAGE_INSTALL += " \
|
||||||
${NETWORKPACKS} \
|
avahi-autoipd \
|
||||||
|
networkmanager \
|
||||||
|
openssh-sftp-server \
|
||||||
|
openssh-sshd \
|
||||||
|
openssh-ssh \
|
||||||
|
openssh-scp \
|
||||||
|
iputils \
|
||||||
"
|
"
|
||||||
|
|
||||||
export IMAGE_BASENAME = "console-net-image"
|
export IMAGE_BASENAME = "console-net-image"
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
require recipes-image/console/console-net-image.bb
|
|
||||||
require recipes-image/include/x11-base.inc
|
|
||||||
|
|
||||||
export IMAGE_BASENAME = "liri-base-image"
|
|
||||||
|
|
||||||
IMAGE_INSTALL += " \
|
|
||||||
${X11_BASE_INSTALL} \
|
|
||||||
sddm \
|
|
||||||
\
|
|
||||||
liri-world \
|
|
||||||
"
|
|
||||||
|
|
||||||
# reenable graphical target
|
|
||||||
IMAGE_FEATURES += "x11-base"
|
|
||||||
@@ -6,7 +6,6 @@ inherit packagegroup
|
|||||||
|
|
||||||
RDEPENDS_${PN} = " \
|
RDEPENDS_${PN} = " \
|
||||||
qt5-creator \
|
qt5-creator \
|
||||||
qtquickcontrols2-examples qtwayland-examples \
|
|
||||||
hexedit \
|
hexedit \
|
||||||
glade3 \
|
glade3 \
|
||||||
umbrello \
|
umbrello \
|
||||||
@@ -14,8 +13,6 @@ RDEPENDS_${PN} = " \
|
|||||||
geany-plugins \
|
geany-plugins \
|
||||||
gtk-demo gtk+3-demo \
|
gtk-demo gtk+3-demo \
|
||||||
\
|
\
|
||||||
weston weston-xwayland \
|
|
||||||
\
|
|
||||||
unzip xz tar bzip2 \
|
unzip xz tar bzip2 \
|
||||||
make cmake \
|
make cmake \
|
||||||
automake autoconf libtool m4 \
|
automake autoconf libtool m4 \
|
||||||
@@ -24,24 +21,44 @@ RDEPENDS_${PN} = " \
|
|||||||
pkgconfig binutils-symlinks elfutils gnu-config \
|
pkgconfig binutils-symlinks elfutils gnu-config \
|
||||||
gdb gdbserver \
|
gdb gdbserver \
|
||||||
git git-bash-completion subversion \
|
git git-bash-completion subversion \
|
||||||
python python-shell python-subprocess \
|
python-shell python-subprocess \
|
||||||
python3 \
|
python perl php vala lua php json-glib \
|
||||||
perl php vala lua php json-glib \
|
|
||||||
texinfo gettext \
|
texinfo gettext \
|
||||||
patch quilt ncurses dialog \
|
patch quilt ncurses dialog \
|
||||||
man man-pages \
|
man man-pages \
|
||||||
gawk \
|
gawk \
|
||||||
chrpath \
|
chrpath \
|
||||||
\
|
\
|
||||||
|
qtbase-tools \
|
||||||
|
qtbase-plugins \
|
||||||
|
qtbase-examples \
|
||||||
|
qtbase-doc \
|
||||||
|
qtdeclarative-tools \
|
||||||
|
qtdeclarative-qmlplugins \
|
||||||
|
qtscript \
|
||||||
|
qtgraphicaleffects-qmlplugins \
|
||||||
|
qtquickcontrols-qmlplugins \
|
||||||
|
qtsvg-plugins \
|
||||||
|
\
|
||||||
|
qtbase-dbg \
|
||||||
|
qt3d-dbg \
|
||||||
|
qtconnectivity-dbg \
|
||||||
|
qtdeclarative-dbg \
|
||||||
|
qtenginio-dbg \
|
||||||
|
qtimageformats-dbg \
|
||||||
|
qtlocation-dbg \
|
||||||
|
qtmultimedia-dbg \
|
||||||
|
qtsensors-dbg \
|
||||||
|
qtsvg-dbg \
|
||||||
|
qtsystems-dbg \
|
||||||
|
qttools-dbg \
|
||||||
|
qtwebsockets-dbg \
|
||||||
|
qtwebchannel-dbg \
|
||||||
|
qtquickcontrols-dbg \
|
||||||
|
\
|
||||||
wireshark \
|
wireshark \
|
||||||
nfs-utils-client \
|
nfs-utils-client \
|
||||||
lmsensors-sensord lmsensors-sensorsdetect \
|
lmsensors-sensord lmsensors-sensorsdetect \
|
||||||
\
|
|
||||||
${@bb.utils.contains('BBFILE_COLLECTIONS', 'browser-layer', 'chromium-x11', '', d)} \
|
|
||||||
"
|
|
||||||
|
|
||||||
RDEPENDS_${PN}_append_libc-glibc = " \
|
|
||||||
glibc-utils \
|
|
||||||
"
|
"
|
||||||
|
|
||||||
# qemu
|
# qemu
|
||||||
|
|||||||
@@ -28,9 +28,10 @@ RDEPENDS_${PN} = " \
|
|||||||
${@bb.utils.contains('BBFILE_COLLECTIONS', 'browser-layer', 'chromium-x11', '', d)} \
|
${@bb.utils.contains('BBFILE_COLLECTIONS', 'browser-layer', 'chromium-x11', '', d)} \
|
||||||
\
|
\
|
||||||
gparted \
|
gparted \
|
||||||
|
gnome-system-monitor \
|
||||||
\
|
\
|
||||||
mpd \
|
mpd \
|
||||||
parole gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-omx gstreamer1.0-libav \
|
parole \
|
||||||
dragon \
|
dragon \
|
||||||
gstreamer1.0-plugins-base-meta gstreamer1.0-plugins-good-meta \
|
gstreamer1.0-plugins-base-meta gstreamer1.0-plugins-good-meta \
|
||||||
pulseaudio-misc \
|
pulseaudio-misc \
|
||||||
@@ -43,7 +44,10 @@ RDEPENDS_${PN} = " \
|
|||||||
\
|
\
|
||||||
kde-apps-world \
|
kde-apps-world \
|
||||||
\
|
\
|
||||||
gottcode-world \
|
gottet \
|
||||||
|
hexalate \
|
||||||
|
peg-e \
|
||||||
|
simsu \
|
||||||
\
|
\
|
||||||
qwt-qt5-examples \
|
qwt-qt5-examples \
|
||||||
gnuplot gnuplot-x11 \
|
gnuplot gnuplot-x11 \
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ RDEPENDS_${PN} = " \
|
|||||||
bind \
|
bind \
|
||||||
devilspie2 \
|
devilspie2 \
|
||||||
\
|
\
|
||||||
gnome-system-monitor \
|
bash-completion \
|
||||||
dconf-editor \
|
dconf-editor \
|
||||||
\
|
\
|
||||||
glmark2 mesa-demos eglinfo-x11 \
|
glmark2 mesa-demos eglinfo-x11 \
|
||||||
|
|||||||
@@ -9,9 +9,8 @@ IMAGE_INSTALL += " \
|
|||||||
${X11_BASE_INSTALL} \
|
${X11_BASE_INSTALL} \
|
||||||
${XFCE_DM} \
|
${XFCE_DM} \
|
||||||
\
|
\
|
||||||
packagegroup-gui-base \
|
|
||||||
packagegroup-xfce-base \
|
packagegroup-xfce-base \
|
||||||
vte \
|
packagegroup-gui-base \
|
||||||
\
|
\
|
||||||
network-manager-applet \
|
network-manager-applet \
|
||||||
xfce4-default-config \
|
xfce4-default-config \
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
require recipes-image/xfce4/xfce4-tiny-image.bb
|
require recipes-image/xfce4/xfce4-full-image.bb
|
||||||
|
|
||||||
XFCE_DM = "sddm sddm-morona-autologin"
|
|
||||||
|
|
||||||
export IMAGE_BASENAME = "xfce4-dev-image"
|
export IMAGE_BASENAME = "xfce4-dev-image"
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
require xfce4-tiny-image.bb
|
require xfce4-tiny-image.bb
|
||||||
|
|
||||||
XFCE_DM = "sddm sddm-morona-autologin"
|
|
||||||
|
|
||||||
export IMAGE_BASENAME = "xfce4-full-image"
|
export IMAGE_BASENAME = "xfce4-full-image"
|
||||||
|
|
||||||
IMAGE_INSTALL += " \
|
IMAGE_INSTALL += " \
|
||||||
|
|||||||
@@ -23,9 +23,9 @@ GetBitbakeEnvVar "TOPDIR"
|
|||||||
_TOPDIR="$BitbakeEnvVar"
|
_TOPDIR="$BitbakeEnvVar"
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo -e "${style_bold}Run bitbake -k --runall=fetch $@...${style_normal}"
|
echo -e "${style_bold}Run bitbake -k --runall=fetch ${1}...${style_normal}"
|
||||||
|
|
||||||
bitbake -k --runall=fetch "$@" 2>&1 | while read line; do
|
bitbake -k --runall=fetch $1 2>&1 | while read line; do
|
||||||
if echo "$line" | grep -q "was expected"; then
|
if echo "$line" | grep -q "was expected"; then
|
||||||
# Shorten line to ensure not being confused by filenames containing spaces
|
# Shorten line to ensure not being confused by filenames containing spaces
|
||||||
line=`echo "$line" | sed 's:.*checksum ::'`
|
line=`echo "$line" | sed 's:.*checksum ::'`
|
||||||
|
|||||||
Reference in New Issue
Block a user