You are not logged in.
Dear fellow Arch users.
Since the 64bit version of Blender does not support the open-source "spacenav" drivers, I am making a humble request for someone to make a PGKBUILD file for the official 3DConnexion driver. Strange that it is not in the AUR already.
I would have created the PKGBUILD myself, however I have absolutely no idea what to write into most of the file's sections, especially the build() and package() sections. I have filled out the parts of file that I know how though:
# Maintainer: Someone Nice <someonenice@helpful.com>
pkgname=3dxware
pkgver=1.5.2
pkgrel=1
pkgdesc="Official 3DConnexion driver for 3Dmice like SpaceNavigator"
arch=('x86_64')
url="http://www.3dconnexion.com/service/drivers.html"
license=('Proprietary')
groups=()
depends=()
makedepends=()
optdepends=()
provides=()
conflicts=()
replaces=()
backup=()
options=()
install=
changelog=
source=(http://www.3dconnexion.com/index.php?eID=sdl&ext=tx_iccsoftware&oid=ac9d4181-2f72-fcca-709a-4c4867b0e396&filename=3dxware-linux-v1-5-2.x86_64.tar.gz)
noextract=()
md5sums=() #generate with 'makepkg -g'
build() {
cd "$srcdir/$pkgname-$pkgver"
./configure --prefix=/usr
make
}
package() {
cd "$srcdir/$pkgname-$pkgver"
make DESTDIR="$pkgdir/" install
}Thank you very much, anyone who both has the knowledge to do this and is willing to help. Many Arch users will be greteful for it
.
Regards,
UFOKatarn
Last edited by UFOKatarn (2011-04-20 18:24:17)
Offline
The installation instructions are as follows:
Please make sure you have installed the 75 and/or 100DPI fonts for X11.
The packages are named for example:
xorg-x11-fonts-75dpi-7.2-3.fc8,
xorg-x11-fonts-100dpi-7.2-3.fc8
or
xorg-x11-fonts-ISO8859-1-100dpi-7.2-8.fc11.noarch,
xorg-x11-fonts-ISO8859-1-75dpi-7.2-8.fc11.noarch
Packages names may vary depending on the distribution (and version) you are using!
The files for the driver are provided with the following archive:
Linux:
3dxware-linux-v1-5-2.x86_64.tar.gz
Please save the file 3dxware-linux-v1-5-2.x86_64.tar.gz into the /tmp directory
and extract and run the script install-3dxunix.sh:
tar xfz 3dxware-linux-v1-5-2.x86_64.tar.gz install-3dxunix.sh
./install-3dxunix.sh
If you don't choose during installation the possibility to start the driver during login from the
/etc/inittab please make sure the driver is started before you launch your application.
For the USB devices start the driver with the following command:
Linux:
/etc/3DxWare/daemon/3dxsrv -d usb
For the serial devices start the driver with:
/etc/3DxWare/daemon -d /dev/<serialport>
where <serialport> is the name of your serial port to which the device is attached.
Example: /etc/3DxWare/daemon/3dxsrv -d /dev/ttyS0
For the start of the driver from the /etc/inittab the following line is added:
3dx:234:respawn:/etc/3DxWare/daemon/3dxsrv -d <port> </dev/null >/dev/null 2>&1
where <port> is the name of the port to which the device is attached.
Demos:
After unpacking 3dxware-linux-v1-5-2.x86_64.tar you can find two demos:
The cube demo: /tmp/xcube and
a value demo: /tmp/xvalue
Those are two simple demos that work with the setting "Any Application". You may copy the
binaries to your favourite location for binaries.
Udev-Scripts:
After unpacking 3dxware-linux-v1-5-0.i386.tar you can find two scripts:
Start script "udev_3DxSrvStart": /tmp/udev_3DxSrvStart
Udev rule "85-3DX_SPP.rule" for SpacePilot PRO: /85-3DX_SPP.rule
Put the rule file in "/etc/udev/rules.d/" and the start script into "/etc/3DxWare/daemon".
These locations may vary depending on the distribution used and installation favours.
Thus the rule file and the start scricpt may to be modified to refelct these indifidual environment.Offline
And here is the install script:
#!/bin/sh
# ************************************************************************
# * install script for 3DxWare for Unix release version 1.5.2
# * (C) 3Dconnexion 2010
# * www.3dconnexion.com
# ************************************************************************
PWD="/bin/pwd"
UNAME="/bin/uname"
UNAME_M="/bin/uname -m"
UNAME_P="/bin/uname -p"
UNAME_R="/bin/uname -r"
MACHINE=`$UNAME_M`
WHOAMI="/usr/bin/whoami"
USER=`$WHOAMI`
TMP="/tmp"
if [ -x "/sbin/init" ]
then
INIT_Q="/sbin/init q"
elif [ -x "/usr/sbin/init" ]
then
INIT_Q="/usr/sbin/init q"
else [ -x "/etc/init" ]
INIT_Q="/etc/init q"
fi
if [ -x "/bin/echo" ]
then
ECHO="/bin/echo"
else [ -x "/usr/bin/echo" ]
ECHO="/usr/bin/echo"
fi
if [ -r "INSTALL-3DXUNIX.SH;1" ]
then
HPUX_TGZ=3DXWARE-HPUX-V1-5-2.TGZ\;1
HPUX_TAR_GZ1=3DXWARE-HPUX-V1-5-2.TAR.GZ\;1
HPUX_TAR_GZ=3dxware-hpux-v1-5-2.tar.gz
HPUX_TAR=3dxware-hpux-v1-5-2.tar
elif [ -r "INSTALL_3DXUNIX.SH;1" ]
then
HPUX_TGZ=3DXWARE_HPUX_V1_5_2.TGZ\;1
HPUX_TAR_GZ1=3DXWARE_HPUX_V1_5_2.TAR.GZ\;1
HPUX_TAR_GZ=3dxware_hpux_v1_5_2.tar.gz
HPUX_TAR=3dxware_hpux_v1_5_2.tar
elif [ -r "install_3dxunix.sh" ]
then
HPUX_TGZ=3dxware_hpux_v1_5_2.tgz
HPUX_TAR_GZ1=3dxware_hpux_v1_5_2.tar.gz
HPUX_TAR_GZ=3dxware_hpux_v1_5_2.tar.gz
HPUX_TAR=3dxware_hpux_v1_5_2.tar
elif [ -r "install_3dxunix.sh;1" ]
then
HPUX_TGZ=3dxware_hpux_v1_5_2.tgz\;1
HPUX_TAR_GZ1=3dxware_hpux_v1_5_2.tar.gz\;1
HPUX_TAR_GZ=3dxware_hpux_v1_5_2.tar.gz
HPUX_TAR=3dxware_hpux_v1_5_2.tar
elif [ -r "install-3dxunix.sh;1" ]
then
HPUX_TGZ=3dxware-hpux-v1-5-2.tgz\;1
HPUX_TAR_GZ1=3dxware-hpux-v1-5-2.tar.gz\;1
HPUX_TAR_GZ=3dxware-hpux-v1-5-2.tar.gz
HPUX_TAR=3dxware-hpux-v1-5-2.tar
else [ -r "install-3dxunix.sh" ]
HPUX_TGZ=3dxware-hpux-v1-5-2.tgz
HPUX_TAR_GZ1=3dxware-hpux-v1-5-2.tar.gz
HPUX_TAR_GZ=3dxware-hpux-v1-5-2.tar.gz
HPUX_TAR=3dxware-hpux-v1-5-2.tar
fi
AIX_TAR_GZ=3dxware-aix5-v1-5-2.tar.gz
AIX_TAR=3dxware-aix5-v1-5-2.tar
if [ `$UNAME_M` = "x86_64" ]
then
LINUX_TAR_GZ=3dxware-linux-v1-5-2.x86_64.tar.gz
LINUX_TAR=3dxware-linux-v1-5-2.x86_64.tar
else
LINUX_TAR_GZ=3dxware-linux-v1-5-2.i386.tar.gz
LINUX_TAR=3dxware-linux-v1-5-2.i386.tar
fi
if [ `$UNAME` = "SunOS" ]
then
if [ `$UNAME_P` = "sparc" ]
then
SOLARIS_TAR_GZ=3dxware-solaris-v1-5-2-sparc.tar.gz
SOLARIS_TAR=3dxware-solaris-v1-5-2-sparc.tar
else
SOLARIS_TAR_GZ=3dxware-solaris-v1-5-2-x86.tar.gz
SOLARIS_TAR=3dxware-solaris-v1-5-2-x86.tar
fi
fi
# ************************************************************************
# * CLEAR
# ************************************************************************
CLEAR ()
{
$ECHO ""
$ECHO ""
$ECHO ""
$ECHO ""
$ECHO ""
$ECHO ""
$ECHO ""
$ECHO ""
$ECHO ""
}
# ************************************************************************
# * FatalError
# ************************************************************************
FatalError ()
{
$ECHO ""
$ECHO "Installation failed!"
$ECHO ""
exit 1
}
# ************************************************************************
# * NormalError
# ************************************************************************
NormalError ()
{
$ECHO ""
$ECHO "Installation aborted."
$ECHO ""
exit 2
}
# ************************************************************************
# * ShutdownXdriver
# ************************************************************************
ShutdownExistingDriver()
{
$ECHO "Uninstalling a running driver. Please wait ..."
cp /etc/inittab /tmp/inittab.org
if [ "$1" = "aix" ]
then
sed -e 's/xm:234/:xm:234/g' /etc/inittab > /tmp/inittab.new
else
sed -e 's/xm:234/#xm:234/g' /etc/inittab > /tmp/inittab.new
fi
grep -v "3d:234" /tmp/inittab.new > /etc/inittab
`$INIT_Q`
/etc/3DxWare/daemon/3dxsrv -exit > /dev/null 2>&1
sleep 1
$ECHO "Done."
}
# ************************************************************************
# * Install3DxWare
# ************************************************************************
Install3DxWare ()
{
$ECHO "Installing files for 3DxWare for Unix / $1......"
$ECHO ""
ShutdownExistingDriver $1
if [ "$1" = "aix" ]
then
cp $AIX_TAR_GZ $TMP
cd $TMP
gzip -d $TMP/$AIX_TAR_GZ
tar -oxf $TMP/$AIX_TAR
fi
if [ "$1" = "hpux" ]
then
if [ -r $HPUX_TGZ ]
then
cp $HPUX_TGZ $TMP/$HPUX_TAR_GZ
elif [ -r $HPUX_TAR_GZ1 ]
then
cp $HPUX_TAR_GZ1 $TMP/$HPUX_TAR_GZ
else
cp $HPUX_TAR_GZ $TMP/$HPUX_TAR_GZ
fi
cd $TMP
gzip -d $TMP/$HPUX_TAR_GZ
tar -oxf $TMP/$HPUX_TAR
fi
if [ "$1" = "solaris" ]
then
if [ `$UNAME_R` = "5.10" ]
then
/usr/sbin/rem_drv ugen
/usr/sbin/add_drv -i '"usb46d,c603" "usb46d,c621" "usb46d,c623" "usb46d,c625" "usb46d,c626" "usb46d,c627" "usb46d,c628" "usb46d,c629"' ugen
else
/usr/sbin/rem_drv usba10_ugen
/usr/sbin/add_drv -i '"usb46d,c603" "usb46d,c621" "usb46d,c623" "usb46d,c625" "usb46d,c626" "usb46d,c627" "usb46d,c628" "usb46d,c629"' usba10_ugen
fi
cp $SOLARIS_TAR_GZ $TMP
cd $TMP
gzip -d $TMP/$SOLARIS_TAR_GZ
tar -oxf $TMP/$SOLARIS_TAR
fi
if [ "$1" = "linux" ]
then
cp $LINUX_TAR_GZ $TMP
cd $TMP
tar -oxzf $TMP/$LINUX_TAR_GZ
fi
cp -R $TMP/etc/* /etc
rm -rf $TMP/etc $TMP/InstallationInstructions_*_1-5-2.txt
# convert old configs to new V5.3 config format
$ECHO ""
$ECHO ""
$ECHO "Converting default configs V5.x to V5.3."
$ECHO "(User configs will be converted when used)"
$ECHO "Please wait a moment..."
/etc/3DxWare/daemon/3dxsrv -convertConfigs
# the end
$ECHO ""
$ECHO "Done."
}
# ************************************************************************
# * DisplayUsage
# ************************************************************************
DisplayUsage ()
{
$ECHO ""
$ECHO ""
$ECHO "****************************************************************"
$ECHO ""
$ECHO " For testing purposes you can find the demos"
$ECHO " xcube and xvalues at $TMP"
$ECHO ""
$ECHO "****************************************************************"
$ECHO ""
$ECHO ""
}
# ************************************************************************
# * DisplayMenu
# ************************************************************************
DisplayMenu ()
{
$ECHO ""
$ECHO " Choose one of the following platforms:"
$ECHO ""
$ECHO " 1. HP-UX"
$ECHO " 2. Solaris"
$ECHO " 3. AIX 5"
$ECHO " 4. Linux"
$ECHO " 5. Exit"
$ECHO ""
$ECHO "Please enter your choice (1-5)[$DEFAULT_CHOICE]: "
}
# ************************************************************************
# * DisplayPortChoice1
# ************************************************************************
DisplayPortChoice1 ()
{
$ECHO ""
$ECHO "To which port is the device attached?"
}
# ************************************************************************
# * DisplayPortChoice2
# ************************************************************************
DisplayPortChoice2 ()
{
$ECHO " 3. Exit installation"
$ECHO ""
$ECHO "Please enter your choice (1 - 3): [1]"
$ECHO ""
read PORT
$ECHO ""
if [ -z "$PORT" ]
then
PORT=1
fi
}
# ************************************************************************
# * DisplayStartinittabInstallation
# ************************************************************************
DisplayStartInittabInstallation ()
{
$ECHO "Installing start from /etc/inittab ..."
}
# ************************************************************************
# * DisplayEndinittabInstallation
# ************************************************************************
DisplayEndInittabInstallation ()
{
DEVICE=3
PORT=3
`$INIT_Q`
$ECHO ""
$ECHO ""
$ECHO "Done."
$ECHO ""
}
# ************************************************************************
# * InstallSerialToInittab
# ************************************************************************
InstallSerialToInittab ()
{
until [ "$PORT" = "3" ]
do
DisplayPortChoice1
$ECHO " 1. $1"
$ECHO " 2. $2"
DisplayPortChoice2
if [ "$PORT" = "1" ]
then
DisplayStartInittabInstallation
if [ "$PLATFORM" = "4" ]
then
$ECHO "3d:2345:respawn:/etc/3DxWare/daemon/3dxsrv -d $1 </dev/null >/dev/null 2>&1" >> /etc/inittab
else
$ECHO "3d:234:respawn:/etc/3DxWare/daemon/3dxsrv -d $1 </dev/null >/dev/null 2>&1" >> /etc/inittab
fi
DisplayEndInittabInstallation
else
if [ "$PORT" = "2" ]
then
DisplayStartInittabInstallation
if [ "$PLATFORM" = "4" ]
then
$ECHO "3d:2345:respawn:/etc/3DxWare/daemon/3dxsrv -d $2 </dev/null >/dev/null 2>&1" >> /etc/inittab
else
$ECHO "3d:234:respawn:/etc/3DxWare/daemon/3dxsrv -d $2 </dev/null >/dev/null 2>&1" >> /etc/inittab
fi
DisplayEndInittabInstallation
else
if [ "$PORT" = "3" ]
then
DEVICE=3
else
$ECHO ""
$ECHO "Invalid response."
PORT=0
fi
fi
fi
done
}
# ************************************************************************
# * InstallToInittab
# ************************************************************************
InstallToInittab ()
{
until [ "$DEVICE" = "3" ]
do
$ECHO ""
$ECHO "Do you have a serial device or a USB device?"
$ECHO ""
$ECHO " 1. USB device"
$ECHO " 2. serial device"
$ECHO " 3. Exit installation"
$ECHO ""
$ECHO "Please enter your choice (1 - 3): [1]"
$ECHO ""
read DEVICE
$ECHO ""
if [ -z "$DEVICE" ]
then
DEVICE=1
fi
$ECHO ""
if [ "$DEVICE" = "1" ]
then
DisplayStartInittabInstallation
if [ "$PLATFORM" = "4" ]
then
$ECHO "3d:2345:respawn:/etc/3DxWare/daemon/3dxsrv -d usb </dev/null >/dev/null 2>&1" >> /etc/inittab
else
$ECHO "3d:234:respawn:/etc/3DxWare/daemon/3dxsrv -d usb </dev/null >/dev/null 2>&1" >> /etc/inittab
fi
DisplayEndInittabInstallation
else
if [ "$DEVICE" = "2" ]
then
case $PLATFORM in
1)
InstallSerialToInittab "/dev/tty0p0" "/dev/tty1p0"
;;
2)
InstallSerialToInittab "/dev/term/a" "/dev/term/b"
;;
3)
InstallSerialToInittab "/dev/tty0" "/dev/tty1"
;;
4)
InstallSerialToInittab "/dev/ttyS0" "/dev/ttyS1"
;;
esac
else
if [ "$DEVICE" = "3" ]
then
PORT=3
else
$ECHO "Invalid response."
$ECHO ""
DEVICE=0
fi
fi
fi
done
}
#*************************************************************************
# Main Body
#*************************************************************************
# cd to script directory
cd `$ECHO $0 | sed -e 's/install-3dxunix.sh//g'`
# check to see if installing user is root
id | grep "uid=[0-9](" >/dev/null
if [ $? -ne 0 ] ; then
CLEAR
$ECHO "Please login as root and start the installation again!!"
FatalError
fi
# check to see if the user is installing on this machine
CLEAR
DONE=0
while [ "$DONE" -eq 0 ] ; do
$ECHO "This installs 3DxWareUnix V1.5.2 on this machine. Continue? (y/n) [y]"
read ANSWER
$ECHO ""
case "$ANSWER" in
y | Y | "")
DONE=1
;;
n | N)
NormalError
;;
q | Q)
NormalError
;;
*)
$ECHO "Invalid Response."
;;
esac
done
if [ `$UNAME` = "HP-UX" ]
then
DEFAULT_CHOICE=1
fi
if [ `$UNAME` = "AIX" ]
then
DEFAULT_CHOICE=3
fi
if [ `$UNAME` = "SunOS" ]
then
DEFAULT_CHOICE=2
fi
if [ `$UNAME` = "Linux" ]
then
DEFAULT_CHOICE=4
fi
until [ "$CHOICE" = "5" ]
do
DisplayMenu
read CHOICE
$ECHO ""
if [ -z "$CHOICE" ]
then
CHOICE=$DEFAULT_CHOICE
fi
PLATFORM=0
$ECHO ""
case $CHOICE in
1)
Install3DxWare "hpux"
PLATFORM=1
CHOICE=5
;;
2)
Install3DxWare "solaris"
PLATFORM=2
CHOICE=5
;;
3)
Install3DxWare "aix"
PLATFORM=3
CHOICE=5
;;
4)
Install3DxWare "linux"
PLATFORM=4
CHOICE=5
;;
5)
NormalError
;;
*)
$ECHO "Invalid Response."
;;
esac
done
$ECHO ""
DONE=0
while [ "$DONE" -eq 0 ] ; do
$ECHO "Do you want 3DxWareUnix being started with every login (from the /etc/inittab)? (y/n) [y]"
read INITTABOPTION
$ECHO ""
case "$INITTABOPTION" in
y | Y | "")
InstallToInittab
DONE=1
;;
n | N )
$ECHO "Please start the driver manually. [/etc/3DxWare/daemon/3dxsrv -d <port>]"
$ECHO ""
DONE=1
;;
*)
$ECHO "Invalid Response."
;;
esac
done
DisplayUsage
exit 0Could anyone give me a hint as to what to with this info. What should I put into the PKGBUILD?
Last edited by UFOKatarn (2011-04-21 22:03:19)
Offline
These are the dependencies required :
xorg-fonts-100dpi
xorg-fonts-75dpi
- the install script is 1 of those interactive gui things that requires user input, those are very hard to automate for use in a pkgbuild.
you may be able to use an answerfile to give the script the necessary input if all answers are known before installang it.
- the install script changes inittab , which requires root rights and is tricky
if you disable this part, you still are stuck with the manual commands to start the devices.
The best way to solve this would be to provide a rc.d daemon script that takes care of starting / stopping the devices.
- there doesn't seem to be a parameter to change the install location, and i think the tmp folder is cleared at boot
These are only a few of the issues i see with making a package for this, it will definitely be a lot of work.
Last edited by Lone_Wolf (2011-04-22 18:53:21)
Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.
clean chroot building not flexible enough ?
Try clean chroot manager by graysky
Offline
Dear Lone Wolf
!
Thank you for the information.
Since I understand only about 1/4 of the instructions that you provided, I can only hope that someone who is a bit more skilled and at the same time in need of this package decides to write the PKGBUILD.
Regards and happy holidays,
UFOKatarn
Offline