LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware (https://www.linuxquestions.org/questions/slackware-14/)
-   -   SweetHome3D (https://www.linuxquestions.org/questions/slackware-14/sweethome3d-4175660903/)

Nille_kungen 09-14-2019 01:46 PM

SweetHome3D
 
1 Attachment(s)
I tried to install SweetHome3D from SBo on my multilib current install with openjdk-8u222_b10-x86_64-1alien, but i couldn't get it to work.
I then took a look at archlinux PKGBUILD of SweetHome3D and saw that they didn't repackage the pre-built package.
With that in mind i made a quick SlackBuild that worked for me so i am sharing it if anyone else want to use it.
It uses apache-ant to build the package as a build time dependency.

Code:

#!/bin/sh

# Slackware build script for sweethome3d

# Copyright 2019 Niklas Nille Åkerstöm Sweden
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
#  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
#  EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
#  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
#  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
#  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
#  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# Issue running the program in the finneshed package:
# If the application claims there's no graphic support for 3D rendering"
# you can switch to Java3D 1.5 by using:"
# SWEETHOME3D_JAVA3D=1.5 sweethome3d"
# or set the SWEETHOME3D_JAVA3D environment variable in your profile"

PRGNAM=sweethome3d
SRCPRGNAM=SweetHome3D
VERSION=${VERSION:-6.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_Nille}
JAVAVERSION=${JAVAVERSION:-1.8}  #If set it will patch target= and source= in build.xml to set version, the version should be number.number like 1.8

# Where do we grab the the source zip?
SRCURL="https://downloads.sourceforge.net/sweethome3d/$SRCPRGNAM-$VERSION-src.zip"
# Get the source zip
wget -c $SRCURL

# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    i?86) ARCH=i586 ;;
    arm*) ARCH=arm ;;
    # Unless $ARCH is already set, use uname -m for all other archs:
      *) ARCH=$( uname -m ) ;;
  esac
fi

CWD=$(pwd)
TMP=${TMP:-/tmp/build}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

set -e # Exit on most errors

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $SRCPRGNAM-$VERSION-src

unzip $CWD/$SRCPRGNAM-$VERSION-src.zip
cd $SRCPRGNAM-$VERSION-src
chown -R root:root .

#Patch for Java $JAVAVERSION
if [ -z "$JAVAVERSION" ]; then
  echo "Using original java version"
else
  #target
  echo "*Patching target java version"
  sed -r -i 's/(encoding="ISO-8859-1" target=")([0-9].[0-9]")/\1'$JAVAVERSION'"/' build.xml
  #source
  echo "*Patching source java version"
  sed -r -i 's/(source=")([0-9].[0-9]")/\1'$JAVAVERSION'"/' build.xml
fi

#Build with apache-ant
ant application textures furniture examples help java3dLibraries

#INSTALL
# licenses
  install -m 755 -d "$PKG/usr/doc/$PRGNAM-$VERSION"
  install -m 644 -t "$PKG/usr/doc/$PRGNAM-$VERSION" THIRDPARTY-LICENSE-* COPYING.TXT LICENSE.TXT README.TXT
# Icon
  install -m 644 -D "deploy/SweetHome3DIcon48x48.png" "$PKG/usr/share/pixmaps/$PRGNAM.png"
