wiki:Docs/825gen2/Dev/DevVMTechnical

Version 15 (modified by Don Wilson, 5 weeks ago) ( diff )

--

Development VM Technical Information

Fedora Packages

The development VM has a number of pre-installed packages. Due to new features that are added to the library it may be necessary to install some additional packages.

The json-c library is now used for graphical CUPS ticket formatting. From a terminal window type:

sudo dnf install json-c-devel

The libesmtp library will be used to allow sending tickets as emails.

sudo dnf install libesmtp-devel

Environment Variables

The development VM uses a number of environment variables. To review or edit these from a terminal window type kate /etc/profile.d/arm825env.sh

#Setup environment variables for ARM825 development

AARCH64=/opt/armv8a
export AARCH64

AARCH64MX8M=/opt/armv8a-mx8m
export AARCH64MX8M

export DSPWIDTH=1280
export DSPHEIGHT=800

export UI_LIBS="wayland-client -lwayland-cursor -lxkbcommon -lffi -ljpeg -lpng -lpixman-1 -lfreetype -lz"
export CURL_LIBS="curl -lcrypto -lssl -lidn2 -lunistring"
export GLIB_LIBS="glib-2.0 -lgio-2.0 -lgmodule-2.0 -lgobject-2.0 -lpcre -lmount -lblkid"
export NM_LIBS="nm -lsmime3 -lnss3 -lnssutil3 -lnspr4 -lplds4 -lplc4 -ludev"
export CAIRO_LIBS="pango-1.0 -lpangocairo-1.0 -lharfbuzz -lfribidi -lcairo -lfontconfig -lGLESv2 -lEGL -lexpat -luuid -lGAL -lVSC -lwayland-server -ldrm -lgbm -lgbm_viv"
export CAIRO_SIM_LIBS="pango-1.0 -lpangocairo-1.0 -lharfbuzz -lfribidi -lcairo -lfontconfig -lGLESv2 -lEGL -lxcb-shm -lxcb -lxcb-render -lX11 -lXext -lXrender -lXau -lXdmcp -lexpat -luuid -lwayland-server -ldrm -lgbm"
export CUPS_LIBS="cups -lavahi-common -lavahi-client -ldbus-1 -lsystemd -lzstd -lcap"
export PRT_LIBS="cups -lavahi-common -lavahi-client -ldbus-1 -lsystemd -lzstd -lcap -ljson-c -lesmtp -lssl -lcrypto"

# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/opt/arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu/bin/:/opt/freescale/usr/local/gcc-4.4.53-uclibc-0.9.53/m68k-uclinux/bin/

The PRT_LIBS environment variable is a new variable that contains the CUPS_LIBS contents, json-c, esmtp, ssl, and crypto to facilitate the new ticket printing features for graphical tickets and emails.

After making changes to this it may be necessary to restart the VM.

Project helper setup_arm64lib

The folders /opt/arm64include and /opt/arm64lib contain symbolic links to various header and library files so that apps can refer to these folders to reduce the complexity of app properties.

The file /home/user/bin/setup_arm64lib is a script used to update these folders:

