diff --git a/package/kml/1.4.0/bisheng/install.sh b/package/kml/1.4.0/bisheng/install.sh index 1eb7fc187bf7bc69e20e6f1125ef43c19789965e..129c8eaf1b3ba04aa344007dc4278786e1364f2d 100644 --- a/package/kml/1.4.0/bisheng/install.sh +++ b/package/kml/1.4.0/bisheng/install.sh @@ -2,7 +2,9 @@ set -x set -e cd ${JARVIS_TMP} -rpm -e boostkit-kml +if [ -d /usr/local/kml ];then + rpm -e boostkit-kml +fi rpm --force --nodeps -ivh ${JARVIS_ROOT}/package/kml/1.4.0/bisheng/*.rpm # generate full lapack netlib=${JARVIS_DOWNLOAD}/lapack-3.9.1.tar.gz diff --git a/package/kml/1.4.0/gcc/install.sh b/package/kml/1.4.0/gcc/install.sh index 084bbef519643fa66dd02980336af8ad07cbc617..2f80fe7cf1a7c0cde96355b16757fd44937c9ead 100644 --- a/package/kml/1.4.0/gcc/install.sh +++ b/package/kml/1.4.0/gcc/install.sh @@ -2,6 +2,54 @@ set -x set -e cd ${JARVIS_TMP} -rpm -e boostkit-kml +if [ -d /usr/local/kml ];then + rpm -e boostkit-kml +fi rpm --force --nodeps -ivh ${JARVIS_ROOT}/package/kml/1.4.0/gcc/*.rpm -cp -rf ${JARVIS_ROOT}/package/kml/1.4.0/gcc/libklapack_full.so /usr/local/kml/lib \ No newline at end of file + +# generate full lapack +netlib=${JARVIS_DOWNLOAD}/lapack-3.9.1.tar.gz +klapack=/usr/local/kml/lib/libklapack.a +kservice=/usr/local/kml/lib/libkservice.a +echo $netlib +echo $klapack + +# build netlib lapack +rm -rf netlib +mkdir netlib +cd netlib +tar zxvf $netlib +mkdir build +cd build +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON ../lapack-3.9.1 +make -j +cd ../.. + +cp netlib/build/lib/liblapack.a liblapack_adapt.a + +# get symbols defined both in klapack and netlib lapack +nm -g liblapack_adapt.a | grep 'T ' | grep -oP '\K\w+(?=_$)' | sort | uniq > netlib.sym +nm -g $klapack | grep 'T ' | grep -oP '\K\w+(?=_$)' | sort | uniq > klapack.sym +comm -12 klapack.sym netlib.sym > comm.sym + +objcopy -W dsecnd_ -W second_ liblapack_adapt.a + +# add _netlib_ postfix to symbols in liblapack_adapt.a (e.g. dgetrf_netlib_) +while read sym; do \ + if ! nm liblapack_adapt.a | grep -qe " T ${sym}_\$"; then \ + continue; \ + fi; \ + ar x liblapack_adapt.a $sym.f.o; \ + mv $sym.f.o ${sym}_netlib.f.o; \ + objcopy --redefine-sym ${sym}_=${sym}_netlib_ ${sym}_netlib.f.o; \ + ar d liblapack_adapt.a ${sym}.f.o; \ + ar ru liblapack_adapt.a ${sym}_netlib.f.o; \ + rm ${sym}_netlib.f.o; \ +done < comm.sym + +# (optional) build a full lapack shared library +gcc -o libklapack_full.so -shared -fPIC -Wl,--whole-archive $klapack liblapack_adapt.a $kservice -Wl,--no-whole-archive -fopenmp -lpthread -lgfortran -lm + +\cp libklapack_full.so /usr/local/kml/lib/ +echo "Generated liblapack_adapt.a and libklapack_full.so" +exit 0 \ No newline at end of file diff --git a/src/dataService.py b/src/dataService.py index 55d1ac1e353a91a3de7b008e527d9855e422db2f..5af435936e3e817db268ca12b208d13d4d16dbb1 100644 --- a/src/dataService.py +++ b/src/dataService.py @@ -150,12 +150,12 @@ class DataService(object,metaclass=Singleton): def get_clean_cmd(self): return f''' +set -e cd {DataService.build_dir} {DataService.clean_cmd} ''' def get_env(self): - return f'''set -x -set -e + return f'''set -e source ./init.sh ./jarvis -e source ./{DataService.env_file}''' diff --git a/src/installService.py b/src/installService.py index 36b8e81aeef4719825bddb075fa33a327e38f1ea..a044b72a78983f7da5230dde923081b9d31788ef 100644 --- a/src/installService.py +++ b/src/installService.py @@ -1,7 +1,6 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- import os -from secrets import choice import sys import re from enum import Enum @@ -23,7 +22,8 @@ class InstallService: self.exe = ExecuteService() self.tool = ToolService() self.ROOT = os.getcwd() - self.PACKAGE_PATH = os.path.join(self.ROOT, 'package') + self.PACKAGE = 'package' + self.PACKAGE_PATH = os.path.join(self.ROOT, self.PACKAGE) self.SOFTWARE_PATH = os.path.join(self.ROOT, 'software') self.COMPILER_PATH = os.path.join(self.SOFTWARE_PATH, 'compiler') self.LIBS_PATH = os.path.join(self.SOFTWARE_PATH, 'libs') @@ -318,7 +318,7 @@ chmod +x {install_script} compilers = {"GCC":self.get_gcc_info, "CLANG":self.get_clang_info, "NVC":self.get_nvc_info, "ICC":self.get_icc_info, "BISHENG":self.get_clang_info} - + software_path = software_path.replace("package/", '', 1) # software_path should exists abs_software_path = self.check_software_path(software_path) if not abs_software_path: return diff --git a/wechat-group-qr.png b/wechat-group-qr.png index f6361bcf32555ac5100c50227e23a5a70029b9b4..558033342971cfcb4a72434d89ffbff19a737bb1 100644 Binary files a/wechat-group-qr.png and b/wechat-group-qr.png differ