# Program and libraries
  install -m 755 -d "$PKG/usr/share/java/$PRGNAM"
  install -m 644 -t "$PKG/usr/share/java/$PRGNAM" build/*.jar
  install -m 644 -t "$PKG/usr/share/java/$PRGNAM" libtest/jnlp.jar
  cd "lib"
  install -m 644 -t "$PKG/usr/share/java/$PRGNAM" *.jar
  # Java3D 1.5 libraries
  install -m 755 -d "$PKG/usr/lib/$PRGNAM/java3d-1.5"
  mv -t "$PKG/usr/lib/$PRGNAM/java3d-1.5" \
    "$PKG"/usr/share/java/$PRGNAM/{j3dcore.jar,j3dutils.jar,vecmath.jar}
  install -m 644 -t "$PKG/usr/lib/$PRGNAM/java3d-1.5" linux/x64/libj3dcore-ogl.so
  # Java3D 1.6 libraries
  install -m 755 -d "$PKG/usr/lib/$PRGNAM/java3d-1.6"
  install -m 644 -t "$PKG/usr/lib/$PRGNAM/java3d-1.6" java3d-1.6/*.jar
  install -m 644 -t "$PKG/usr/lib/$PRGNAM/java3d-1.6" java3d-1.6/linux/amd64/*.so

cd $TMP/$SRCPRGNAM-$VERSION-src

# Create and install the run script
cat << \EOF > $PRGNAM.sh
#!/bin/sh

APP_CLASSPATH=""
JAVA_EXEC=""
JAVA_OPTS="${JAVA_OPTS} -Xmx1024m"

if [ -n "${JAVA_HOME}" ]
then
  if [ -x "${JAVA_HOME}/bin/java" ]
  then
    JAVA_EXEC="${JAVA_HOME}/bin/java"
  fi
else
  JAVA_EXEC="$(which java)"
fi

if [ -z "${JAVA_EXEC}" ]
then
  echo "No 'java' executable can be found, please set JAVA_HOME variable."
  exit 1
fi

# Build classpath
APP_CLASSPATH="SweetHome3D.jar:Furniture.jar:Textures.jar:Examples.jar:Help.jar:iText-2.1.7.jar:freehep-vectorgraphics-svg-2.1.1b.jar:sunflow-0.07.3i.jar:jmf.jar:batik-svgpathparser-1.7.jar:jeksparser-calculator.jar:jnlp.jar"
if [ "${SWEETHOME3D_JAVA3D}" = "1.5" ]
then
  JAVA_OPTS="${JAVA_OPTS} -Djava.library.path=/usr/lib/sweethome3d/java3d-1.5"
  APP_CLASSPATH="${APP_CLASSPATH}:/usr/lib/sweethome3d/java3d-1.5/j3dcore.jar:/usr/lib/sweethome3d/java3d-1.5/j3dutils.jar:/usr/lib/sweethome3d/java3d-1.5/vecmath.jar"
else
  JAVA_OPTS="${JAVA_OPTS} -Djava.library.path=/usr/lib/sweethome3d/java3d-1.6 -Djogamp.gluegen.UseTempJarCache=false"
  APP_CLASSPATH="${APP_CLASSPATH}:/usr/lib/sweethome3d/java3d-1.6/j3dcore.jar:/usr/lib/sweethome3d/java3d-1.6/j3dutils.jar:/usr/lib/sweethome3d/java3d-1.6/vecmath.jar:/usr/lib/sweethome3d/java3d-1.6/gluegen-rt.jar:/usr/lib/sweethome3d/java3d-1.6/jogl-all.jar"
fi

cd "/usr/share/java/sweethome3d"

exec "${JAVA_EXEC}" \
    -classpath "${APP_CLASSPATH}" \
    ${JAVA_OPTS} \
    -Dcom.eteks.sweethome3d.applicationId=SweetHome3D#Installer \
    com.eteks.sweethome3d.SweetHome3D \
    -open "$1"
EOF
install -m 755 -D "$PRGNAM.sh" "$PKG/usr/bin/$PRGNAM"

# Create and install the .desktop file
cat << EOF > $PRGNAM.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=Sweet Home 3D
Comment=Interior design furniture on a house 2D plan, with a 3D preview
Comment[pt_BR]=Construa plantas de casas em 2D e vizualize em 3D
TryExec=sweethome3d
Exec=sweethome3d %f
Icon=sweethome3d
Categories=Graphics;
StartupWMClass=com.eteks.sweethome3d.SweetHome3D
MimeType=application/x-sweethome3d
EOF
install -m 644 -D "$PRGNAM.desktop" "$PKG/usr/share/applications/$PRGNAM.desktop"

cat << END_TEXT > $PRGNAM.xml
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
  <mime-type type="application/x-sweethome3d">
    <comment>Sweet Home 3D project</comment>
    <glob pattern="*.sh3d"/>
  </mime-type>
</mime-info>
END_TEXT
install -m 644 -D "$PRGNAM.xml" "$PKG/usr/share/mime/packages/$PRGNAM.xml"

# Install this .SlackBiuld in /usr/doc/
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild

# Create slack-desc and a custom doinst.sh
mkdir -p $PKG/install

cat << EOF > $PKG/install/slack-desc
        |-----handy-ruler------------------------------------------------------|
${PRGNAM}: SweetHome3D (free interior design for 2D/3D plan house)
${PRGNAM}:
${PRGNAM}: Sweet Home 3D is a free interior design application that helps
${PRGNAM}: you place your furniture on a house 2D plan, with a 3D preview.
${PRGNAM}:
${PRGNAM}: Home Page: http://www.sweethome3d.com/
${PRGNAM}:
${PRGNAM}:
${PRGNAM}:
${PRGNAM}:
${PRGNAM}:
EOF

cat << EOF > $PKG/install/doinst.sh
if [ -x /usr/bin/update-desktop-database ]; then
  /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
fi

if [ -x /usr/bin/update-mime-database ]; then
  /usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1
fi
EOF

cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}



All times are GMT -5. The time now is 05:40 AM.