Skip to content

Commit c5ebf4a

Browse files
committed
Update Linux SDK:
* Build and bundle libxcb and xcb-util libs * Every distro has these libraries, but some (Ubuntu!) don't ship them as default. I would prefer to not distribute system libraries, but I also don't want issue reports regarding failure to launch due to missing whatever * Qt prior to 5.15 included the xcb-util libraries * AppImage/appimage.github.io#3339 * Update appimagetool (bfe6e0c) * Update AppImage runtime (1bb1157)
1 parent 1b2af3b commit c5ebf4a

5 files changed

+135
-34
lines changed

Diff for: src/scripts/Dockerfile.vfxplatform

+6-1
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,21 @@ FROM centos:centos7.9.2009
44
RUN yum -y update
55
RUN yum -y install centos-release-scl
66
RUN yum -y group install "Development Tools"
7-
RUN yum -y install pulseaudio-libs-devel wget rpmdevtools git yasm python3 fontconfig-devel zlib-devel autoconf automake xz devtoolset-7 llvm-toolset-7.0 tree curl libICE-devel libSM-devel libX11-devel libXau-devel libXdamage-devel libXext-devel libXfixes-devel libXi-devel libXxf86vm-devel libdrm-devel libxcb-devel mesa-libGL-devel xorg-x11-proto-devel xcb-proto libxcb-devel xcb-util-devel xcb-util-image-devel xcb-util-keysyms-devel xcb-util-renderutil-devel xcb-util-wm-devel
7+
RUN yum -y install pulseaudio-libs-devel wget rpmdevtools git yasm python3 fontconfig-devel zlib-devel autoconf automake xz devtoolset-7 llvm-toolset-7.0 tree curl libICE-devel libSM-devel libX11-devel libXau-devel libXdamage-devel libXext-devel libXfixes-devel libXi-devel libXxf86vm-devel libdrm-devel libxcb-devel mesa-libGL-devel xorg-x11-proto-devel xcb-proto libxcb-devel xcb-util-devel xcb-util-image-devel xcb-util-keysyms-devel xcb-util-renderutil-devel xcb-util-wm-devel xorg-x11-util-macros
88
RUN ln -sf /usr/bin/python3 /usr/bin/python
99
RUN rm -f /usr/lib64/pkgconfig/libpng.pc
1010
RUN rm -f /usr/lib64/pkgconfig/libpng15.pc
11+
RUN rm -f /usr/lib64/pkgconfig/*xcb*.pc
1112
RUN rm -f /usr/include/png.h
1213
RUN rm -f /usr/include/pngconf.h
1314
RUN rm -f /usr/include/pnglibconf.h
1415
RUN sed -i '/.private/d' /usr/lib64/pkgconfig/freetype2.pc
1516
RUN echo "source scl_source enable devtoolset-7" >> /root/.bashrc
1617

18+
RUN echo "#!/bin/sh" > /usr/bin/desktop-file-validate
19+
RUN echo "exit 0" >> /usr/bin/desktop-file-validate
20+
RUN chmod +x /usr/bin/desktop-file-validate
21+
1722
COPY build_vfxplatform.sh /root/
1823
COPY build_vfxplatform_sdk01.sh /root/
1924
COPY build_vfxplatform_sdk02.sh /root/

Diff for: src/scripts/build_vfxplatform_package.sh

+15-18
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,9 @@ BUILD=${BUILD:-"${HOME}"}
2626
VERSION=${VERSION:-""}
2727
APPID="graphics.friction.Friction"
2828
FRICTION_PKG=friction-${VERSION}
29-
PKG_RPM=${PKG_RPM:-1}
30-
PKG_APP=${PKG_APP:-1}
29+
30+
APPIMAGETOOL=bfe6e0c
31+
APPIMAGERUNTIME=1bb1157
3132

3233
if [ "${VERSION}" = "" ]; then
3334
echo "Missing version"
@@ -159,23 +160,18 @@ for pdir in ${PLUGS}; do
159160
done
160161

161162
# RPM
162-
if [ "${PKG_RPM}" = 1 ]; then
163163
cd ${BUILD}
164164
tar cvf ${FRICTION_PKG}.tar ${FRICTION_PKG}
165-
166165
if [ ! -d "${HOME}/rpmbuild/SOURCES" ]; then
167166
mkdir -p ${HOME}/rpmbuild/SOURCES
168167
fi
169-
170168
mv ${FRICTION_PKG}.tar ${HOME}/rpmbuild/SOURCES/
171169
cat ${BUILD}/friction/src/scripts/vfxplatform.spec | sed 's/__FRICTION_PKG_VERSION__/'${PKG_VERSION}'/g;s/__FRICTION_VERSION__/'${VERSION}'/g;s/__APPID__/'${APPID}'/g' > rpm.spec
172-
173170
rpmbuild -bb rpm.spec
174171
cp -a ${HOME}/rpmbuild/RPMS/*/*.rpm ${DISTFILES}/builds/${VERSION}/
175-
fi
176172

