smart-os/mk_xorg.sh

199 lines
7.6 KiB
Bash
Raw Normal View History

2022-08-01 22:57:30 +08:00
#!/bin/sh
# 预装工具
2022-08-08 06:36:26 +08:00
if [ -f "/usr/bin/apt" ]; then
2022-08-08 22:20:36 +08:00
apt install git autoconf libtool gcc g++ gettext pkg-config m4 python-xcbgen -y
2022-08-08 06:36:26 +08:00
apt install xutils-dev xtrans-dev libpixman-1-dev libdrm-dev libx11-dev libgl-dev libgcrypt-dev libxkbfile-dev libxfont-dev libpciaccess-dev libepoxy-dev libgbm-dev libegl1-mesa-dev -y
fi
if [ -f "/usr/bin/yum" ]; then
2022-08-08 22:20:36 +08:00
yum install git autoconf libtool gcc g++ gettext pkg-config m4 xcb-util -y
2022-08-08 06:36:26 +08:00
yum install xutils-dev xtrans-dev libpixman-1-dev libdrm-dev libx11-dev libgl-dev libgcrypt-dev libxkbfile-dev libxfont-dev libpciaccess-dev libepoxy-dev libgbm-dev libegl1-mesa-dev -y
fi
#-----------------------------------------------
#
# 导入公共变量
#
#-----------------------------------------------
. ./common.sh
2022-08-08 06:36:26 +08:00
xserver_dir=${xorg_install}"/xclient"
xclient_dir=${xorg_install}"/xclient"
XSVR_SRC_URL=https://www.x.org/archive/individual/xserver/xorg-server-1.20.11.tar.bz2
#----------------------------
#
# 下载源码
#
#----------------------------
mkdir -pv source
cd source
2022-08-08 06:36:26 +08:00
XSVR_SRC_NAME=$(file_name ${XSVR_SRC_URL})
if [ ! -f ${XSVR_SRC_NAME} ]; then
wget -c -t 0 $XSVR_SRC_URL
fi
cd ..
#---------------------------
#
# 解压源码
#
#---------------------------
mkdir -pv ${build_dir}
2022-08-08 06:36:26 +08:00
XSVR_SRC_DIR=${build_dir}"/"$(file_dirname ${XSVR_SRC_NAME} .tar.bz2)
if [ ! -d ${XSVR_SRC_DIR} ]; then
echo "unzip ${XSVR_SRC_NAME} source code"
tar xf source/${XSVR_SRC_NAME} -C ${build_dir}
fi
#---------------------------------------------
#
2022-08-08 06:36:26 +08:00
# 编译 xserver
#
#---------------------------------------------
cd ${build_dir}
# 编译
if [ ! -d "xorg_install" ]; then
2022-08-08 06:36:26 +08:00
mkdir -pv xorg_install && cd ${XSVR_SRC_DIR} && make distclean && ./autogensh
2022-08-06 06:15:14 +08:00
./configure ${CFGOPT}
CFLAGS="-L${glibc_install}/lib64 $CFLAGS" make -j8 && make install -j8 DESTDIR=${xserver_dir} && cd ..
fi
2022-08-05 00:08:53 +08:00
#--------------------------------------------
#
# 编译 xclient
#
#--------------------------------------------
2022-08-08 22:20:36 +08:00
# 解决 libxcb 编译问题
mkdir -pv ${xorg_install}/xclient/usr/share/aclocal
mkdir -pv ${xorg_install}/xclient/usr/local/share/aclocal
2022-08-06 06:15:14 +08:00
export CFGOPT="--prefix=/usr --with-sysroot=${xorg_install}/xclient --with-build-sysroot=${xorg_install}/xclient"
2022-08-06 00:17:23 +08:00
export CFLAGS="-I${xorg_install}/xclient/usr/include"
export LDFLAGS="-L${xorg_install}/xclient/usr/lib"
2022-08-08 22:20:36 +08:00
export ACLOCAL="aclocal -I /usr/share/aclocal -I ${xorg_install}/xclient/usr/share/aclocal -I ${xorg_install}/xclient/usr/local/share/aclocal"
# 解决 libxcb 编译问题
export PKG_CONFIG_SYSROOT_DIR="${xclient_dir}"
export PKG_CONFIG_PATH="${xclient_dir}/usr/share/pkgconfig:${xclient_dir}/usr/lib/pkgconfig:${xclient_dir}/usr/local/lib/pkgconfig"
export XCBPROTO_XCBINCLUDEDIR="${xclient_dir}/usr/share/xcb"
export PYTHONPATH="${xclient_dir}/usr/lib/python2.7/dist-packages"
2022-08-06 00:17:23 +08:00
2022-08-08 06:36:26 +08:00
# 采用 cache 机制,禁止每次都重新下载源码
2022-08-06 00:17:23 +08:00
if [ ! -f xclient.tar.gz ]; then
git clone https://gitlab.freedesktop.org/xorg/util/macros.git
git clone https://gitlab.freedesktop.org/xorg/proto/xcbproto.git
git clone https://gitlab.freedesktop.org/xorg/proto/xorgproto.git
git clone https://gitlab.freedesktop.org/xorg/lib/libxau.git
git clone https://gitlab.freedesktop.org/xorg/lib/libxcb.git
git clone https://gitlab.freedesktop.org/xorg/lib/libxtrans.git
git clone https://gitlab.freedesktop.org/xorg/lib/libx11.git
git clone https://gitlab.freedesktop.org/xorg/lib/libice.git
git clone https://gitlab.freedesktop.org/xorg/lib/libsm.git
git clone https://gitlab.freedesktop.org/xorg/lib/libxt.git
git clone https://gitlab.freedesktop.org/xorg/lib/libxext.git
git clone https://gitlab.freedesktop.org/xorg/lib/libxmu.git
git clone https://gitlab.freedesktop.org/xorg/lib/libxpm.git
git clone https://gitlab.freedesktop.org/xorg/lib/libxaw.git
git clone https://gitlab.freedesktop.org/xorg/lib/libxdmcp.git
git clone https://gitlab.freedesktop.org/xorg/app/xload.git
tar zcf xclient.tar.gz macros xcbproto xorgproto libxau libxcb libxtrans libx11 libice libsm libxt libxext libxmu libxpm libxaw libxdmcp xload
else
2022-08-08 22:20:36 +08:00
#rm -rf macros xcbproto xorgproto libxau libxcb libxtrans libx11 libice libsm libxt libxext libxmu libxpm libxaw libxdmcp xload
rm -rf libxcb libxtrans libx11 libice libsm libxt libxext libxmu libxpm libxaw libxdmcp xload
2022-08-06 00:17:23 +08:00
tar zxf xclient.tar.gz
fi
2022-08-05 00:08:53 +08:00
echo "${GREEN}build macros begin${NC}"
cd macros
2022-08-06 06:15:14 +08:00
./autogen.sh && ./configure ${CFGOPT} && make -j8 && make install -j8 DESTDIR=${xclient_dir} && echo "${GREEN}build macros success${NC}"
2022-08-05 00:08:53 +08:00
cd .. && sleep 1
echo "${GREEN}build xcbproto begin${NC}"
cd xcbproto
2022-08-06 06:15:14 +08:00
./autogen.sh && ./configure ${CFGOPT} && make -j8 && make install -j8 DESTDIR=${xclient_dir} && echo "${GREEN}build xcbproto success${NC}"
2022-08-05 00:08:53 +08:00
cd .. && sleep 1
echo "${GREEN}build xorgproto begin${NC}"
cd xorgproto
2022-08-06 06:15:14 +08:00
./autogen.sh && ./configure ${CFGOPT} && make -j8 && make install -j8 DESTDIR=${xclient_dir} && echo "${GREEN}build xorgproto success${NC}"
2022-08-05 00:08:53 +08:00
cd .. && sleep 1
echo "${GREEN}build libxau begin${NC}"
cd libxau
2022-08-06 06:15:14 +08:00
./autogen.sh && ./configure ${CFGOPT} && make -j8 && make install -j8 DESTDIR=${xclient_dir} && echo "${GREEN}build libxau success${NC}"
2022-08-05 00:08:53 +08:00
cd .. && sleep 1
echo "${GREEN}build libxcb begin${NC}"
cd libxcb
2022-08-08 22:20:36 +08:00
# 解决 libxcb 编译问题
sed -i "8 i reload(sys)" src/c_client.py
sed -i "9 i sys.setdefaultencoding('utf8')" src/c_client.py
2022-08-06 06:15:14 +08:00
./autogen.sh && ./configure ${CFGOPT} && make -j8 && make install -j8 DESTDIR=${xclient_dir} && echo "${GREEN}build libxcb success${NC}"
2022-08-05 00:08:53 +08:00
cd .. && sleep 1
echo "${GREEN}build libxtrans begin${NC}"
cd libxtrans
2022-08-06 06:15:14 +08:00
./autogen.sh && ./configure ${CFGOPT} && make -j8 && make install -j8 DESTDIR=${xclient_dir} && echo "${GREEN}build libxtrans success${NC}"
2022-08-05 00:08:53 +08:00
cd .. && sleep 1
echo "${GREEN}build libx11 begin${NC}"
cd libx11
2022-08-06 06:15:14 +08:00
./autogen.sh && ./configure ${CFGOPT} && make -j8 && make install -j8 DESTDIR=${xclient_dir} && echo "${GREEN}build libx11 success${NC}"
2022-08-05 00:08:53 +08:00
cd .. && sleep 1
echo "${GREEN}build libice begin${NC}"
cd libice
2022-08-06 06:15:14 +08:00
./autogen.sh && ./configure ${CFGOPT} && make -j8 && make install -j8 DESTDIR=${xclient_dir} && echo "${GREEN}build libice success${NC}"
2022-08-05 00:08:53 +08:00
cd .. && sleep 1
echo "${GREEN}build libsm begin${NC}"
cd libsm
2022-08-06 06:15:14 +08:00
./autogen.sh && ./configure ${CFGOPT} && make -j8 && make install -j8 DESTDIR=${xclient_dir} && echo "${GREEN}build libsm success${NC}"
2022-08-05 00:08:53 +08:00
cd .. && sleep 1
echo "${GREEN}build libxt begin${NC}"
cd libxt
2022-08-06 06:15:14 +08:00
./autogen.sh && ./configure ${CFGOPT} && make -j8 && make install -j8 DESTDIR=${xclient_dir} && echo "${GREEN}build libxt success${NC}"
2022-08-05 00:08:53 +08:00
cd .. && sleep 1
echo "${GREEN}build libxext begin${NC}"
cd libxext
2022-08-06 06:15:14 +08:00
./autogen.sh && ./configure ${CFGOPT} && make -j8 && make install -j8 DESTDIR=${xclient_dir} && echo "${GREEN}build libxext success${NC}"
2022-08-05 00:08:53 +08:00
cd .. && sleep 1
echo "${GREEN}build libxmu begin${NC}"
cd libxmu
2022-08-06 06:15:14 +08:00
./autogen.sh && ./configure ${CFGOPT} && make -j8 && make install -j8 DESTDIR=${xclient_dir} && echo "${GREEN}build libxmu success${NC}"
2022-08-05 00:08:53 +08:00
cd .. && sleep 1
echo "${GREEN}build libxpm begin${NC}"
cd libxpm
2022-08-06 06:15:14 +08:00
./autogen.sh && ./configure ${CFGOPT} && make -j8 && make install -j8 DESTDIR=${xclient_dir} && echo "${GREEN}build libxpm success${NC}"
2022-08-05 00:08:53 +08:00
cd .. && sleep 1
echo "${GREEN}build libxaw begin${NC}"
cd libxaw
2022-08-06 06:15:14 +08:00
./autogen.sh && ./configure ${CFGOPT} && make -j8 && make install -j8 DESTDIR=${xclient_dir} && echo "${GREEN}build libxaw success${NC}"
2022-08-05 00:08:53 +08:00
cd .. && sleep 1
echo "${GREEN}build libxdmcp begin${NC}"
cd libxdmcp
2022-08-06 06:15:14 +08:00
./autogen.sh && ./configure ${CFGOPT} && make -j8 && make install -j8 DESTDIR=${xclient_dir} && echo "${GREEN}build libxdmcp success${NC}"
2022-08-05 00:08:53 +08:00
cd .. && sleep 1
echo "${GREEN}build xload begin${NC}"
2022-08-06 00:17:23 +08:00
2022-08-08 06:36:26 +08:00
# 编译 xclient application
2022-08-05 00:08:53 +08:00
cd xload
2022-08-06 06:15:14 +08:00
./autogen.sh && ./configure ${CFGOPT} && make -j8 && make install -j8 DESTDIR=${xclient_dir} && echo "${GREEN}build xload success${NC}"
2022-08-05 00:08:53 +08:00
cd .. && sleep 1
cd ..