@@ -8,21 +8,69 @@ echo "--gcc-toolchain=${BUILD_PREFIX} --sysroot=${BUILD_PREFIX}/${HOST}/sysroot
88export ICPXCFG=" $( pwd) /icpx_for_conda.cfg"
99export ICXCFG=" $( pwd) /icpx_for_conda.cfg"
1010
11+ read -r GLIBC_MAJOR GLIBC_MINOR <<< " $(conda list '^sysroot_linux-64$' \
12+ | tail -n 1 | awk '{print $2}' | grep -oP '\d+' | head -n 2 | tr '\n' ' ')"
13+
1114if [ -e " _skbuild" ]; then
1215 ${PYTHON} setup.py clean --all
1316fi
14- export CMAKE_GENERATOR=" Ninja"
15- SKBUILD_ARGS=" -- -DCMAKE_C_COMPILER:PATH=icx -DCMAKE_CXX_COMPILER:PATH=icpx -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON"
16- echo " ${PYTHON} setup.py install ${SKBUILD_ARGS} "
17-
18- if [ -n " ${WHEELS_OUTPUT_FOLDER} " ]; then
19- # Install packages and assemble wheel package from built bits
20- WHEELS_BUILD_ARGS=" -p manylinux_2_28_x86_64 --build-number ${GIT_DESCRIBE_NUMBER} "
21- ${PYTHON} setup.py install bdist_wheel ${WHEELS_BUILD_ARGS} ${SKBUILD_ARGS}
22- cp dist/dpctl* .whl ${WHEELS_OUTPUT_FOLDER}
23- else
24- # Perform regular install
25- ${PYTHON} setup.py install ${SKBUILD_ARGS}
17+
18+ export CC=icx
19+ export CXX=icpx
20+
21+ export CMAKE_GENERATOR=Ninja
22+ # Make CMake verbose
23+ export VERBOSE=1
24+
25+ CMAKE_ARGS=" ${CMAKE_ARGS} -DDPCTL_LEVEL_ZERO_INCLUDE_DIR=${PREFIX} /include/level_zero"
26+
27+ # -wnx flags mean: --wheel --no-isolation --skip-dependency-check
28+ ${PYTHON} -m build -w -n -x
29+
30+ pushd dist
31+ ${PYTHON} -m wheel unpack -d dpctl_wheel dpctl* .whl
32+ export lib_name=libDPCTLSyclInterface
33+ export so_full_path=$( find dpctl_wheel -regextype posix-extended -regex " ^.*${lib_name} \.so" )
34+ export sox_full_path=$( find dpctl_wheel -regextype posix-extended -regex " ^.*${lib_name} \.so\.[0-9]*$" )
35+ export soxxx_full_path=$( find dpctl_wheel -regextype posix-extended -regex " ^.*${lib_name} \.so\.[0-9]*\.[0-9]*$" )
36+
37+ rm -rf ${so_full_path} ${soxxx_full_path}
38+
39+ export so_name=$( basename ${so_full_path} )
40+ export sox_name=$( basename ${sox_full_path} )
41+ export soxxx_name=$( basename ${soxxx_full_path} )
42+ export wheel_path=$( dirname $( dirname ${so_full_path} ) )
43+
44+ # deal with hard copies
45+ ${PYTHON} -m wheel pack ${wheel_path}
46+
47+ rm -rf dpctl_wheel
48+ popd
49+
50+ ${PYTHON} -m wheel tags --remove --build " $GIT_DESCRIBE_NUMBER " \
51+ --platform-tag " manylinux_${GLIBC_MAJOR} _${GLIBC_MINOR} _x86_64" \
52+ dist/dpctl* .whl
53+
54+ ${PYTHON} -m pip install dist/dpctl* .whl \
55+ --no-build-isolation \
56+ --no-deps \
57+ --only-binary :all: \
58+ --no-index \
59+ --prefix " ${PREFIX} " \
60+ -vv
61+
62+ export libdir=$( find $PREFIX -name ' libDPCTLSyclInterface*' -exec dirname \{\} \; )
63+
64+ # Recover symbolic links
65+ # libDPCTLSyclInterface.so.0 -> libDPCTLSyclInterface.so.0.17
66+ # libDPCTLSyclInterface.so -> libDPCTLSyclInterface.so.0
67+ mv ${libdir} /${sox_name} ${libdir} /${soxxx_name}
68+ ln -s ${libdir} /${soxxx_name} ${libdir} /${sox_name}
69+ ln -s ${libdir} /${sox_name} ${libdir} /${so_name}
70+
71+ # Copy wheel package
72+ if [[ -d " ${WHEELS_OUTPUT_FOLDER} " ]]; then
73+ cp dist/dpctl* .whl " ${WHEELS_OUTPUT_FOLDER[@]} "
2674fi
2775
2876# need to create this folder so ensure that .dpctl-post-link.sh can work correctly
0 commit comments