#!/bin/sh
DEST="/opt/arm64lib"
rm -f $DEST/*
ln -s $AARCH64/wayland/usr/lib/libwayland* $DEST
ln -s $AARCH64/mariadb/usr/lib/libmaria* $DEST
ln -s $AARCH64/mariadb/usr/lib/libmysql* $DEST
ln -s $AARCH64/libxkbcommon/usr/lib/libxkb* $DEST
ln -s $AARCH64/libffi/usr/lib/libffi* $DEST
ln -s $AARCH64/libxcb/usr/lib/libxcb* $DEST
ln -s $AARCH64/libjpeg-turbo/usr/lib/libjpeg* $DEST
#ln -s $AARCH64/libjpeg-turbo/usr/lib/turbojpeg* $DEST
ln -s $AARCH64/libpng/usr/lib/libpng* $DEST
ln -s $AARCH64/pixman/usr/lib/libpixman* $DEST
ln -s $AARCH64/zlib/usr/lib/libz* $DEST
ln -s $AARCH64/freetype/usr/lib/libfreetype* $DEST
ln -s $AARCH64/openssl/usr/lib/libcrypto* $DEST
ln -s $AARCH64/openssl/usr/lib/libssl* $DEST
ln -s $AARCH64/curl/usr/lib/libcurl* $DEST
ln -s $AARCH64/libidn2/usr/lib/libidn2* $DEST
ln -s $AARCH64/libunistring/usr/lib/libunistring* $DEST
ln -s $AARCH64/glib-2.0/usr/lib/libglib-2.0* $DEST
ln -s $AARCH64/glib-2.0/usr/lib/libgio-2.0* $DEST
ln -s $AARCH64/glib-2.0/usr/lib/libgmodule-2.0* $DEST
ln -s $AARCH64/glib-2.0/usr/lib/libgobject-2.0* $DEST
ln -s $AARCH64/glib-2.0/usr/lib/libgthread-2.0* $DEST

ln -s $AARCH64/sqlite3/usr/lib/libsqlite3* $DEST

ln -s $AARCH64/libpcre/usr/lib/libpcre* $DEST
ln -s $AARCH64/util-linux/usr/lib/libmount* $DEST
ln -s $AARCH64/util-linux/usr/lib/libfdisk* $DEST
ln -s $AARCH64/util-linux/usr/lib/libblkid* $DEST

ln -s $AARCH64/nss/usr/lib/libfreebl* $DEST
ln -s $AARCH64/nss/usr/lib/libnss* $DEST
ln -s $AARCH64/nss/usr/lib/libsmime* $DEST
ln -s $AARCH64/nss/usr/lib/libsoftokn* $DEST
ln -s $AARCH64/nss/usr/lib/libssl3* $DEST

ln -s $AARCH64/nspr/usr/lib/libnspr* $DEST
ln -s $AARCH64/nspr/usr/lib/libplc* $DEST
ln -s $AARCH64/nspr/usr/lib/libplds* $DEST

ln -s $AARCH64/systemd/lib/libsystemd* $DEST
ln -s $AARCH64/systemd/lib/libudev* $DEST
ln -s $AARCH64/systemd/lib/libnss* $DEST

ln -s $AARCH64/libarchive/usr/lib/libarchive* $DEST
ln -s $AARCH64/acl/usr/lib/libacl* $DEST
ln -s $AARCH64/lzo/usr/lib/liblzo* $DEST
ln -s $AARCH64/xz/usr/lib/liblzma* $DEST
ln -s $AARCH64/zstd/usr/lib/libzstd* $DEST
ln -s $AARCH64/attr/usr/lib/libattr* $DEST
ln -s $AARCH64/bzip2/usr/lib/libbz2* $DEST

ln -s $AARCH64/fontconfig/usr/lib/libfontconfig* $DEST
ln -s $AARCH64/cups/usr/lib/libcups* $DEST
ln -s $AARCH64/libxrender/usr/lib/libXrender* $DEST
ln -s $AARCH64/expat/usr/lib/libexpat* $DEST
ln -s $AARCH64/libxext/usr/lib/libXext* $DEST
ln -s $AARCH64/libx11/usr/lib/libX11* $DEST
ln -s $AARCH64/libxau/usr/lib/libXau* $DEST
ln -s $AARCH64/libxdmcp/usr/lib/libXdmcp* $DEST
ln -s $AARCH64/libcap/lib/libcap* $DEST
ln -s $AARCH64/dbus/usr/lib/libdbus* $DEST
ln -s $AARCH64/util-linux-libuuid/usr/lib/libuuid* $DEST
ln -s $AARCH64/avahi/usr/lib/libavahi* $DEST
ln -s $AARCH64/readline/usr/lib/libreadline* $DEST
ln -s $AARCH64/ncurses/usr/lib/libtinfo* $DEST
ln -s $AARCH64/ncurses/usr/lib/libncurses* $DEST
ln -s $AARCH64/ncurses/lib/libncurses* $DEST
ln -s $AARCH64/libevent/usr/lib/libevent* $DEST
ln -s $AARCH64/fribidi/usr/lib/libfribidi* $DEST

ln -s $AARCH64/json-c/usr/lib/libjson-c* $DEST
ln -s $AARCH64/libesmtp/usr/lib/libesmtp* $DEST

ln -s $AARCH64MX8M/gstreamer1.0/usr/lib/libgst* $DEST
ln -s $AARCH64MX8M/cairo/usr/lib/libcairo* $DEST
ln -s $AARCH64MX8M/libdrm/usr/lib/libdrm* $DEST
ln -s $AARCH64MX8M/imx-gpu-viv/usr/lib/libEGL* $DEST
ln -s $AARCH64MX8M/imx-gpu-viv/usr/lib/libGLESv2* $DEST
ln -s $AARCH64MX8M/imx-gpu-viv/usr/lib/libGAL* $DEST
ln -s $AARCH64MX8M/imx-gpu-viv/usr/lib/libgbm* $DEST
ln -s $AARCH64MX8M/imx-gpu-viv/usr/lib/libVSC* $DEST
ln -s $AARCH64MX8M/pango/usr/lib/libpango* $DEST
ln -s $AARCH64MX8M/harfbuzz/usr/lib/libharfbuzz* $DEST

ln -s /opt/networkmanager/usr/lib/libnm* $DEST


DESTINC="/opt/arm64include"
rm -f $DESTINC/*

ln -s ${AARCH64}/wayland/usr/include/* $DESTINC
ln -s ${AARCH64}/mariadb/usr/include/mysql/* $DESTINC
ln -s ${AARCH64}/sqlite3/usr/include/* $DESTINC
ln -s ${AARCH64}/curl/usr/include/* $DESTINC
ln -s ${AARCH64}/glib-2.0/usr/lib/glib-2.0/include/* $DESTINC
ln -s ${AARCH64}/util-linux/usr/include/libmount/* $DESTINC
ln -s ${AARCH64}/pixman/usr/include/pixman-1/* $DESTINC
ln -s ${AARCH64}/glib-2.0/usr/include/glib-2.0/* $DESTINC
#"${AARCH64}/glib-2.0/usr/lib/glib-2.0/include/"
# TODO Investigate this further - this seems to cause redundancy but is necessary for now
ln -s ${AARCH64}/freetype/usr/include/* $DESTINC
ln -s ${AARCH64}/freetype/usr/include/freetype2/* $DESTINC
ln -s ${AARCH64}/libpng/usr/include/* $DESTINC
ln -s ${AARCH64}/libjpeg-turbo/usr/include/* $DESTINC
ln -s ${AARCH64}/libxkbcommon/usr/include/* $DESTINC
ln -s ${AARCH64}/dbus/usr/include/dbus-1.0/* $DESTINC
#ln -s ${AARCH64}/dbus/usr/lib/dbus-1.0/include/dbus/dbus-arch-deps.h $DESTINC/dbus
#ln -s ${AARCH64}/dbus/usr/lib/dbus-1.0/* $DESTINC
ln -s ${AARCH64}/bluez5/usr/include/* $DESTINC
ln -s ${AARCH64}/ell/usr/include/* $DESTINC
ln -s ${AARCH64}/readline/usr/include/* $DESTINC

ln -s ${AARCH64}/openssl/usr/include/* $DESTINC

ln -s ${AARCH64}/cups/usr/include/* $DESTINC
ln -s ${AARCH64}/ncurses/usr/include/* $DESTINC
ln -s ${AARCH64}/libevent/usr/include/* $DESTINC
ln -s ${AARCH64}/fontconfig/usr/include/* $DESTINC

ln -s ${AARCH64}/json-c/usr/include/* $DESTINC
ln -s ${AARCH64}/libesmtp/usr/include/* $DESTINC

ln -s ${AARCH64MX8M}/pango/usr/include/pango-1.0/* $DESTINC
ln -s ${AARCH64MX8M}/harfbuzz/usr/include/harfbuzz/* $DESTINC
ln -s ${AARCH64MX8M}/imx-gpu-viv/usr/include/* $DESTINC


ln -s ${AARCH64MX8M}/gstreamer1.0/usr/include/gstreamer-1.0/* $DESTINC
ln -s ${AARCH64MX8M}/cairo/usr/include/cairo/* $DESTINC
ln -s ${AARCH64MX8M}/alsa-lib/usr/include/* $DESTINC

ln -s /opt/networkmanager/usr/include/libnm/* $DESTINC

Any time changes are made to this from a terminal type:

setup_arm64lib

This will recreate the symbolic links in /opt/arm64include and /opt/arm64lib

Note: See TracWiki for help on using the wiki.