You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

179 lines
4.5 KiB

  1. #!/bin/bash
  2. TARGET=$1 # 编译的输出目标位置
  3. DIST=$2 # 下载依赖的目录
  4. #根据$TARGET中的目录名设置 指令架构
  5. ARCH="x86_64"
  6. if echo $TARGET | grep -q '\-32'
  7. then ARCH="i686"
  8. fi
  9. # 建立python库链接
  10. function symlink_python() {
  11. local pylib=$1
  12. local location=$2
  13. echo " * 发现于 $location"
  14. echo " * 更新符号链接"
  15. ln -vfs $location $TARGET/lib/$pylib
  16. }
  17. # 建立C++标准库链接
  18. function symlink_libstdc() {
  19. local location=$1
  20. directory=`dirname $location `
  21. echo " * 发现于 $location"
  22. echo " * 更新符号链接"
  23. ln -vfs $location $TARGET/lib/libstdc++.a
  24. # echo " * Symlinking GOMP"
  25. # for filename in libgomp.a libgomp.spec ; do
  26. # ln -vfs $directory/$filename $TARGET/lib/$filename
  27. # done
  28. }
  29. # 检查下载文件的完整性
  30. function verify_hash() {
  31. local hash=$1
  32. local filepath=$2
  33. echo "$hash $filepath" | sha1sum --status -c -
  34. return $?
  35. }
  36. # 检查 $DIST 中的目录,是否已经存在 linux_deps.tgz文件包,否则下载这个文件包
  37. echo -e "\n * 开始检查distfiles目录中依赖包\n"
  38. FILE=linux_deps.tgz
  39. HASH=7aab4a72ffebe961f0df734364436c99f29f4708
  40. URL=https://github.com/LuxCoreRender/LinuxCompileDeps/releases/download/luxcorerender_v2.6alpha0/linux_deps.tgz
  41. if [ ! -f $DIST/$FILE ] ; then
  42. echo " * 正在下载文件包 $FILE"
  43. wget -O $DIST/$FILE $URL
  44. fi
  45. verify_hash $HASH "$DIST/$FILE"
  46. if [ $? != 0 ] ; then
  47. echo " * 重新开始下载文件包 $FILE"
  48. wget -c -O $DIST/$FILE $URL
  49. verify_hash $HASH "$DIST/$FILE"
  50. if [ $? != 0 ] ; then
  51. echo " !!! 下载文件包 $FILE 失败"
  52. exit 1
  53. fi
  54. fi
  55. # 将linux_deps.tgz文件包 解压到 $DIST 中的目录
  56. tar zxvf $DIST/$FILE -C $DIST
  57. # 检查 $TARGET 中的目录是否存在,并创建如下目录结构
  58. if [[ ! -d $TARGET ]] ; then
  59. mkdir -pv $TARGET/{bin,include,lib,share}
  60. else
  61. echo " * 目标目录树已存在"
  62. fi
  63. echo " * 已完成 distfiles目录中依赖包 检查"
  64. # 检查 C++标准库 是否存在
  65. echo " * 开始检查 C++标准库"
  66. if [[ ! -e $TARGET/lib/libstdc++.a ]] ; then
  67. echo " * 缺少 libstdc++.a库 符号链接,正在尝试找出正确的位置"
  68. GCCVER=`gcc -dumpversion`
  69. GCCVERMAJOR=`echo $GCCVER | cut -d'.' -f1-2`
  70. if STDCLIBPATH=/usr/lib/gcc/${ARCH}-linux-gnu/$GCCVER/libstdc++.a && [[ -e $STDCLIBPATH ]] ; then
  71. symlink_libstdc $STDCLIBPATH
  72. elif STDCLIBPATH=/usr/lib/gcc/${ARCH}-linux-gnu/$GCCVERMAJOR/libstdc++.a && [[ -e $STDCLIBPATH ]] ; then
  73. symlink_libstdc $STDCLIBPATH
  74. else
  75. echo " !!! 找不到 libstdc++.a库 文件位置"
  76. echo " !!! 您必须手动查找库并进行符号链接"
  77. echo " !!! 它将沿着以下路径运行:"
  78. echo " !!! $TARGET/lib/libstdc++.a"
  79. exit 1
  80. fi
  81. fi
  82. echo " * 已完成 C++标准库 检查"
  83. # 检查 python版是否为3.0以上,及配置是否正确
  84. echo " * 开始检查 python配置"
  85. PYVER=`${PYTHON_CMD} --version 2>&1`
  86. if [ `echo $PYVER | cut -d' ' -f2 | cut -d'.' -f1` != '3' ] ; then
  87. echo " !!! Python 的主要版本必需是“3”"
  88. exit 1
  89. fi
  90. PYVER=`echo $PYVER | cut -d' ' -f2 | cut -d'.' -f'1-2'`
  91. PYLIB=libpython"$PYVER".a
  92. PYLIBm=libpython"$PYVER"m.a
  93. if echo $TARGET | grep -q '\-64' ; then EXT="64" ; fi
  94. if [[ ! -e $TARGET/lib/$PYLIB ]] ; then
  95. echo " * 缺少 python标准库的符号链接,正在尝试找出正确的位置"
  96. if PYLIBPATH=/usr/lib${EXT}/$PYLIB && [[ -e $PYLIBPATH ]] ; then
  97. symlink_python $PYLIB $PYLIBPATH
  98. elif PYLIBPATH=/usr/lib/${ARCH}-linux-gnu/$PYLIB && [[ -e $PYLIBPATH ]] ; then
  99. symlink_python $PYLIB $PYLIBPATH
  100. elif PYLIBPATH=/usr/lib/${ARCH}-linux-gnu/$PYLIBm && [[ -e $PYLIBPATH ]] ; then
  101. symlink_python $PYLIB $PYLIBPATH
  102. else
  103. echo " !!! 无法找到 $PYLIB 或 $PYLIBm"
  104. echo " !!! 你必须手动找到并重新链接"
  105. echo " !!! 将其符号链接到以下路径:"
  106. echo " !!! $TARGET/lib/$PYLIB"
  107. exit 1
  108. fi
  109. fi
  110. echo " * 已完成 python配置 检查"
  111. echo " * 开始检查 LuxMark配置"
  112. if [[ -d "LuxMark" ]] ; then
  113. FILE=scenes.tgz
  114. HASH=5db2cedea47d2f7758ecaa6802632f598cfd4ab7
  115. URL=https://github.com/LuxCoreRender/LuxMark/releases/download/luxmark_v4.0alpha0/scenes.tgz
  116. if [ ! -f $DIST/$FILE ] ; then
  117. echo " * 正在下载文件包 $FILE"
  118. wget -O $DIST/$FILE $URL
  119. fi
  120. verify_hash $HASH "$DIST/$FILE"
  121. if [ $? != 0 ] ; then
  122. echo " * 正在重新下载文件包 $FILE"
  123. wget -c -O $DIST/$FILE $URL
  124. verify_hash $HASH "$DIST/$FILE"
  125. if [ $? != 0 ] ; then
  126. echo " !!! 文件包 $FILE 下载失败"
  127. exit 1
  128. fi
  129. fi
  130. fi
  131. echo -e "\n * 已完成 LuxMark配置 检查\n"
  132. # updating target link
  133. #ln -fs $TARGET ../target
  134. sleep 2