From f5c1724981926c8b8b69036a69c6204647dd290c Mon Sep 17 00:00:00 2001 From: Grey Christoforo Date: Sun, 9 May 2021 15:07:41 +0200 Subject: [PATCH] fix all the stupid paths --- .SRCINFO | 2 +- .gitignore | 1 + PKGBUILD | 55 +++++++++++++++++++++++++++++++++--------------------- 3 files changed, 36 insertions(+), 22 deletions(-) diff --git a/.SRCINFO b/.SRCINFO index c4529b3..58e32dd 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,6 +1,6 @@ pkgbase = freecad-git pkgdesc = A general purpose 3D CAD modeler - git checkout - pkgver = 0.19.r581.g20e756306d + pkgver = 0.19.r582.g0cfea3fee3 pkgrel = 1 epoch = 0 url = https://www.freecadweb.org/ diff --git a/.gitignore b/.gitignore index 101b10f..d467575 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ pkg/ FreeCAD/ *.tar.xz *.tar.gz +*.tar.zst diff --git a/PKGBUILD b/PKGBUILD index 8d6604d..14934e5 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,7 +1,7 @@ # Maintainer: Grey Christoforo pkgname=freecad-git -pkgver=0.19.r581.g20e756306d +pkgver=0.19.r582.g0cfea3fee3 pkgrel=1 epoch=0 pkgdesc='A general purpose 3D CAD modeler - git checkout' @@ -64,17 +64,16 @@ pkgver() { prepare() { cd FreeCAD - # add support for vtk version 9 - curl https://github.com/wwmayer/FreeCAD/commit/52599f771fa934ceeb11a970c3639bfa8f90411e.patch | patch -p1 --forward || true - #git revert --no-commit 663ac994a794606e56d086cac85598517bd323dc #git checkout 927fdc9edc } +_destdir="/usr" + build() { cd FreeCAD - cmake -Wno-dev \ + cmake -Wno-dev -G Ninja -B build_dir -S . \ -D BUILD_ENABLE_CXX_STD=C++14 \ -D BUILD_QT5=ON \ -D BUILD_FEM=ON \ @@ -82,8 +81,8 @@ build() { -D BUILD_MESH_PART=ON \ -D BUILD_SHIP=ON \ -D BUILD_ASSEMBLY=OFF \ + -D BUILD_COMPLETE=ON \ -D BUILD_PLOT=ON \ - -D CMAKE_INSTALL_PREFIX="" \ -D CMAKE_BUILD_TYPE=None \ -D CMAKE_C_FLAGS="${CFLAGS} -fPIC -w" \ -D CMAKE_CXX_FLAGS="${CXXFLAGS} -fPIC -w" \ @@ -91,9 +90,13 @@ build() { -D FREECAD_USE_OCC_VARIANT="Official Version" \ -D FREECAD_USE_QT_FILEDIALOG=ON \ -D PYTHON_EXECUTABLE=/usr/bin/python \ - -G Ninja \ - -B build_dir \ - -S . + -D INSTALL_TO_SITEPACKAGES=ON \ + -D CMAKE_INSTALL_PREFIX="${_destdir}/lib/freecad" \ + -D CMAKE_INSTALL_BINDIR=bin \ + -D CMAKE_INSTALL_LIBDIR='../../lib' \ + -D CMAKE_INSTALL_DATADIR='../../share/freecad' \ + -D CMAKE_INSTALL_DATAROOTDIR='../../share' \ + -D CMAKE_INSTALL_DOCDIR='../../share/doc/freecad' cmake --build build_dir } @@ -102,7 +105,10 @@ check() { cd FreeCAD DESTDIR=check cmake --build build_dir -- install - cd build_dir/check + cd "build_dir/check/${_destdir}" + mkdir -p bin + ln -sf "../lib/freecad/bin/FreeCADCmd" bin/FreeCADCmd + export PATH_TO_FREECAD_LIBDIR="$(pwd)/lib" export LD_LIBRARY_PATH="$(pwd)/lib" export PYTHONPATH="$(pwd)/lib" bin/FreeCADCmd --console --run-test 0 @@ -110,25 +116,32 @@ check() { package() { cd FreeCAD - local _destdir=/usr # maybe this belongs in /opt/freecad-git - DESTDIR="${pkgdir}${_destdir}" cmake --build build_dir -- install + DESTDIR="${pkgdir}" cmake --build build_dir -- install - # fix some bad install locations - mkdir -p "${pkgdir}${_destdir}"/share/freecad - mv "${pkgdir}${_destdir}"/share/{examples,Mod,Gui} "${pkgdir}${_destdir}"/share/freecad + # get python site package folder in the right place + cp -a "${pkgdir}${_destdir}"/lib/freecad/lib "${pkgdir}${_destdir}" + rm -rf "${pkgdir}${_destdir}"/lib/freecad/lib - # fix Ext & Mod locations - mkdir -p "${pkgdir}${_destdir}"/lib/freecad - mv "${pkgdir}${_destdir}"/{Ext,Mod,bin} "${pkgdir}${_destdir}"/lib/freecad + # link all the .sos into python site package dir + python_site_packages="$(python -c 'import sys; print(sys.path[-1])')" + mkdir -p "${pkgdir}/${python_site_packages}" + FILES="${pkgdir}${_destdir}"/lib/*.so + for f in $FILES + do + ln -s ${_destdir}/lib/$(basename $f) "${pkgdir}/${python_site_packages}/$(basename $f)" + done # links for bin mkdir -p "${pkgdir}${_destdir}"/bin FILES="${pkgdir}${_destdir}"/lib/freecad/bin/* for f in $FILES do - ln -s ${_destdir}/lib/freecad/bin/$(basename $f) "${pkgdir}${_destdir}"/bin/$(basename $f) + ln -s '../lib/freecad/bin/'$(basename $f) "${pkgdir}${_destdir}"/bin/$(basename $f) done - install -Dt "${pkgdir}/usr/share/licenses/${pkgname}" -m644 "${pkgdir}${_destdir}"/share/License.txt - install -Dt "${pkgdir}/usr/share/licenses/${pkgname}" -m644 LICENSE + # env var for __init__.py + mkdir -p "${pkgdir}"/etc/profile.d + echo "export PATH_TO_FREECAD_LIBDIR=${_destdir}/lib" > "${pkgdir}"/etc/profile.d/freecad.sh + + install -Dt "${pkgdir}${_destdir}/share/licenses/${pkgname}" -m644 LICENSE }