From 08e390dce6c6ff1dbe7434df5e688d7a5d5cfd5c Mon Sep 17 00:00:00 2001 From: alemuntoni Date: Tue, 28 Jan 2020 18:17:54 +0100 Subject: [PATCH] some readme modifies and install folder reorganization --- README.md | 2 +- distrib/README.md | 8 ++ install/README.md | 15 +++- install/build_allinc_src_archive.sh | 12 --- install/build_src_archive.sh | 38 ---------- install/{snap201703 => linux/snap}/README.md | 0 .../snap/gui/meshlab.desktop | 0 .../snap/gui/meshlab.png | Bin .../{snap201703 => linux/snap}/snapcraft.yaml | 0 install/meshlab.desktop | 9 --- install/snap201612/README.md | 31 -------- .../snap201612/snap/gui/meshlabserver.desktop | 9 --- install/snap201612/snap/snapcraft.yaml | 70 ------------------ install/snap201703/gui/meshlab.desktop | 9 --- install/snap201703/gui/meshlab.png | Bin 29452 -> 0 bytes .../{ => windows}/meshlab-64bit-appveyor.nsi | 0 install/{ => windows}/meshlab-64bit.nsi | 0 install/{ => windows}/meshlab.nsi | 0 18 files changed, 20 insertions(+), 183 deletions(-) delete mode 100644 install/build_allinc_src_archive.sh delete mode 100644 install/build_src_archive.sh rename install/{snap201703 => linux/snap}/README.md (100%) rename install/{snap201612 => linux}/snap/gui/meshlab.desktop (100%) rename install/{snap201612 => linux}/snap/gui/meshlab.png (100%) rename install/{snap201703 => linux/snap}/snapcraft.yaml (100%) delete mode 100644 install/meshlab.desktop delete mode 100644 install/snap201612/README.md delete mode 100644 install/snap201612/snap/gui/meshlabserver.desktop delete mode 100644 install/snap201612/snap/snapcraft.yaml delete mode 100644 install/snap201703/gui/meshlab.desktop delete mode 100644 install/snap201703/gui/meshlab.png rename install/{ => windows}/meshlab-64bit-appveyor.nsi (100%) rename install/{ => windows}/meshlab-64bit.nsi (100%) rename install/{ => windows}/meshlab.nsi (100%) diff --git a/README.md b/README.md index 430100168..d180986c8 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ MeshLab requires [Qt](https://www.qt.io/) >= 5.9, with `script` and `xmlpatterns After setting up the Qt environment: git clone --recursive https://github.com/cnr-isti-vclab/meshlab - cd src + cd meshlab/src qmake make diff --git a/distrib/README.md b/distrib/README.md index e69de29bb..6c9b48c5a 100644 --- a/distrib/README.md +++ b/distrib/README.md @@ -0,0 +1,8 @@ +# distrib folder + +The distrib folder contains a set of pre-built libraries, plugins, shaders and textures that MeshLab needs to properly run. + +Running `qmake && make` from the `src` folder of the repo, MeshLab binaries, plugins and libraries will be placed automatically in this folder. +If instead a shadow build is set, the `distrib` folder will be automatically copied inside the selected build directory, and it will contain also binaries, plugins and libraries. + +After building MeshLab, the `distrib` directory will **not** contain a portable version of MeshLab, since it won't contain all the Qt's libraries needed by MeshLab. In order to deploy MeshLab, see the `install` directory. \ No newline at end of file diff --git a/install/README.md b/install/README.md index d08232a39..e1371defd 100644 --- a/install/README.md +++ b/install/README.md @@ -1,7 +1,14 @@ -Windows: +# install folder +**Work in Progress** -MacOS -After a full rebuild of meshlab_full.pro run the macinstall_v2016.sh script. It generate a relocable app folder. To build the dmg, install appdmg and use the following command line: +This folder contains a series of platform-dependent scripts to build and deploy meshlab. -appdmg meshlab_dmg.json ../distrib/MeshLab2016.12.dmg \ No newline at end of file +Every platform folder contains: + +* `$platform$-build.[sh/ps1]`: a script that builds MeshLab. Requires a Qt environment properly set, with `qmake` accessible. The build will be placed inside the directory passed as an argument, or in the `distrib` folder if arguments were not provided. +* `$platform$-deploy.[sh/ps1]`: a script that deploys MeshLab, making sure that the folder will be a self-contained MeshLab, without Qt library dependencies. Requires a properly built MeshLab in the directory passed as an argument, or in the `distrib` folder if arguments were not provided. +* `$platform$-install.[sh/ps1]`: a script that computes a self-contained package/installer of MeshLab. Requires a properly deployed MeshLab in the directory passed as an argument, or in the `distrib` folder if arguments were not provided. The result will be saved in the same directory. +* `$platform$-make_it.[sh/ps1]`: a script that computes all the three previous scripts: starting from the source code, it will produce a self-contained package/installer of MeshLab. + +See in each platform subfolder if there are some other platform-dependent requirements. \ No newline at end of file diff --git a/install/build_allinc_src_archive.sh b/install/build_allinc_src_archive.sh deleted file mode 100644 index d9172220d..000000000 --- a/install/build_allinc_src_archive.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -# this is a script shell for building a tar archive of all the sources needed to build a running version of the meshlab. -# it should be run in the directory containing the sf meshlab and code directories. -# so your command line should be something like: source meshlab/src/install/build_src_archive.sh -# when the script ends you should have a tgz with all the needed sources -# -cp meshlab/src/install/building_meshlab.txt ./how_to_compile.txt -find meshlab vcglib ./how_to_compile.txt | egrep -v -e SVN -e /ui_ -e build -e /moc_ -e /php -e meshlabv11.pro -e /qrc_ -e /test/ -e MeshLabBundle -e docs/ -e /web/ -e\# | egrep -e [.]cpp$ -e [.]c$ -e [.]h$ -e [.]tpp$ -e [.]pro$ -e [.]pri$ -e [.]ui$ -e [.]png$ -e [.]rc$ -e [.]qrc$ -e [.]vert$ -e [.]frag$ -e [.]rfx$ -e [.]glsl$ -e [.]gdp$ -e [.]txt$ -e [.]vs$ -e [.]fs$ -e [.]rendertemplate$ -e.xsd$ -e.js$ -e [.]icns$ -e [.]xml$ -e Qt -e images/100mesh.html -e images/eye.ico -e images/facebook.gif -e [.]inl$ -e eigenlib/* > list.txt -echo "meshlab/src/fgt/edit_topo/edit_topomeshbuilder.h" >> list.txt -# -tar -c -v -z -T ./list.txt -f MeshLabSrc_AllInc_v132_`date +"%Y%m%d"`.tgz -eg diff --git a/install/build_src_archive.sh b/install/build_src_archive.sh deleted file mode 100644 index 5392fb70f..000000000 --- a/install/build_src_archive.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh - -DATE=$(date --rfc-3339=date) -MLABURL=https://meshlab.svn.sourceforge.net/svnroot/meshlab/trunk -VCGURL=https://vcg.svn.sourceforge.net/svnroot/vcg/trunk -MLABREV=$(svn info ${MLABURL} | sed -n 's/^Revision:[ ]*\([0-9]*\)/\1/p') -TMP=/tmp -MLABARCH=meshlab-snapshot-svn${MLABREV} -LIBARCH=meshlab-externals-svn${MLABREV} -MLABDIR=$1 -LIBDIR=$LIBARCH - -CURDIR=$(pwd) - -mkdir -p $TMP/$MLABDIR -svn export --force $MLABURL $TMP/$MLABDIR -svn export --force $VCGURL $TMP/$MLABDIR - -cd $TMP/$MLABDIR - -mv meshlab/src/external $TMP/$LIBDIR/meshlab/src -rm -rf CVSROOT meshlab/web meshlab/src/old meshlab/src/sample meshlab/src/meshlabplugins/edit_phototexturing meshlab/src/meshlab/textures meshlab/src/meshlab/plugins/U3D_OSX meshlab/src/meshlab/plugins/U3D_W32 meshlab/src/external -mkdir -p meshlab/src/meshlab/plugins/U3D_W32 -mkdir -p meshlab/src/meshlab/plugins/U3D_OSX -mkdir -p meshlab/src/external -mkdir -p $TMP/$LIBDIR/meshlab/src - -rm -rf vcglib/docs -rm -rf vcglib/apps/gcc_make vcglib/apps/msvc vcglib/apps/test -mkdir -p $TMP/$LIBDIR/vcglib/vcg -mv vcglib/vcg/Eigen $TMP/$LIBDIR/vcglib/vcg -cd .. -tar -zcf $CURDIR/$MLABARCH.tar.gz $MLABDIR -tar -zcf $CURDIR/$LIBARCH.tar.gz $LIBDIR - -rm -rdf $TMP/$MLABDIR - -cd $CURDIR diff --git a/install/snap201703/README.md b/install/linux/snap/README.md similarity index 100% rename from install/snap201703/README.md rename to install/linux/snap/README.md diff --git a/install/snap201612/snap/gui/meshlab.desktop b/install/linux/snap/gui/meshlab.desktop similarity index 100% rename from install/snap201612/snap/gui/meshlab.desktop rename to install/linux/snap/gui/meshlab.desktop diff --git a/install/snap201612/snap/gui/meshlab.png b/install/linux/snap/gui/meshlab.png similarity index 100% rename from install/snap201612/snap/gui/meshlab.png rename to install/linux/snap/gui/meshlab.png diff --git a/install/snap201703/snapcraft.yaml b/install/linux/snap/snapcraft.yaml similarity index 100% rename from install/snap201703/snapcraft.yaml rename to install/linux/snap/snapcraft.yaml diff --git a/install/meshlab.desktop b/install/meshlab.desktop deleted file mode 100644 index 9688cdce9..000000000 --- a/install/meshlab.desktop +++ /dev/null @@ -1,9 +0,0 @@ -[Desktop Entry] -Type=Application -Name=MeshLab -Comment=Processor and editor of large 3D triangular meshes -Exec=meshlab -Terminal=false -Categories=Graphics; -Icon=meshlab.png - diff --git a/install/snap201612/README.md b/install/snap201612/README.md deleted file mode 100644 index 38fc8e766..000000000 --- a/install/snap201612/README.md +++ /dev/null @@ -1,31 +0,0 @@ -Snap is a cross-distribution packaging format for Linux. See -https://snapcraft.io for more information. - -How to build ------------- -Just type -``` -snapcraft -``` -from the directory containing this README file. This snap has been successfully -built in Ubuntu 17.04; Ubuntu 16.10 will not work because MeshLab needs Qt 5.7, -which is not available there. It should be possible to build MeshLab as a snap -in older Ubuntu distributions by using the [qt57 -part](https://wiki.ubuntu.com/snapcraft/parts), but no efforts have been taken -in this direction since anyway the generated snap package will work on older -distributions too. - -How to test the snap --------------------- -The generated snap can be installed by typing -``` -snap install --dangerous ./meshlab*.snap -``` -The `--dangerous` flag is needed because the snap has not been verified by the -store. - -How to upload the snap to the store ------------------------------------ -A thorough guide can be found at the [snapcraft.io -site](https://snapcraft.io/docs/build-snaps/publish). - diff --git a/install/snap201612/snap/gui/meshlabserver.desktop b/install/snap201612/snap/gui/meshlabserver.desktop deleted file mode 100644 index d47da0de8..000000000 --- a/install/snap201612/snap/gui/meshlabserver.desktop +++ /dev/null @@ -1,9 +0,0 @@ -[Desktop Entry] -Type=Application -Name=meshlabserver -Comment=Processor and editor of large 3D triangular meshes -Exec=meshlab.meshlabserver -Terminal=true -Categories=Graphics; -Icon=${SNAP}/meta/gui/meshlab.png - diff --git a/install/snap201612/snap/snapcraft.yaml b/install/snap201612/snap/snapcraft.yaml deleted file mode 100644 index fff6ebe5f..000000000 --- a/install/snap201612/snap/snapcraft.yaml +++ /dev/null @@ -1,70 +0,0 @@ -# Known to build in Ubuntu 17.04 -name: meshlab -version: '2016.12-2' -summary: MeshLab -description: | - The open source system for processing and editing 3D triangular meshes. - It provides a set of tools for editing, cleaning, healing, inspecting, - rendering, texturing and converting meshes. It offers features for processing - raw data produced by 3D digitization tools/devices and for preparing models - for 3D printing. -icon: snap/gui/meshlab.png - -grade: stable -confinement: strict - -apps: - meshlab: - command: desktop-launch meshlab - plugs: [home, x11, mir, opengl, unity7] - meshlabserver: - command: desktop-launch meshlabserver - plugs: [home, x11, opengl, unity7] - - -parts: - meshlab: - after: [desktop-qt5,vcglib] - plugin: qmake - qt-version: qt5 - source: https://github.com/cnr-isti-vclab/meshlab.git - source-tag: v2016.12 - build-packages: - - libqt5opengl5-dev - - libqt5xmlpatterns5-dev - - qt5-default - - qtscript5-dev - prepare: | - ln -sf ../vcglib/install ../vcglib - sed -i '/filter_csg/d' src/meshlab_full.pro - sed -i '/plugins_experimental\/io_TXT/d' src/meshlab_full.pro - sed -i 's| abs(| qAbs(|' src/meshlabplugins/edit_quality/eqhandle.cpp - sed -i -e '2ilinux:QMAKE_LFLAGS += -fopenmp -lgomp\' src/meshlabplugins/filter_screened_poisson/filter_screened_poisson.pro - sed -i 's|PR_XXXXXX|/tmp/PR_XXXXXX|' src/meshlabplugins/filter_screened_poisson/Src/Geometry.cpp - build: | - rm -f -r src/distrib/plugins/U3D_OSX - rm -f -r src/distrib/plugins/U3D_W32 - cd src/external - qmake external.pro - make -j4 - cd .. - qmake meshlab_full.pro - make -j4 - install: | - cp src/meshlabplugins/filter_screened_poisson/filter_screened_poisson.xml \ - src/meshlabplugins/filter_mutualinfoxml/filter_mutualinfo.xml \ - src/meshlabplugins/filter_measure/filter_measure.xml \ - src/distrib/plugins/ - rm -f -r src/distrib/plugins/OSX_U3D - rm -f -r src/distrib/plugins/OSX_W32 - cd src/distrib - mkdir -p $SNAPCRAFT_PART_INSTALL/bin - cp -a meshlab* plugins shaders textures $SNAPCRAFT_PART_INSTALL/bin - mkdir -p $SNAPCRAFT_PART_INSTALL/lib - cp -a lib* $SNAPCRAFT_PART_INSTALL/lib - vcglib: - plugin: dump - source: https://github.com/cnr-isti-vclab/vcglib.git - source-tag: v1.0.1 - prime: [ -* ] - diff --git a/install/snap201703/gui/meshlab.desktop b/install/snap201703/gui/meshlab.desktop deleted file mode 100644 index 7e18ba811..000000000 --- a/install/snap201703/gui/meshlab.desktop +++ /dev/null @@ -1,9 +0,0 @@ -[Desktop Entry] -Type=Application -Name=MeshLab -Comment=Processor and editor of large 3D triangular meshes -Exec=meshlab.meshlab -Terminal=false -Categories=Graphics; -Icon=${SNAP}/meta/gui/meshlab.png - diff --git a/install/snap201703/gui/meshlab.png b/install/snap201703/gui/meshlab.png deleted file mode 100644 index c9a9885e2cc53465b25117cb5fd08033b12010e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29452 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 bD#Te_F{Hi>k{aG)L@3Ft$vu%VzxqD_e6_P{ diff --git a/install/meshlab-64bit-appveyor.nsi b/install/windows/meshlab-64bit-appveyor.nsi similarity index 100% rename from install/meshlab-64bit-appveyor.nsi rename to install/windows/meshlab-64bit-appveyor.nsi diff --git a/install/meshlab-64bit.nsi b/install/windows/meshlab-64bit.nsi similarity index 100% rename from install/meshlab-64bit.nsi rename to install/windows/meshlab-64bit.nsi diff --git a/install/meshlab.nsi b/install/windows/meshlab.nsi similarity index 100% rename from install/meshlab.nsi rename to install/windows/meshlab.nsi