177173
# Portable
178-
FRICTION_PORTABLE=${FRICTION_PKG}-linux-X11-x86_64
174+
FRICTION_PORTABLE=${FRICTION_PKG}-portable-linux-x86_64
179175
FRICTION_PORTABLE_DIR=${BUILD}/${FRICTION_PORTABLE}
180176
cd ${BUILD}
181177
rm -f ${FRICTION_PORTABLE_DIR} || true
@@ -186,14 +182,12 @@ mv opt/friction/* .
186182
rm -rf opt share/doc
187183
ln -sf bin/friction .
188184
)
189-
190185
cd ${BUILD}
191186
tar cvf ${FRICTION_PORTABLE}.tar ${FRICTION_PORTABLE}
192187
bzip2 -9 ${FRICTION_PORTABLE}.tar
193188
cp -a ${FRICTION_PORTABLE}.tar.bz2 ${DISTFILES}/builds/${VERSION}/
194189

195190
# AppImage
196-
if [ "${PKG_APP}" = 1 ]; then
197191
(cd ${FRICTION_PORTABLE_DIR} ;
198192
rm -f friction
199193
mkdir usr
@@ -203,14 +197,17 @@ ln -sf usr/share/applications/${APPID}.desktop .
203197
ln -sf usr/share/icons/hicolor/256x256/apps/${APPID}.png .
204198
ln -sf usr/share/icons/hicolor/256x256/apps/${APPID}.png .DirIcon
205199
)
206-
if [ ! -f "${DISTFILES}/appimagetool.tar.bz2" ]; then
207-
(cd ${DISTFILES} ;
208-
wget https://download.friction.graphics/distfiles/misc/appimagetool.tar.bz2
209-
)
210-
fi
211-
tar xf ${DISTFILES}/appimagetool.tar.bz2
212-
ARCH=x86_64 ./appimagetool/AppRun ${FRICTION_PORTABLE}
200+
tar xf ${DISTFILES}/linux/appimagetool-${APPIMAGETOOL}.tar.bz2
201+
ARCH=x86_64 ./appimagetool/AppRun --verbose --runtime-file=${DISTFILES}/linux/runtime-x86_64-${APPIMAGERUNTIME}.bin ${FRICTION_PORTABLE}
202+
203+
# TODO
204+
# FRICTION_ISO=${FRICTION_PKG}-x86_64.squashfs
205+
# FRICTION_APP=${FRICTION_PKG}-test-x86_64.AppImage
206+
# mksquashfs ${FRICTION_PORTABLE} ${FRICTION_ISO} -comp zstd -root-owned -noappend -b 1M -mkfs-time 0
207+
# cat ${DISTFILES}/linux/runtime-x86_64-${APPIMAGERUNTIME}.bin > ${FRICTION_APP}
208+
# cat ${FRICTION_ISO} >> ${FRICTION_APP}
209+
# chmod a+x ${FRICTION_ISO}
210+
213211
cp -a *.AppImage ${DISTFILES}/builds/${VERSION}/
214-
fi
215212

216213
echo "FRICTION PACKAGE DONE"

Diff for: src/scripts/build_vfxplatform_sdk01.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ if [ ! -f "${SDK}/lib/pkgconfig/libunwind.pc" ]; then
106106
cd ${SRC}
107107
UNWIND_SRC=libunwind-${UNWIND_V}
108108
rm -rf ${UNWIND_SRC} || true
109-
tar xf ${DIST}/${UNWIND_SRC}.tar.gz
109+
tar xf ${DIST}/linux/${UNWIND_SRC}.tar.gz
110110
cd ${UNWIND_SRC}
111111
CC=clang CXX=clang++ ./configure ${DEFAULT_CONFIGURE} --disable-minidebuginfo --disable-tests
112112
make -j${MKJOBS}

Diff for: src/scripts/build_vfxplatform_sdk02.sh

+112-13
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,23 @@ SDK=${SDK:-"/opt/friction"}
2727
SRC=${SDK}/src
2828
DIST=${DIST:-"/mnt"}
2929
MKJOBS=${MKJOBS:-32}
30+
SRC_SUFFIX=tar.xz
3031

31-
XKBCOMMON_V=0.7.1
3232
QT_V=5.15.13
3333
QSCINTILLA_V=2.14.1
3434
PELF_V=0.17.0
3535
CMAKE_V=3.26.3
3636

37+
XCB_V=1.17.0
38+
XCB_UTIL_V=0.4.1
39+
XCB_CURSOR_V=0.1.4
40+
XCB_ERRORS_V=1.0.1
41+
XCB_IMAGE_V=0.4.1
42+
XCB_KEYSYMS_V=0.4.1
43+
XCB_RENDERUTIL_V=0.3.10
44+
XCB_WM_V=0.4.2
45+
XKBCOMMON_V=0.8.4
46+
3747
NINJA_BIN=${SDK}/bin/ninja
3848
CMAKE_BIN=${SDK}/bin/cmake
3949
PELF_BIN=${SDK}/bin/patchelf
@@ -60,52 +70,141 @@ COMMON_CONFIGURE="--prefix=${SDK}"
6070
SHARED_CONFIGURE="${COMMON_CONFIGURE} --enable-shared --disable-static"
6171
STATIC_CONFIGURE="${COMMON_CONFIGURE} --disable-shared --enable-static"
6272
DEFAULT_CONFIGURE="${SHARED_CONFIGURE}"
73+
XCB_CONFIGURE=${DEFAULT_CONFIGURE}
6374

6475
# patchelf
6576
if [ ! -f "${PELF_BIN}" ]; then
6677
cd ${SRC}
6778
PELF_SRC=patchelf-${PELF_V}
6879
rm -rf ${PELF_SRC} || true
69-
tar xf ${DIST}/${PELF_SRC}.tar.bz2
80+
tar xf ${DIST}/linux/${PELF_SRC}.tar.bz2
7081
cd ${PELF_SRC}
7182
./configure ${COMMON_CONFIGURE}
7283
make -j${MKJOBS}
7384
make install
7485
fi # patchelf
7586

76-
# cmake
77-
if [ ! -f "${CMAKE_BIN}" ]; then
87+
# xcb
88+
if [ ! -f "${SDK}/lib/pkgconfig/xcb.pc" ]; then
89+
# https://github.com/pypa/pip/issues/10219#issuecomment-888127061
90+
export LANG="en_US.UTF-8"
91+
export LC_ALL="en_US.UTF-8"
92+
# proto
7893
cd ${SRC}
79-
CMAKE_SRC=cmake-${CMAKE_V}
80-
rm -rf ${CMAKE_SRC} || true
81-
tar xf ${DIST}/mxe/pkg/${CMAKE_SRC}.tar.gz
82-
cd ${CMAKE_SRC}
83-
./configure ${COMMON_CONFIGURE} -- -DCMAKE_USE_OPENSSL=OFF
94+
XCB_PROTO_SRC=xcb-proto-${XCB_V}
95+
rm -rf ${XCB_PROTO_SRC} || true
96+
tar xf ${DIST}/x11/${XCB_PROTO_SRC}.${SRC_SUFFIX}
97+
cd ${XCB_PROTO_SRC}
98+
./configure ${XCB_CONFIGURE}
8499
make -j${MKJOBS}
85100
make install
86-
fi # cmake
101+
mv ${SDK}/share/pkgconfig/* ${SDK}/lib/pkgconfig/
102+
# lib
103+
cd ${SRC}
104+
XCB_SRC=libxcb-${XCB_V}
105+
rm -rf ${XCB_SRC} || true
106+
tar xf ${DIST}/x11/${XCB_SRC}.${SRC_SUFFIX}
107+
cd ${XCB_SRC}
108+
./configure ${XCB_CONFIGURE}
109+
make -j${MKJOBS}
110+
make install
111+
# util
112+
cd ${SRC}
113+
XCB_UTIL_SRC=xcb-util-${XCB_UTIL_V}
114+
rm -rf ${XCB_UTIL_SRC} || true
115+
tar xf ${DIST}/x11/${XCB_UTIL_SRC}.${SRC_SUFFIX}
116+
cd ${XCB_UTIL_SRC}
117+
./configure ${XCB_CONFIGURE}
118+
make -j${MKJOBS}
119+
make install
120+
# errors
121+
cd ${SRC}
122+
XCB_ERRORS_SRC=xcb-util-errors-${XCB_ERRORS_V}
123+
rm -rf ${XCB_ERRORS_SRC} || true
124+
tar xf ${DIST}/x11/${XCB_ERRORS_SRC}.${SRC_SUFFIX}
125+
cd ${XCB_ERRORS_SRC}
126+
./configure ${XCB_CONFIGURE}
127+
make -j${MKJOBS}
128+
make install
129+
# image
130+
cd ${SRC}
131+
XCB_IMAGE_SRC=xcb-util-image-${XCB_IMAGE_V}
132+
rm -rf ${XCB_IMAGE_SRC} || true
133+
tar xf ${DIST}/x11/${XCB_IMAGE_SRC}.${SRC_SUFFIX}
134+
cd ${XCB_IMAGE_SRC}
135+
./configure ${XCB_CONFIGURE}
136+
make -j${MKJOBS}
137+
make install
138+
# keysyms
139+
cd ${SRC}
140+
XCB_KEYSYMS_SRC=xcb-util-keysyms-${XCB_KEYSYMS_V}
141+
rm -rf ${XCB_KEYSYMS_SRC} || true
142+
tar xf ${DIST}/x11/${XCB_KEYSYMS_SRC}.${SRC_SUFFIX}
143+
cd ${XCB_KEYSYMS_SRC}
144+
./configure ${XCB_CONFIGURE}
145+
make -j${MKJOBS}
146+
make install
147+
# renderutil
148+
cd ${SRC}
149+
XCB_RENDERUTIL_SRC=xcb-util-renderutil-${XCB_RENDERUTIL_V}
150+
rm -rf ${XCB_RENDERUTIL_SRC} || true
151+
tar xf ${DIST}/x11/${XCB_RENDERUTIL_SRC}.${SRC_SUFFIX}
152+
cd ${XCB_RENDERUTIL_SRC}
153+
./configure ${XCB_CONFIGURE}
154+
make -j${MKJOBS}
155+
make install
156+
# cursor
157+
cd ${SRC}
158+
XCB_CURSOR_SRC=xcb-util-cursor-${XCB_CURSOR_V}
159+
rm -rf ${XCB_CURSOR_SRC} || true
160+
tar xf ${DIST}/x11/${XCB_CURSOR_SRC}.${SRC_SUFFIX}
161+
cd ${XCB_CURSOR_SRC}
162+
./configure ${XCB_CONFIGURE}
163+
make -j${MKJOBS}
164+
make install
165+
# wm
166+
cd ${SRC}
167+
XCB_WM_SRC=xcb-util-wm-${XCB_WM_V}
168+
rm -rf ${XCB_WM_SRC} || true
169+
tar xf ${DIST}/x11/${XCB_WM_SRC}.${SRC_SUFFIX}
170+
cd ${XCB_WM_SRC}
171+
./configure ${XCB_CONFIGURE}
172+
make -j${MKJOBS}
173+
make install
174+
fi # xcb
87175

88176
# libxkbcommon
89177
if [ ! -f "${SDK}/lib/pkgconfig/xkbcommon.pc" ]; then
90178
cd ${SRC}
91179
XKB_SRC=libxkbcommon-${XKBCOMMON_V}
92180
rm -rf ${XKB_SRC} || true
93-
tar xf ${DIST}/${XKB_SRC}.tar.xz
181+
tar xf ${DIST}/x11/${XKB_SRC}.${SRC_SUFFIX}
94182
cd ${XKB_SRC}
95183
./configure ${DEFAULT_CONFIGURE} --disable-docs
96184
make -j${MKJOBS}
97185
make install
98186
fi # libxkbcommon
99187

188+
# cmake
189+
if [ ! -f "${CMAKE_BIN}" ]; then
190+
cd ${SRC}
191+
CMAKE_SRC=cmake-${CMAKE_V}
192+
rm -rf ${CMAKE_SRC} || true
193+
tar xf ${DIST}/mxe/pkg/${CMAKE_SRC}.tar.gz
194+
cd ${CMAKE_SRC}
195+
./configure ${COMMON_CONFIGURE} --parallel=${MKJOBS} -- -DCMAKE_USE_OPENSSL=OFF
196+
make -j${MKJOBS}
197+
make install
198+
fi # cmake
199+
100200
# qt
101201
if [ ! -f "${QMAKE_BIN}" ]; then
102202
cd ${SRC}
103203
QT_SRC="qt-everywhere-src-${QT_V}"
104204
QT_TAR_SRC="qt-everywhere-opensource-src-${QT_V}"
105205
rm -rf ${QT_SRC} || true
106-
tar xf ${DIST}/${QT_TAR_SRC}.tar.xz
206+
tar xf ${DIST}/${QT_TAR_SRC}.${SRC_SUFFIX}
107207
cd ${QT_SRC}
108-
#(cd qtbase ; patch -p1 < ${DIST}/hidpi.patch)
109208
./configure \
110209
-prefix ${SDK} \
111210
-c++std c++17 \

Diff for: src/scripts/run_vfxplatform.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ TAG=${TAG:-""}
2828
MKJOBS=${MKJOBS:-32}
2929
ONLY_SDK=${ONLY_SDK:-0}
3030
DOWNLOAD_SDK=${DOWNLOAD_SDK:-0}
31-
SDK_VERSION="20240424"
31+
SDK_VERSION="20240501"
3232
TAR_VERSION=${TAR_VERSION:-""}
3333

3434
DOCKER="docker run"

0 commit comments

Comments
 (0)