LinuxQuestions.org
Welcome to the most active Linux Forum on the web.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Distributions > Slackware
User Name
Password
Slackware This Forum is for the discussion of Slackware Linux.

Notices


Reply
  Search this Thread
Old 09-14-2019, 01:46 PM   #1
Nille_kungen
Member
 
Registered: Jul 2005
Distribution: Slackware64-current
Posts: 587

Rep: Reputation: 201Reputation: 201Reputation: 201
SweetHome3D


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}
Attached Files
File Type: txt sweethome3d.SlackBuild.txt (7.3 KB, 18 views)
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
[SOLVED] Java for SweetHome3D skrotnisse Linux - Software 2 04-28-2015 11:26 AM
SweetHome3D drakeone Linux - Newbie 7 10-22-2010 01:52 AM

LinuxQuestions.org > Forums > Linux Forums > Linux - Distributions > Slackware

All times are GMT -5. The time now is 03:48 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration