Kernel module and X driver for various Wacom tablet devices.
Bartosz Fabianowski has decided to add version numbers to the distfile, so here is the updated shar archive. # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # ports/x11-drivers/xf86-input-wacom # ports/x11-drivers/xf86-input-wacom/Makefile # ports/x11-drivers/xf86-input-wacom/distinfo # ports/x11-drivers/xf86-input-wacom/pkg-descr # ports/x11-drivers/xf86-input-wacom/files # ports/x11-drivers/xf86-input-wacom/files/wacom.in # ports/x11-drivers/xf86-input-wacom/pkg-plist # ports/x11-drivers/xf86-input-wacom/pkg-message # echo c - ports/x11-drivers/xf86-input-wacom mkdir -p ports/x11-drivers/xf86-input-wacom > /dev/null 2>&1 echo x - ports/x11-drivers/xf86-input-wacom/Makefile sed 's/^X//' >ports/x11-drivers/xf86-input-wacom/Makefile << '2c8ac90824175dfffa7ed05f34e7748e' X# New ports collection makefile for: xf86-input-wacom X# Date Created: 24 Oct 2008 X# Whom: Dominic Fandrey <kamikaze@bsdforen.de> X# X# $FreeBSD$ X# X XPORTNAME= xf86-input-wacom XPORTVERSION= ${WACOM_VERSION:C/-/./g}.${KLD_VERSION} XCATEGORIES= x11-drivers kld XMASTER_SITES= http://www.chillt.de/bsdwacom/ \ X ${MASTER_SITE_SOURCEFORGE} XMASTER_SITE_SUBDIR= linuxwacom XDISTFILES= ${BSDWACOM}.tbz \ X ${LINUXWACOM}.tar.bz2 XEXTRACT_ONLY= ${BSDWACOM}.tbz X XMAINTAINER= kamikaze@bsdforen.de XCOMMENT= X.Org Wacom tablet driver and kernel module X XMAN4= wacom.4x XMANCOMPRESSED= yes X XUSE_GMAKE= yes XUSE_RC_SUBR= wacom X XPLIST_SUB= DESTDIR=${DESTDIR} X XXORG_CAT= driver X XLINUXWACOM= linuxwacom-${WACOM_VERSION} XBSDWACOM= bsdwacom-${KLD_VERSION} XWACOM_VERSION= 0.8.1-3 XKLD_VERSION= 35 X Xdo-configure: X @cd ${WRKDIR}/linuxwacom \ X && ${LN} -s ${DISTDIR}/${LINUXWACOM}.tar.bz2 \ X && ./run_configure X Xdo-build: X @cd ${WRKDIR}/uwacom \ X && ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_ARGS} X @cd ${WRKDIR}/linuxwacom/${LINUXWACOM} \ X && ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_ARGS} X Xdo-install: X @${INSTALL} ${WRKDIR}/uwacom/uwacom.ko ${DESTDIR}/boot/modules/ X @${INSTALL} ${WRKDIR}/linuxwacom/${LINUXWACOM}/src/xdrv/wacom_drv.so \ X ${PREFIX}/lib/xorg/modules/input/ X @${INSTALL_MAN} ${WRKDIR}/linuxwacom/${LINUXWACOM}/src/wacom.4x.gz \ X ${PREFIX}/man/man4/ X Xpost-install: X @${CAT} ${PKGMESSAGE} X X.include <bsd.port.mk> 2c8ac90824175dfffa7ed05f34e7748e echo x - ports/x11-drivers/xf86-input-wacom/distinfo sed 's/^X//' >ports/x11-drivers/xf86-input-wacom/distinfo << 'f0832b4922279a28a93db1930c3afee1' XMD5 (xorg/driver/bsdwacom-35.tbz) = 94cb1823723dc7f260c4cf385941f9bd XSHA256 (xorg/driver/bsdwacom-35.tbz) = b2697c87d55976ea52acbd1d2296b9d066b702dba7b1cd264c4799e43aa4104b XSIZE (xorg/driver/bsdwacom-35.tbz) = 19951 XMD5 (xorg/driver/linuxwacom-0.8.1-3.tar.bz2) = d09b212946e321cc503adf84e243ca99 XSHA256 (xorg/driver/linuxwacom-0.8.1-3.tar.bz2) = cf1ac159d87666d16e2e3bfad81ede93e088b3bf64bb6d2d469adceb2a4c9dee XSIZE (xorg/driver/linuxwacom-0.8.1-3.tar.bz2) = 1209228 f0832b4922279a28a93db1930c3afee1 echo x - ports/x11-drivers/xf86-input-wacom/pkg-descr sed 's/^X//' >ports/x11-drivers/xf86-input-wacom/pkg-descr << '8458a9ec0fb3bb01a24dd1346d561afd' XThis package contains the X.Org linuxwacom driver, a Wacom kernel module Xand a script to configure Xorg. X XThe kernel module is provided by Bartosz Fabianowski <freebsd@chillt.de> and Xsupports the following devices: X Graphire*, Graphire2*, Graphire3, Graphire4 X Bamboo, Bamboo One*, Bamboo Fun X Intuos3, Cintiq 21UX X Volito*, Volito2* X PenStation2*, PenPartner2* X X* not tested X XWWW: http://linuxwacom.sourceforge.net/ X X- Kamikaze Xkamikaze@bsdforen.de 8458a9ec0fb3bb01a24dd1346d561afd echo c - ports/x11-drivers/xf86-input-wacom/files mkdir -p ports/x11-drivers/xf86-input-wacom/files > /dev/null 2>&1 echo x - ports/x11-drivers/xf86-input-wacom/files/wacom.in sed 's/^X//' >ports/x11-drivers/xf86-input-wacom/files/wacom.in << 'd5245a860ec402b4007475b181b81e43' X#!/bin/sh X X# PROVIDE: wacom X# REQUIRE: FILESYSTEMS X# X# Add the following lines to /etc/rc.conf.local or /etc/rc.conf X# to enable this service: X# X# wacom_enable (bool): Set to NO by default. X# Set it to YES to enable wacom. X# X X. %%RC_SUBR%% X Xname="wacom" Xrcvar=${name}_enable X Xextra_commands=setup Xsetup_cmd=do_setup Xstart_cmd=do_start Xstop_cmd=do_stop X X# X# Inserts a line at the end of a section of an Xorg configuration file. X# Only works for unique sections. X# Xsection_insert_line() { X local file section insert begin end length X file="$1" X section="$2" X insert="$3" X X # Find the beginning of the section. X begin="$( X /usr/bin/grep -Ein \ X "^[[:space:]]*Section[[:space:]]+\"$section\"" \ X "$file" X )" X begin="${begin%%:*}" X X if ! [ "$begin" -eq "$begin" ]; then X # Begin is not numeric, something is wrong, bail out. X echo "Identifying section $section has failed." X echo "The section has to appear exactly once." X return 1 X fi X X # Find the end of the section. X for end in $(/usr/bin/grep -Ein "^[[:space:]]*EndSection" "$file"); { X end="${end%%:*}" X test "$end" -gt "$begin" && break X } X X if ! [ "$end" -gt "$begin" ]; then X echo "The section $section is not closed." X return 2 X fi X X # Determine the length of the configuration file. X length="$(/usr/bin/wc -l "$file")" X length=${length% *} X X # Insert the line. X /bin/cp "$file" "$file.$$" X X /usr/bin/head -n$(($end - 1)) "$file.$$" > "$file" X echo "$insert" >> "$file" X /usr/bin/tail -n$(($length - $end + 1)) "$file.$$" >> "$file" X X /bin/rm "$file.$$" X} X X# X# Adds the necessary lines to the Xorg configuration. X# Xdo_setup() { X local config_locations config X X # Possible Xorg configuration file locations, taken from the X # xorg.conf(5) manual page. X config_locations=" X/etc/X11/$XORGCONFIG X/usr/local/etc/X11/$XORGCONFIG X/etc/X11/xorg.conf-4 X/etc/X11/xorg.conf X/etc/xorg.conf X/usr/local/etc/X11/xorg.conf.$HOST X/usr/local/etc/X11/xorg.conf-4 X/usr/local/etc/X11/xorg.conf X/usr/local/lib/X11/xorg.conf.$HOST X/usr/local/lib/X11/xorg.conf-4 X/usr/local/lib/X11/xorg.conf XNONE X" X X # Find the first matching config file. X for config in $config_locations; { X test -f "$config" && break X } X X if [ "$config" = "NONE" ]; then X echo "No Xorg configuration has been found." X return 1 X fi X X echo "Setting up configuration in $config." X X # Add all the necessary sections. X for ident in stylus eraser cursor pad touch; { X if /usr/bin/grep -Eqi "^[[:space:]]*Identifier[[:space:]]+\"$ident\"" "$config"; then X echo "Skipping $ident, because it already exists in $config." X continue X fi X X echo "Inserting $ident." X X echo " XSection \"InputDevice\" X Driver \"wacom\" X Identifier \"$ident\" X Option \"Device\" \"/dev/event0\" X Option \"Type\" \"$ident\" X Option \"USB\" \"on\" XEndSection X" >> "$config" X X section_insert_line "$config" "ServerLayout" " InputDevice \"$ident\" \"SendCoreEvents\"" X } X X} X Xdo_start() { X if /sbin/kldstat | /usr/bin/grep -q uwacom; then X echo "${name} is already running." X return 0 X fi X echo "Starting ${name}." X /sbin/kldload uwacom X} X Xdo_stop() { X if ! /sbin/kldstat | /usr/bin/grep -q uwacom; then X echo "${name} is not running." X return 0 X fi X echo "Stopping ${name}." X /sbin/kldunload uwacom X} X Xload_rc_config $name X X: ${wacom_enable="NO"} X Xrun_rc_command "$1" d5245a860ec402b4007475b181b81e43 echo x - ports/x11-drivers/xf86-input-wacom/pkg-plist sed 's/^X//' >ports/x11-drivers/xf86-input-wacom/pkg-plist << 'c8e8f39ea9b008a2398c7c41a43d661a' Xlib/xorg/modules/input/wacom_drv.so X@cwd %%DESTDIR%%/ Xboot/modules/uwacom.ko c8e8f39ea9b008a2398c7c41a43d661a echo x - ports/x11-drivers/xf86-input-wacom/pkg-message sed 's/^X//' >ports/x11-drivers/xf86-input-wacom/pkg-message << 'e91b20850a8d72e042364d9f88e71619' XTo setup the wacom driver for X and start the kernel module upon boot Xrun the following commands as the root user: X X# echo 'wacom_enable="YES"' >> /etc/rc.conf X# /usr/local/etc/rc.d/wacom setup X XTo activate the driver without rebooting run: X X# /usr/local/etc/rc.d/wacom start X XNow (re)plug in your tablet and restart X. e91b20850a8d72e042364d9f88e71619 exit
Responsible Changed From-To: freebsd-ports-bugs->pgj Over to me. I have a USB Wacom Bamboo, and I already know the author, so I can even test it. I would like to get it reviewed and commit if it is okay.
OK, some issues have been sent to me and I think I have finally solved them. 1) The linuxwacom distfile location when creating a link is now assumed correctly. It appears the file was residing in several places under my /usr/ports/distfiles, which made me overlook the error. 2) The rc-script now provides a cleanup routine to remove the configuration changes made by setup. I hope this solves it all. # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # ports/x11-drivers/xf86-input-wacom/ # ports/x11-drivers/xf86-input-wacom/Makefile # ports/x11-drivers/xf86-input-wacom/distinfo # ports/x11-drivers/xf86-input-wacom/pkg-descr # ports/x11-drivers/xf86-input-wacom/files # ports/x11-drivers/xf86-input-wacom/files/wacom.in # ports/x11-drivers/xf86-input-wacom/pkg-plist # ports/x11-drivers/xf86-input-wacom/pkg-message # echo c - ports/x11-drivers/xf86-input-wacom/ mkdir -p ports/x11-drivers/xf86-input-wacom/ > /dev/null 2>&1 echo x - ports/x11-drivers/xf86-input-wacom/Makefile sed 's/^X//' >ports/x11-drivers/xf86-input-wacom/Makefile << '2c8ac90824175dfffa7ed05f34e7748e' X# New ports collection makefile for: xf86-input-wacom X# Date Created: 24 Oct 2008 X# Whom: Dominic Fandrey <kamikaze@bsdforen.de> X# X# $FreeBSD$ X# X XPORTNAME= xf86-input-wacom XPORTVERSION= ${WACOM_VERSION:C/-/./g}.${KLD_VERSION} XCATEGORIES= x11-drivers kld XMASTER_SITES= http://www.chillt.de/bsdwacom/ \ X ${MASTER_SITE_SOURCEFORGE} XMASTER_SITE_SUBDIR= linuxwacom XDISTFILES= ${BSDWACOM}.tbz \ X ${LINUXWACOM}.tar.bz2 XEXTRACT_ONLY= ${BSDWACOM}.tbz X XMAINTAINER= kamikaze@bsdforen.de XCOMMENT= X.Org Wacom tablet driver and kernel module X XMAN4= wacom.4x XMANCOMPRESSED= yes X XUSE_GMAKE= yes XUSE_RC_SUBR= wacom X XPLIST_SUB= DESTDIR=${DESTDIR} X XXORG_CAT= driver X XLINUXWACOM= linuxwacom-${WACOM_VERSION} XBSDWACOM= bsdwacom-${KLD_VERSION} XWACOM_VERSION= 0.8.1-3 XKLD_VERSION= 35 X Xdo-configure: X @cd ${WRKDIR}/linuxwacom \ X && ${LN} -s ${DISTDIR}/${DIST_SUBDIR}/${LINUXWACOM}.tar.bz2 \ X && ./run_configure X Xdo-build: X @cd ${WRKDIR}/uwacom \ X && ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_ARGS} X @cd ${WRKDIR}/linuxwacom/${LINUXWACOM} \ X && ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_ARGS} X Xdo-install: X @${INSTALL} ${WRKDIR}/uwacom/uwacom.ko ${DESTDIR}/boot/modules/ X @${INSTALL} ${WRKDIR}/linuxwacom/${LINUXWACOM}/src/xdrv/wacom_drv.so \ X ${PREFIX}/lib/xorg/modules/input/ X @${INSTALL_MAN} ${WRKDIR}/linuxwacom/${LINUXWACOM}/src/wacom.4x.gz \ X ${PREFIX}/man/man4/ X Xpost-install: X @${CAT} ${PKGMESSAGE} X X.include <bsd.port.mk> 2c8ac90824175dfffa7ed05f34e7748e echo x - ports/x11-drivers/xf86-input-wacom/distinfo sed 's/^X//' >ports/x11-drivers/xf86-input-wacom/distinfo << 'f0832b4922279a28a93db1930c3afee1' XMD5 (xorg/driver/bsdwacom-35.tbz) = 94cb1823723dc7f260c4cf385941f9bd XSHA256 (xorg/driver/bsdwacom-35.tbz) = b2697c87d55976ea52acbd1d2296b9d066b702dba7b1cd264c4799e43aa4104b XSIZE (xorg/driver/bsdwacom-35.tbz) = 19951 XMD5 (xorg/driver/linuxwacom-0.8.1-3.tar.bz2) = d09b212946e321cc503adf84e243ca99 XSHA256 (xorg/driver/linuxwacom-0.8.1-3.tar.bz2) = cf1ac159d87666d16e2e3bfad81ede93e088b3bf64bb6d2d469adceb2a4c9dee XSIZE (xorg/driver/linuxwacom-0.8.1-3.tar.bz2) = 1209228 f0832b4922279a28a93db1930c3afee1 echo x - ports/x11-drivers/xf86-input-wacom/pkg-descr sed 's/^X//' >ports/x11-drivers/xf86-input-wacom/pkg-descr << '8458a9ec0fb3bb01a24dd1346d561afd' XThis package contains the X.Org linuxwacom driver, a Wacom kernel module Xand a script to configure Xorg. X XThe kernel module is provided by Bartosz Fabianowski <freebsd@chillt.de> and Xsupports the following devices: X Graphire*, Graphire2*, Graphire3, Graphire4 X Bamboo, Bamboo One*, Bamboo Fun X Intuos3, Cintiq 21UX X Volito*, Volito2* X PenStation2*, PenPartner2* X X* not tested X XWWW: http://linuxwacom.sourceforge.net/ X X- Kamikaze Xkamikaze@bsdforen.de 8458a9ec0fb3bb01a24dd1346d561afd echo c - ports/x11-drivers/xf86-input-wacom/files mkdir -p ports/x11-drivers/xf86-input-wacom/files > /dev/null 2>&1 echo x - ports/x11-drivers/xf86-input-wacom/files/wacom.in sed 's/^X//' >ports/x11-drivers/xf86-input-wacom/files/wacom.in << 'd5245a860ec402b4007475b181b81e43' X#!/bin/sh X X# PROVIDE: wacom X# REQUIRE: FILESYSTEMS X# X# Add the following lines to /etc/rc.conf.local or /etc/rc.conf X# to enable this service: X# X# wacom_enable (bool): Set to NO by default. X# Set it to YES to enable wacom. X# X# This script additionally offers setup and cleanup to configure Xorg X# for use of the driver or remove the configuration settings. X# The input devices are only added to the first ServerLayout section X# and also only removed once. X# X X. %%RC_SUBR%% X Xname="wacom" Xrcvar=${name}_enable X Xextra_commands="setup cleanup" Xsetup_cmd=do_setup Xstart_cmd=do_start Xstop_cmd=do_stop Xcleanup_cmd=do_cleanup X X# X# Outputs the location of the Xorg configuration file. X# Returns 1 if no file could be found. X# Xget_xorg_conf() { X local config_locations config X X # Possible Xorg configuration file locations, taken from the X # xorg.conf(5) manual page. X config_locations=" X/etc/X11/$XORGCONFIG X/usr/local/etc/X11/$XORGCONFIG X/etc/X11/xorg.conf-4 X/etc/X11/xorg.conf X/etc/xorg.conf X/usr/local/etc/X11/xorg.conf.$HOST X/usr/local/etc/X11/xorg.conf-4 X/usr/local/etc/X11/xorg.conf X/usr/local/lib/X11/xorg.conf.$HOST X/usr/local/lib/X11/xorg.conf-4 X/usr/local/lib/X11/xorg.conf XNONE X" X X # Find the first matching config file. X for config in $config_locations; { X test -f "$config" && break X } X X if [ "$config" = "NONE" ]; then X echo "No Xorg configuration has been found." 1>&2 X return 1 X fi X X echo "$config" X return 0 X} X X# X# Returns the line number of the first line matching the extended regular X# expression $2 in the file $1. X# X# @param $1 X# The file to get the line number from. X# @param $2 X# An extend regular expression. X# @stdout X# The line number of the first line matching $2. X# Xget_first() { X local result IFS X IFS=' X' X result="$(/usr/bin/grep -Ein "$2" "$1")" X result="${result%%:*}" X X # No match. X if [ -z "$result" ]; then X return 1 X fi X X echo "$result" X return 0 X} X X# X# Returns the line number of the line before line number $2 that matches the X# extended regular expression $3 in the file $1. X# X# @param $1 X# The file to get the line number from. X# @param $2 X# The line before which the expression should match. X# @param $3 X# An extend regular expression. X# @stdout X# The line number of the first line before line $2 matching $3. X# Xget_before() { X local result IFS line length X IFS=' X' X X # The length is necessary to make sure the check is run once X # again for the last match. X length="$(/usr/bin/wc -l "$1")" X length=${length% *} X X result=-1 X for line in $(/usr/bin/grep -Ein "$3" "$1") $(($length + 1)); { X line="${line%%:*}" X X # We have passed the line to look for. X if [ $line -ge $2 ]; then X X # No match before this line. X if [ $result -lt 0 ]; then X return 1 X fi X X echo "$result" X return 0 X fi X X result=$line X } X X # No result. X return 1 X} X X# X# Returns the line number of the line behind line number $2 that matches the X# extended regular expression $3 in the file $1. X# X# @param $1 X# The file to get the line number from. X# @param $2 X# The line behind which the expression should match. X# @param $3 X# An extend regular expression. X# @stdout X# The line number of the first line behind line $2 matching $3. X# Xget_behind() { X local IFS line X IFS=' X' X X for line in $(/usr/bin/grep -Ein "$3" "$1"); { X line="${line%%:*}" X X # We have passed the line to look for. X if [ $line -gt $2 ]; then X echo "$line" X return 0 X fi X } X X # No result. X return 1 X} X X# X# Inserts a line at the end of a section of an Xorg configuration file. X# Only works for unique sections. X# Xsection_insert_line() { X local file section insert begin end length X file="$1" X section="$2" X insert="$3" X X # Find the beginning of the section. X begin="$(get_first "$file" \ X "^[[:space:]]*Section[[:space:]]+\"$section\"" \ X )" X X if [ -z "$begin" ]; then X echo "Identifying section $section has failed." 1>&2 X return 1 X fi X X # Find the end of the section. X end="$(get_behind "$file" "$begin" "^[[:space:]]*EndSection")" X X if [ -z "$end" ]; then X echo "The section $section is not closed." 1>&2 X return 2 X fi X X # Determine the length of the configuration file. X length="$(/usr/bin/wc -l "$file")" X length=${length% *} X X # Insert the line. X /bin/cp "$file" "$file.$$" X X /usr/bin/head -n$(($end - 1)) "$file.$$" > "$file" X echo "$insert" >> "$file" X /usr/bin/tail -n$(($length - $end + 1)) "$file.$$" >> "$file" X X /bin/rm "$file.$$" X} X X# X# Adds the necessary lines to the Xorg configuration. X# Xdo_setup() { X local config ident status X X # Get the Xorg configuration file. X config="$(get_xorg_conf)" X status=$? X test $status -ne 0 && return $status X X echo "Setting up configuration in $config." X X # Add all the necessary sections. X for ident in stylus eraser cursor pad touch; { X if /usr/bin/grep -Eqi "^[[:space:]]*Identifier[[:space:]]+\"$ident\"" "$config"; then X echo "Skipping $ident, because it already exists in $config." X continue X fi X X echo "Inserting $ident." X X echo "Section \"InputDevice\" X Driver \"wacom\" X Identifier \"$ident\" X Option \"Device\" \"/dev/event0\" X Option \"Type\" \"$ident\" X Option \"USB\" \"on\" XEndSection X" >> "$config" X X section_insert_line "$config" "ServerLayout" " InputDevice \"$ident\" \"SendCoreEvents\"" X } X X} X X# X# Removes all wacom stuff from the Xorg configuration file. Beware, X# this also affects handwritten content. X# Xdo_cleanup() { X local config status driver i begin last_begin end length ident IFS X X # Get the Xorg configuration file. X config="$(get_xorg_conf)" X status=$? X test $status -ne 0 && return $status X X echo "Removing wacom entries from $config." X X IFS=' X' X while true; do X # Find a wacom section. X driver="$(get_first "$config" \ X "^[[:space:]]*Driver[[:space:]]+\"wacom\"" \ X )" X X # Not a numeric, no more wacom sections left. X test -z "$driver" && break X X # Find the beginning of the section. X begin="$(get_before "$config" "$driver" \ X "^[[:space:]]*Section[[:space:]]+\"InputDevice\"" \ X )" X X if [ -z "$begin" ]; then X echo "Beginning of wacom driver section" \ X "could not be found!" 1>&2 X return 1 X fi X X # Find the end of the section. X end="$(get_behind "$config" "$driver" \ X "^[[:space:]]*EndSection" \ X )" X X if [ -z "$end" ]; then X echo "The Wacom driver section is" \ X "not closed properly." 1>&2 X return 2 X fi X X # Determine the length of the configuration file. X length="$(/usr/bin/wc -l "$config")" X length=${length% *} X X # Adjust the end by trailing newlines. X while [ $end -lt $length -a \ X -z "$(/usr/bin/tail -n$(($length - $end)) "$config" \ X | /usr/bin/head -n1)" ]; do X end=$(($end + 1)) X done X X # Remove the section. X /bin/cp "$config" "$config.$$" X X /usr/bin/head -n$(($begin - 1)) "$config.$$" > "$config" X /usr/bin/tail -n$(($length - $end)) "$config.$$" >> "$config" X X /bin/rm "$config.$$" X done X IFS=' X' X X echo "Cleaning up ServerLayout section." X X for ident in stylus eraser cursor pad touch; { X driver="$(get_first "$config" \ X "[[:space:]]*InputDevice[[:space:]]+\"$ident\"" \ X )" X X # There is no line matching this driver. X test -z "$driver" && continue X X # Determine the length of the configuration file. X length="$(/usr/bin/wc -l "$config")" X length=${length% *} X X # Remove the section. X /bin/cp "$config" "$config.$$" X X /usr/bin/head -n$(($driver - 1)) "$config.$$" > "$config" X /usr/bin/tail -n$(($length - $driver)) "$config.$$" >> "$config" X X /bin/rm "$config.$$" X } X} X Xdo_start() { X if /sbin/kldstat | /usr/bin/grep -q uwacom; then X echo "${name} is already running." X return 0 X fi X echo "Starting ${name}." X /sbin/kldload uwacom X} X Xdo_stop() { X if ! /sbin/kldstat | /usr/bin/grep -q uwacom; then X echo "${name} is not running." X return 0 X fi X echo "Stopping ${name}." X /sbin/kldunload uwacom X} X Xload_rc_config $name X X: ${wacom_enable="NO"} X Xrun_rc_command "$1" d5245a860ec402b4007475b181b81e43 echo x - ports/x11-drivers/xf86-input-wacom/pkg-plist sed 's/^X//' >ports/x11-drivers/xf86-input-wacom/pkg-plist << 'c8e8f39ea9b008a2398c7c41a43d661a' Xlib/xorg/modules/input/wacom_drv.so X@cwd %%DESTDIR%%/ Xboot/modules/uwacom.ko c8e8f39ea9b008a2398c7c41a43d661a echo x - ports/x11-drivers/xf86-input-wacom/pkg-message sed 's/^X//' >ports/x11-drivers/xf86-input-wacom/pkg-message << 'e91b20850a8d72e042364d9f88e71619' XTo setup the wacom driver for X and start the kernel module upon boot Xrun the following commands as the root user: X X# echo 'wacom_enable="YES"' >> /etc/rc.conf X# /usr/local/etc/rc.d/wacom setup X XYou can clean up the Xorg configuration by running the following line: X# /usr/local/etc/rc.d/wacom cleanup X XTo activate the driver without rebooting run: X X# /usr/local/etc/rc.d/wacom start X XNow (re)plug in your tablet and restart X. e91b20850a8d72e042364d9f88e71619 exit
Apart from the the location of the kernel module I have acted upon all feedback to the current state. I even added the wacom utils as requested on the ports mailing list. Portlint issues some warnings, 2 are false positives and one is the use of an absolute path for the kernel module. No one has yet managed to convince me that /boot/modules is the wrong place, though. I keep my thumbs pressed. # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # /usr/ports/x11-drivers/xf86-input-wacom/ # /usr/ports/x11-drivers/xf86-input-wacom/Makefile # /usr/ports/x11-drivers/xf86-input-wacom/distinfo # /usr/ports/x11-drivers/xf86-input-wacom/pkg-descr # /usr/ports/x11-drivers/xf86-input-wacom/files # /usr/ports/x11-drivers/xf86-input-wacom/files/wacom.in # /usr/ports/x11-drivers/xf86-input-wacom/pkg-plist # /usr/ports/x11-drivers/xf86-input-wacom/pkg-message # echo c - /usr/ports/x11-drivers/xf86-input-wacom/ mkdir -p /usr/ports/x11-drivers/xf86-input-wacom/ > /dev/null 2>&1 echo x - /usr/ports/x11-drivers/xf86-input-wacom/Makefile sed 's/^X//' >/usr/ports/x11-drivers/xf86-input-wacom/Makefile << '7ceca2681ca15c1bd68e90ce420a5266' X# New ports collection makefile for: xf86-input-wacom X# Date Created: 24 Oct 2008 X# Whom: Dominic Fandrey <kamikaze@bsdforen.de> X# X# $FreeBSD$ X# X XPORTNAME= xf86-input-wacom XPORTVERSION= ${WACOM_VERSION:C/-/./g}.${KLD_VERSION} XCATEGORIES= x11-drivers kld XMASTER_SITES= http://www.chillt.de/bsdwacom/ \ X ${MASTER_SITE_SOURCEFORGE} XMASTER_SITE_SUBDIR= linuxwacom XDISTFILES= ${BSDWACOM}.tbz \ X ${LINUXWACOM}.tar.bz2 XEXTRACT_ONLY= ${BSDWACOM}.tbz X XMAINTAINER= kamikaze@bsdforen.de XCOMMENT= X.Org Wacom tablet driver and kernel module X XMAN4= wacom.4x XMANCOMPRESSED= yes X XUSE_GMAKE= yes XUSE_RC_SUBR= wacom X XKMODDIR?= /boot/modules XXINPUTMODDIR= lib/xorg/modules/input XMAN4DIR= man/man4 XWRKSRC= ${WRKDIR} X XPLIST_SUB= KMODDIR=${KMODDIR} \ X XINPUTMODDIR=${XINPUTMODDIR} X XXORG_CAT= driver X XLINUXWACOM= linuxwacom-${WACOM_VERSION} XBSDWACOM= bsdwacom-${KLD_VERSION} XWACOM_VERSION= 0.8.1-3 XKLD_VERSION= 35 X Xdo-configure: X @cd ${WRKDIR}/linuxwacom \ X && ${LN} -s ${DISTDIR}/${DIST_SUBDIR}/${LINUXWACOM}.tar.bz2 \ X && ./run_configure X Xdo-build: X @cd ${WRKDIR}/uwacom \ X && ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_ARGS} X @cd ${WRKDIR}/linuxwacom/${LINUXWACOM} \ X && ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_ARGS} X Xdo-install: X @cd ${WRKDIR}/linuxwacom/${LINUXWACOM}/src/util/ \ X && ${GMAKE} install X @${INSTALL_KLD} ${WRKDIR}/uwacom/uwacom.ko ${KMODDIR}/ X @${INSTALL} ${WRKDIR}/linuxwacom/${LINUXWACOM}/src/xdrv/wacom_drv.so \ X ${PREFIX}/${XINPUTMODDIR}/ X @${INSTALL_MAN} ${WRKDIR}/linuxwacom/${LINUXWACOM}/src/wacom.4x.gz \ X ${PREFIX}/${MAN4DIR}/ X Xplist: clean configure X @${ECHO} "===> Rebuilding PLIST." X @${TOUCH} ${PLIST} X @${RM} ${PLIST} X @cd ${WRKDIR}/linuxwacom/${LINUXWACOM} \ X && ./configure --prefix=${WRKDIR}/plist X @${MKDIR} ${WRKDIR}/plist X @cd ${WRKDIR}/linuxwacom/${LINUXWACOM}/src/util && ${GMAKE} install X @cd ${WRKDIR}/linuxwacom \ X && ./run_configure X @${FIND} ${WRKDIR}/plist/ -not -type d \ X | ${SED} "s|${WRKDIR}/plist/||1" \ X >> ${PLIST} X @${FIND} -d ${WRKDIR}/plist/ -mindepth 2 -type d \ X | ${SED} "s|${WRKDIR}/plist/|@dirrm |1" \ X >> ${PLIST} X @${ECHO} "%%XINPUTMODDIR%%/wacom_drv.so" >> ${PLIST} X @${ECHO} "@cwd %%KMODDIR%%" >> ${PLIST} X @${ECHO} "uwacom.ko" >> ${PLIST} X Xpost-install: X @${ECHO} "===> Displaying pkg-message." X @${CAT} ${PKGMESSAGE} X X.include <bsd.port.mk> 7ceca2681ca15c1bd68e90ce420a5266 echo x - /usr/ports/x11-drivers/xf86-input-wacom/distinfo sed 's/^X//' >/usr/ports/x11-drivers/xf86-input-wacom/distinfo << 'e9ccf5afb8eaff4a40a0b6c9d8afe7bf' XMD5 (xorg/driver/bsdwacom-35.tbz) = 94cb1823723dc7f260c4cf385941f9bd XSHA256 (xorg/driver/bsdwacom-35.tbz) = b2697c87d55976ea52acbd1d2296b9d066b702dba7b1cd264c4799e43aa4104b XSIZE (xorg/driver/bsdwacom-35.tbz) = 19951 XMD5 (xorg/driver/linuxwacom-0.8.1-3.tar.bz2) = d09b212946e321cc503adf84e243ca99 XSHA256 (xorg/driver/linuxwacom-0.8.1-3.tar.bz2) = cf1ac159d87666d16e2e3bfad81ede93e088b3bf64bb6d2d469adceb2a4c9dee XSIZE (xorg/driver/linuxwacom-0.8.1-3.tar.bz2) = 1209228 e9ccf5afb8eaff4a40a0b6c9d8afe7bf echo x - /usr/ports/x11-drivers/xf86-input-wacom/pkg-descr sed 's/^X//' >/usr/ports/x11-drivers/xf86-input-wacom/pkg-descr << '254051eee0d9b52c968d1bc2c0ad939d' XThis package contains the X.Org linuxwacom driver, a Wacom kernel module Xand a script to configure Xorg. X XThe kernel module is provided by Bartosz Fabianowski <freebsd@chillt.de> and Xsupports the following devices: X Graphire*, Graphire2*, Graphire3, Graphire4 X Bamboo, Bamboo One*, Bamboo Fun X Intuos3, Cintiq 21UX X Volito*, Volito2* X PenStation2*, PenPartner2* X X* not tested X XWWW: http://linuxwacom.sourceforge.net/ X X- Kamikaze Xkamikaze@bsdforen.de 254051eee0d9b52c968d1bc2c0ad939d echo c - /usr/ports/x11-drivers/xf86-input-wacom/files mkdir -p /usr/ports/x11-drivers/xf86-input-wacom/files > /dev/null 2>&1 echo x - /usr/ports/x11-drivers/xf86-input-wacom/files/wacom.in sed 's/^X//' >/usr/ports/x11-drivers/xf86-input-wacom/files/wacom.in << 'a7eaa6ebd329bbf5eb75964068792c2f' X#!/bin/sh X X# PROVIDE: wacom X# REQUIRE: FILESYSTEMS X# X# Add the following lines to /etc/rc.conf.local or /etc/rc.conf X# to enable this service: X# X# wacom_enable (bool): Set to NO by default. X# Set it to YES to enable wacom. X# X# This script additionally offers setup and cleanup to configure Xorg X# for use of the driver or remove the configuration settings. X# The input devices are only added to the first ServerLayout section X# and also only removed once. X# X X. %%RC_SUBR%% X Xname="wacom" Xrcvar=${name}_enable X Xextra_commands="setup cleanup" Xsetup_cmd=do_setup Xstart_cmd=do_start Xstop_cmd=do_stop Xcleanup_cmd=do_cleanup X X# X# Outputs the location of the Xorg configuration file. X# Returns 1 if no file could be found. X# Xget_xorg_conf() { X local config_locations config X X # Possible Xorg configuration file locations, taken from the X # xorg.conf(5) manual page. X config_locations=" X/etc/X11/$XORGCONFIG X%%PREFIX%%/etc/X11/$XORGCONFIG X/etc/X11/xorg.conf-4 X/etc/X11/xorg.conf X/etc/xorg.conf X%%PREFIX%%/etc/X11/xorg.conf.$HOST X%%PREFIX%%/etc/X11/xorg.conf-4 X%%PREFIX%%/etc/X11/xorg.conf X%%PREFIX%%/lib/X11/xorg.conf.$HOST X%%PREFIX%%/lib/X11/xorg.conf-4 X%%PREFIX%%/lib/X11/xorg.conf XNONE X" X X # Find the first matching config file. X for config in $config_locations; { X test -f "$config" && break X } X X if [ "$config" = "NONE" ]; then X echo "No Xorg configuration has been found." 1>&2 X return 1 X fi X X echo "$config" X return 0 X} X X# X# Returns the line number of the first line matching the extended regular X# expression $2 in the file $1. X# X# @param $1 X# The file to get the line number from. X# @param $2 X# An extend regular expression. X# @stdout X# The line number of the first line matching $2. X# Xget_first() { X local result IFS X IFS=' X' X result="$(/usr/bin/grep -Ein "$2" "$1")" X result="${result%%:*}" X X # No match. X if [ -z "$result" ]; then X return 1 X fi X X echo "$result" X return 0 X} X X# X# Returns the line number of the line before line number $2 that matches the X# extended regular expression $3 in the file $1. X# X# @param $1 X# The file to get the line number from. X# @param $2 X# The line before which the expression should match. X# @param $3 X# An extend regular expression. X# @stdout X# The line number of the first line before line $2 matching $3. X# Xget_before() { X local result IFS line length X IFS=' X' X X # The length is necessary to make sure the check is run once X # again for the last match. X length="$(/usr/bin/wc -l "$1")" X length=${length% *} X X result=-1 X for line in $(/usr/bin/grep -Ein "$3" "$1") $(($length + 1)); { X line="${line%%:*}" X X # We have passed the line to look for. X if [ $line -ge $2 ]; then X X # No match before this line. X if [ $result -lt 0 ]; then X return 1 X fi X X echo "$result" X return 0 X fi X X result=$line X } X X # No result. X return 1 X} X X# X# Returns the line number of the line behind line number $2 that matches the X# extended regular expression $3 in the file $1. X# X# @param $1 X# The file to get the line number from. X# @param $2 X# The line behind which the expression should match. X# @param $3 X# An extend regular expression. X# @stdout X# The line number of the first line behind line $2 matching $3. X# Xget_behind() { X local IFS line X IFS=' X' X X for line in $(/usr/bin/grep -Ein "$3" "$1"); { X line="${line%%:*}" X X # We have passed the line to look for. X if [ $line -gt $2 ]; then X echo "$line" X return 0 X fi X } X X # No result. X return 1 X} X X# X# Inserts a line at the end of a section of an Xorg configuration file. X# Only works for unique sections. X# Xsection_insert_line() { X local file section insert begin end length X file="$1" X section="$2" X insert="$3" X X # Find the beginning of the section. X begin="$(get_first "$file" \ X "^[[:space:]]*Section[[:space:]]+\"$section\"" \ X )" X X if [ -z "$begin" ]; then X echo "Identifying section $section has failed." 1>&2 X return 1 X fi X X # Find the end of the section. X end="$(get_behind "$file" "$begin" "^[[:space:]]*EndSection")" X X if [ -z "$end" ]; then X echo "The section $section is not closed." 1>&2 X return 2 X fi X X # Determine the length of the configuration file. X length="$(/usr/bin/wc -l "$file")" X length=${length% *} X X # Insert the line. X /bin/cp "$file" "$file.$$" X X /usr/bin/head -n$(($end - 1)) "$file.$$" > "$file" X echo "$insert" >> "$file" X /usr/bin/tail -n$(($length - $end + 1)) "$file.$$" >> "$file" X X /bin/rm "$file.$$" X} X X# X# Adds the necessary lines to the Xorg configuration. X# Xdo_setup() { X local config ident status X X # Get the Xorg configuration file. X config="$(get_xorg_conf)" X status=$? X test $status -ne 0 && return $status X X echo "Setting up configuration in $config." X X # Add all the necessary sections. X for ident in stylus eraser cursor pad touch; { X if /usr/bin/grep -Eqi "^[[:space:]]*Identifier[[:space:]]+\"$ident\"" "$config"; then X echo "Skipping $ident, because it already exists in $config." X continue X fi X X echo "Inserting $ident." X X echo "Section \"InputDevice\" X Driver \"wacom\" X Identifier \"$ident\" X Option \"Device\" \"/dev/event0\" X Option \"Type\" \"$ident\" X Option \"USB\" \"on\" XEndSection X" >> "$config" X X section_insert_line "$config" "ServerLayout" " InputDevice \"$ident\" \"SendCoreEvents\"" X } X X} X X# X# Removes all wacom stuff from the Xorg configuration file. Beware, X# this also affects handwritten content. X# Xdo_cleanup() { X local config status driver i begin last_begin end length ident IFS X X # Get the Xorg configuration file. X config="$(get_xorg_conf)" X status=$? X test $status -ne 0 && return $status X X echo "Removing wacom entries from $config." X X IFS=' X' X while true; do X # Find a wacom section. X driver="$(get_first "$config" \ X "^[[:space:]]*Driver[[:space:]]+\"wacom\"" \ X )" X X # Not a numeric, no more wacom sections left. X test -z "$driver" && break X X # Find the beginning of the section. X begin="$(get_before "$config" "$driver" \ X "^[[:space:]]*Section[[:space:]]+\"InputDevice\"" \ X )" X X if [ -z "$begin" ]; then X echo "Beginning of wacom driver section" \ X "could not be found!" 1>&2 X return 1 X fi X X # Find the end of the section. X end="$(get_behind "$config" "$driver" \ X "^[[:space:]]*EndSection" \ X )" X X if [ -z "$end" ]; then X echo "The Wacom driver section is" \ X "not closed properly." 1>&2 X return 2 X fi X X # Determine the length of the configuration file. X length="$(/usr/bin/wc -l "$config")" X length=${length% *} X X # Adjust the end by trailing newlines. X while [ $end -lt $length -a \ X -z "$(/usr/bin/tail -n$(($length - $end)) "$config" \ X | /usr/bin/head -n1)" ]; do X end=$(($end + 1)) X done X X # Remove the section. X /bin/cp "$config" "$config.$$" X X /usr/bin/head -n$(($begin - 1)) "$config.$$" > "$config" X /usr/bin/tail -n$(($length - $end)) "$config.$$" >> "$config" X X /bin/rm "$config.$$" X done X IFS=' X' X X echo "Cleaning up ServerLayout section." X X for ident in stylus eraser cursor pad touch; { X driver="$(get_first "$config" \ X "[[:space:]]*InputDevice[[:space:]]+\"$ident\"" \ X )" X X # There is no line matching this driver. X test -z "$driver" && continue X X # Determine the length of the configuration file. X length="$(/usr/bin/wc -l "$config")" X length=${length% *} X X # Remove the section. X /bin/cp "$config" "$config.$$" X X /usr/bin/head -n$(($driver - 1)) "$config.$$" > "$config" X /usr/bin/tail -n$(($length - $driver)) "$config.$$" >> "$config" X X /bin/rm "$config.$$" X } X} X Xdo_start() { X if /sbin/kldstat | /usr/bin/grep -q uwacom; then X echo "${name} is already running." X return 0 X fi X echo "Starting ${name}." X /sbin/kldload uwacom X} X Xdo_stop() { X if ! /sbin/kldstat | /usr/bin/grep -q uwacom; then X echo "${name} is not running." X return 0 X fi X echo "Stopping ${name}." X /sbin/kldunload uwacom X} X Xload_rc_config $name X X: ${wacom_enable="NO"} X Xrun_rc_command "$1" a7eaa6ebd329bbf5eb75964068792c2f echo x - /usr/ports/x11-drivers/xf86-input-wacom/pkg-plist sed 's/^X//' >/usr/ports/x11-drivers/xf86-input-wacom/pkg-plist << '7661adc3653a45f6d670786667ca77ce' Xlib/libwacomcfg.so.0 Xlib/libwacomcfg.so Xlib/libwacomcfg.la Xlib/libwacomcfg.a Xbin/wacdump Xbin/xidump Xbin/xsetwacom Xinclude/wacomcfg/wacomcfg.h X@dirrm include/wacomcfg X%%XINPUTMODDIR%%/wacom_drv.so X@cwd %%KMODDIR%% Xuwacom.ko 7661adc3653a45f6d670786667ca77ce echo x - /usr/ports/x11-drivers/xf86-input-wacom/pkg-message sed 's/^X//' >/usr/ports/x11-drivers/xf86-input-wacom/pkg-message << 'fdb0d72161625766ee2cdfdedd3a25f7' XTo setup the wacom driver for X and start the kernel module upon boot Xrun the following commands as the root user: X X# echo 'wacom_enable="YES"' >> /etc/rc.conf X# ${PREFIX}/etc/rc.d/wacom setup X XYou can unload unload the driver and clean up the Xorg configuration by Xrunning the following lines before deinstalling: X# ${PREFIX}/etc/rc.d/wacom cleanup X# ${PREFIX}/etc/rc.d/wacom stop X XTo activate the driver without rebooting run: X X# ${PREFIX}/etc/rc.d/wacom start X XNow (re)plug in your tablet and restart X. fdb0d72161625766ee2cdfdedd3a25f7 exit
More issues addressed and the kernel module is now optional. What did I overlook this time? This must be the most complex port I have ever done. By the way, the plist target is not for dynamic plist generation, it's just to make a maintainers life easier. # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # ports/x11-drivers/xf86-input-wacom/ # ports/x11-drivers/xf86-input-wacom/Makefile # ports/x11-drivers/xf86-input-wacom/distinfo # ports/x11-drivers/xf86-input-wacom/pkg-descr # ports/x11-drivers/xf86-input-wacom/files # ports/x11-drivers/xf86-input-wacom/files/wacom.in # ports/x11-drivers/xf86-input-wacom/pkg-plist # ports/x11-drivers/xf86-input-wacom/pkg-message # echo c - ports/x11-drivers/xf86-input-wacom/ mkdir -p ports/x11-drivers/xf86-input-wacom/ > /dev/null 2>&1 echo x - ports/x11-drivers/xf86-input-wacom/Makefile sed 's/^X//' >ports/x11-drivers/xf86-input-wacom/Makefile << '2c8ac90824175dfffa7ed05f34e7748e' X# New ports collection makefile for: xf86-input-wacom X# Date Created: 24 Oct 2008 X# Whom: Dominic Fandrey <kamikaze@bsdforen.de> X# X# $FreeBSD$ X# X XPORTNAME= xf86-input-wacom XPORTVERSION= ${WACOM_VERSION:C/-/./g}.${KLD_VERSION} XCATEGORIES= x11-drivers kld XMASTER_SITES= http://www.chillt.de/bsdwacom/ \ X ${MASTER_SITE_SOURCEFORGE} XMASTER_SITE_SUBDIR= linuxwacom XDISTFILES= ${BSDWACOM}.tbz \ X ${LINUXWACOM}.tar.bz2 XEXTRACT_ONLY= ${BSDWACOM}.tbz X XMAINTAINER= kamikaze@bsdforen.de XCOMMENT= X.Org Wacom tablet driver and kernel module X XMAN4= wacom.4x XMANCOMPRESSED= yes X XUSE_GMAKE= yes XUSE_RC_SUBR= wacom X XKMODDIR?= /boot/modules XXINPUTMODDIR= lib/xorg/modules/input XMAN4DIR= man/man4 XWRKSRC= ${WRKDIR} X XPLIST_SUB= KMODDIR=${KMODDIR} \ X XINPUTMODDIR=${XINPUTMODDIR} XSUB_LIST:= ${PLIST_SUB} X XXORG_CAT= driver X XLINUXWACOM= linuxwacom-${WACOM_VERSION} XBSDWACOM= bsdwacom-${KLD_VERSION} XWACOM_VERSION= 0.8.1-3 XKLD_VERSION= 38 X XOPTIONS= UWACOMKLD "Install USB kernel module" On X X.include <bsd.port.pre.mk> X X.if defined(WITH_UWACOMKLD) XPLIST_SUB+= UWACOMKLD="uwacom.ko" X.else XPLIST_SUB+= UWACOMKLD="@noinst UWACOMKLD uwacom.ko" X.endif X Xdo-configure: X @cd ${WRKDIR}/linuxwacom \ X && ${LN} -s ${DISTDIR}/${DIST_SUBDIR}/${LINUXWACOM}.tar.bz2 \ X && ./run_configure X Xdo-build: X.if defined(WITH_UWACOMKLD) X @cd ${WRKDIR}/uwacom \ X && ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_ARGS} X.endif X @cd ${WRKDIR}/linuxwacom/${LINUXWACOM} \ X && ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_ARGS} X Xdo-install: X.if defined(WITH_UWACOMKLD) X @${MKDIR} ${KMODDIR} X @${INSTALL_KLD} ${WRKDIR}/uwacom/uwacom.ko ${KMODDIR}/ X.endif X @${MKDIR} ${PREFIX}/${XINPUTMODDIR} ${PREFIX}/${MAN4DIR} X @cd ${WRKDIR}/linuxwacom/${LINUXWACOM}/src/util/ \ X && ${GMAKE} install X @${INSTALL} ${WRKDIR}/linuxwacom/${LINUXWACOM}/src/xdrv/wacom_drv.so \ X ${PREFIX}/${XINPUTMODDIR}/ X @${INSTALL_MAN} ${WRKDIR}/linuxwacom/${LINUXWACOM}/src/wacom.4x.gz \ X ${PREFIX}/${MAN4DIR}/ X Xplist: clean configure X @${ECHO} "===> Rebuilding PLIST." X @${TOUCH} ${PLIST} X @${RM} ${PLIST} X @cd ${WRKDIR}/linuxwacom/${LINUXWACOM} \ X && ./configure --prefix=${WRKDIR}/plist X @${MKDIR} ${WRKDIR}/plist X @cd ${WRKDIR}/linuxwacom/${LINUXWACOM}/src/util && ${GMAKE} install X @cd ${WRKDIR}/linuxwacom \ X && ./run_configure X @${FIND} ${WRKDIR}/plist/ -not -type d \ X | ${SED} "s|${WRKDIR}/plist/||1" \ X >> ${PLIST} X @${FIND} -d ${WRKDIR}/plist/ -mindepth 2 -type d \ X | ${SED} "s|${WRKDIR}/plist/|@dirrm |1" \ X >> ${PLIST} X @${ECHO} "%%XINPUTMODDIR%%/wacom_drv.so" >> ${PLIST} X @${ECHO} "@cwd %%KMODDIR%%" >> ${PLIST} X @${ECHO} "%%UWACOMKLD%%" >> ${PLIST} X Xpost-install: X @${ECHO} "===> Displaying pkg-message." X @${CAT} ${PKGMESSAGE} X X.include <bsd.port.post.mk> 2c8ac90824175dfffa7ed05f34e7748e echo x - ports/x11-drivers/xf86-input-wacom/distinfo sed 's/^X//' >ports/x11-drivers/xf86-input-wacom/distinfo << 'f0832b4922279a28a93db1930c3afee1' XMD5 (xorg/driver/bsdwacom-38.tbz) = fae10723e12b5bfc5daea411639f0ed4 XSHA256 (xorg/driver/bsdwacom-38.tbz) = 0d9027b5d781cd520ebe41287b388973465e8d62109c5d3f52d68f12ede03507 XSIZE (xorg/driver/bsdwacom-38.tbz) = 19993 XMD5 (xorg/driver/linuxwacom-0.8.1-3.tar.bz2) = d09b212946e321cc503adf84e243ca99 XSHA256 (xorg/driver/linuxwacom-0.8.1-3.tar.bz2) = cf1ac159d87666d16e2e3bfad81ede93e088b3bf64bb6d2d469adceb2a4c9dee XSIZE (xorg/driver/linuxwacom-0.8.1-3.tar.bz2) = 1209228 f0832b4922279a28a93db1930c3afee1 echo x - ports/x11-drivers/xf86-input-wacom/pkg-descr sed 's/^X//' >ports/x11-drivers/xf86-input-wacom/pkg-descr << '8458a9ec0fb3bb01a24dd1346d561afd' XThis package contains the X.Org linuxwacom driver, a Wacom kernel module Xand a script to configure Xorg. X XThe kernel module is provided by Bartosz Fabianowski <freebsd@chillt.de> and Xsupports the following devices: X Graphire*, Graphire2*, Graphire3, Graphire4 X Bamboo, Bamboo One*, Bamboo Fun X Intuos3, Cintiq 21UX X Volito*, Volito2* X PenStation2*, PenPartner2* X X* not tested X XWWW: http://linuxwacom.sourceforge.net/ X X- Kamikaze Xkamikaze@bsdforen.de 8458a9ec0fb3bb01a24dd1346d561afd echo c - ports/x11-drivers/xf86-input-wacom/files mkdir -p ports/x11-drivers/xf86-input-wacom/files > /dev/null 2>&1 echo x - ports/x11-drivers/xf86-input-wacom/files/wacom.in sed 's/^X//' >ports/x11-drivers/xf86-input-wacom/files/wacom.in << 'd5245a860ec402b4007475b181b81e43' X#!/bin/sh X X# PROVIDE: wacom X# REQUIRE: FILESYSTEMS X# X# Add the following lines to /etc/rc.conf.local or /etc/rc.conf X# to enable this service: X# X# wacom_enable (bool): Set to NO by default. X# Set it to YES to enable wacom. X# X# This script additionally offers setup and cleanup to configure Xorg X# for use of the driver or remove the configuration settings. X# The input devices are only added to the first ServerLayout section X# and also only removed once. X# X X. %%RC_SUBR%% X Xname="wacom" Xrcvar=${name}_enable X Xextra_commands="setup cleanup" Xsetup_cmd=do_setup Xstart_cmd=do_start Xstop_cmd=do_stop Xcleanup_cmd=do_cleanup X X# X# Outputs the location of the Xorg configuration file. X# Returns 1 if no file could be found. X# Xget_xorg_conf() { X local config_locations config X X # Possible Xorg configuration file locations, taken from the X # xorg.conf(5) manual page. X config_locations=" X/etc/X11/$XORGCONFIG X%%PREFIX%%/etc/X11/$XORGCONFIG X/etc/X11/xorg.conf-4 X/etc/X11/xorg.conf X/etc/xorg.conf X%%PREFIX%%/etc/X11/xorg.conf.$HOST X%%PREFIX%%/etc/X11/xorg.conf-4 X%%PREFIX%%/etc/X11/xorg.conf X%%PREFIX%%/lib/X11/xorg.conf.$HOST X%%PREFIX%%/lib/X11/xorg.conf-4 X%%PREFIX%%/lib/X11/xorg.conf XNONE X" X X # Find the first matching config file. X for config in $config_locations; { X test -f "$config" && break X } X X if [ "$config" = "NONE" ]; then X echo "No Xorg configuration has been found." 1>&2 X return 1 X fi X X echo "$config" X return 0 X} X X# X# Returns the line number of the first line matching the extended regular X# expression $2 in the file $1. X# X# @param $1 X# The file to get the line number from. X# @param $2 X# An extend regular expression. X# @stdout X# The line number of the first line matching $2. X# Xget_first() { X local result IFS X IFS=' X' X result="$(/usr/bin/grep -Ein "$2" "$1")" X result="${result%%:*}" X X # No match. X if [ -z "$result" ]; then X return 1 X fi X X echo "$result" X return 0 X} X X# X# Returns the line number of the line before line number $2 that matches the X# extended regular expression $3 in the file $1. X# X# @param $1 X# The file to get the line number from. X# @param $2 X# The line before which the expression should match. X# @param $3 X# An extend regular expression. X# @stdout X# The line number of the first line before line $2 matching $3. X# Xget_before() { X local result IFS line length X IFS=' X' X X # The length is necessary to make sure the check is run once X # again for the last match. X length="$(/usr/bin/wc -l "$1")" X length=${length% *} X X result=-1 X for line in $(/usr/bin/grep -Ein "$3" "$1") $(($length + 1)); { X line="${line%%:*}" X X # We have passed the line to look for. X if [ $line -ge $2 ]; then X X # No match before this line. X if [ $result -lt 0 ]; then X return 1 X fi X X echo "$result" X return 0 X fi X X result=$line X } X X # No result. X return 1 X} X X# X# Returns the line number of the line behind line number $2 that matches the X# extended regular expression $3 in the file $1. X# X# @param $1 X# The file to get the line number from. X# @param $2 X# The line behind which the expression should match. X# @param $3 X# An extend regular expression. X# @stdout X# The line number of the first line behind line $2 matching $3. X# Xget_behind() { X local IFS line X IFS=' X' X X for line in $(/usr/bin/grep -Ein "$3" "$1"); { X line="${line%%:*}" X X # We have passed the line to look for. X if [ $line -gt $2 ]; then X echo "$line" X return 0 X fi X } X X # No result. X return 1 X} X X# X# Inserts a line at the end of a section of an Xorg configuration file. X# Only works on the first matching section. X# Xsection_insert_line() { X local file section insert begin end length X file="$1" X section="$2" X insert="$3" X X # Find the beginning of the section. X begin="$(get_first "$file" \ X "^[[:space:]]*Section[[:space:]]+\"$section\"" \ X )" X X if [ -z "$begin" ]; then X echo "Identifying section $section has failed." 1>&2 X return 1 X fi X X # Find the end of the section. X end="$(get_behind "$file" "$begin" "^[[:space:]]*EndSection")" X X if [ -z "$end" ]; then X echo "The section $section is not closed." 1>&2 X return 2 X fi X X # Determine the length of the configuration file. X length="$(/usr/bin/wc -l "$file")" X length=${length% *} X X # Insert the line. X /bin/cp "$file" "$file.$$" X X /usr/bin/head -n$(($end - 1)) "$file.$$" > "$file" X echo "$insert" >> "$file" X /usr/bin/tail -n$(($length - $end + 1)) "$file.$$" >> "$file" X X /bin/rm "$file.$$" X} X X# X# Adds the necessary lines to the Xorg configuration. X# Xdo_setup() { X local config ident status X X # Get the Xorg configuration file. X config="$(get_xorg_conf)" X status=$? X test $status -ne 0 && return $status X X echo "Setting up configuration in $config." X X # Add all the necessary sections. X for ident in stylus eraser cursor pad touch; { X if /usr/bin/grep -Eqi "^[[:space:]]*Identifier[[:space:]]+\"$ident\"" "$config"; then X echo "Skipping $ident, because it already exists in $config." X continue X fi X X echo "Inserting $ident." X X echo "Section \"InputDevice\" X Driver \"wacom\" X Identifier \"$ident\" X Option \"Device\" \"/dev/event0\" X Option \"Type\" \"$ident\" X Option \"USB\" \"on\" XEndSection X" >> "$config" X X section_insert_line "$config" "ServerLayout" " InputDevice \"$ident\" \"SendCoreEvents\"" X } X X} X X# X# Removes all wacom stuff from the Xorg configuration file. Beware, X# this also affects handwritten content. X# Xdo_cleanup() { X local config status driver i begin last_begin end length ident IFS X X # Get the Xorg configuration file. X config="$(get_xorg_conf)" X status=$? X test $status -ne 0 && return $status X X echo "Removing wacom entries from $config." X X IFS=' X' X while true; do X # Find a wacom section. X driver="$(get_first "$config" \ X "^[[:space:]]*Driver[[:space:]]+\"wacom\"" \ X )" X X # Not a numeric, no more wacom sections left. X test -z "$driver" && break X X # Find the beginning of the section. X begin="$(get_before "$config" "$driver" \ X "^[[:space:]]*Section[[:space:]]+\"InputDevice\"" \ X )" X X if [ -z "$begin" ]; then X echo "Beginning of wacom driver section" \ X "could not be found!" 1>&2 X return 1 X fi X X # Find the end of the section. X end="$(get_behind "$config" "$driver" \ X "^[[:space:]]*EndSection" \ X )" X X if [ -z "$end" ]; then X echo "The Wacom driver section is" \ X "not closed properly." 1>&2 X return 2 X fi X X # Determine the length of the configuration file. X length="$(/usr/bin/wc -l "$config")" X length=${length% *} X X # Adjust the end by trailing newlines. X while [ $end -lt $length -a \ X -z "$(/usr/bin/tail -n$(($length - $end)) "$config" \ X | /usr/bin/head -n1)" ]; do X end=$(($end + 1)) X done X X # Remove the section. X /bin/cp "$config" "$config.$$" X X /usr/bin/head -n$(($begin - 1)) "$config.$$" > "$config" X /usr/bin/tail -n$(($length - $end)) "$config.$$" >> "$config" X X /bin/rm "$config.$$" X done X IFS=' X' X X echo "Cleaning up ServerLayout section." X X for ident in stylus eraser cursor pad touch; { X driver="$(get_first "$config" \ X "[[:space:]]*InputDevice[[:space:]]+\"$ident\"" \ X )" X X # There is no line matching this driver. X test -z "$driver" && continue X X # Determine the length of the configuration file. X length="$(/usr/bin/wc -l "$config")" X length=${length% *} X X # Remove the section. X /bin/cp "$config" "$config.$$" X X /usr/bin/head -n$(($driver - 1)) "$config.$$" > "$config" X /usr/bin/tail -n$(($length - $driver)) "$config.$$" >> "$config" X X /bin/rm "$config.$$" X } X} X Xdo_start() { X if /sbin/kldstat | /usr/bin/grep -q uwacom; then X echo "${name} is already running." X return 0 X fi X echo "Starting ${name}." X /sbin/kldload %%KMODDIR%%/uwacom.ko X} X Xdo_stop() { X if ! /sbin/kldstat | /usr/bin/grep -q uwacom; then X echo "${name} is not running." X return 0 X fi X echo "Stopping ${name}." X /sbin/kldunload %%KMODDIR%%/uwacom.ko X} X Xload_rc_config $name X X: ${wacom_enable="NO"} X Xrun_rc_command "$1" d5245a860ec402b4007475b181b81e43 echo x - ports/x11-drivers/xf86-input-wacom/pkg-plist sed 's/^X//' >ports/x11-drivers/xf86-input-wacom/pkg-plist << 'c8e8f39ea9b008a2398c7c41a43d661a' Xlib/libwacomcfg.so.0 Xlib/libwacomcfg.so Xlib/libwacomcfg.la Xlib/libwacomcfg.a Xbin/wacdump Xbin/xidump Xbin/xsetwacom Xinclude/wacomcfg/wacomcfg.h X@dirrm include/wacomcfg X%%XINPUTMODDIR%%/wacom_drv.so X@cwd %%KMODDIR%% X%%UWACOMKLD%% c8e8f39ea9b008a2398c7c41a43d661a echo x - ports/x11-drivers/xf86-input-wacom/pkg-message sed 's/^X//' >ports/x11-drivers/xf86-input-wacom/pkg-message << 'e91b20850a8d72e042364d9f88e71619' XTo setup the wacom driver for X and start the kernel module upon boot Xrun the following commands as the root user: X X# echo 'wacom_enable="YES"' >> /etc/rc.conf X# ${PREFIX}/etc/rc.d/wacom setup X XYou can unload the driver and clean up the Xorg configuration by Xrunning the following lines before deinstalling: X# ${PREFIX}/etc/rc.d/wacom cleanup X# ${PREFIX}/etc/rc.d/wacom stop X XTo activate the driver without rebooting run: X X# ${PREFIX}/etc/rc.d/wacom start X XNow (re)plug in your tablet and restart X. e91b20850a8d72e042364d9f88e71619 exit
pgj 2008-11-17 10:02:25 UTC FreeBSD ports repository (doc committer) Modified files: x11-drivers Makefile Added files: x11-drivers/xf86-input-wacom Makefile distinfo pkg-descr pkg-plist x11-drivers/xf86-input-wacom/files pkg-message.in wacom.in Log: Add an X.Org driver, a kernel module, and a script to configure X.Org for Wacom tablets. The X.Org driver is a port of the Linux Wacom Project's [1] work. The kernel module required for USB tablets is provided by Bartosz Fabianowski [2], and supports the following devices: Graphire*, Graphire2*, Graphire3, Graphire4 Bamboo, Bamboo One*, Bamboo Fun Intuos3, Cintiq 21UX Volito*, Volito2* PenStation2*, PenPartner2* * not tested PR: ports/128547 Submitted by: Dominic Fandrey [3] Reviewed by: gabor Approved by: gabor [1] http://linuxwacom.sourceforge.net [2] <freebsd (at) chillt (dot) de> [3] <kamikaze (at) bsdforen (dot) de> Revision Changes Path 1.10 +1 -0 ports/x11-drivers/Makefile 1.1 +105 -0 ports/x11-drivers/xf86-input-wacom/Makefile (new) 1.1 +6 -0 ports/x11-drivers/xf86-input-wacom/distinfo (new) 1.1 +16 -0 ports/x11-drivers/xf86-input-wacom/files/pkg-message.in (new) 1.1 +365 -0 ports/x11-drivers/xf86-input-wacom/files/wacom.in (new) 1.1 +17 -0 ports/x11-drivers/xf86-input-wacom/pkg-descr (new) 1.1 +12 -0 ports/x11-drivers/xf86-input-wacom/pkg-plist (new) _______________________________________________ cvs-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/cvs-all To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
pgj 2008-11-18 14:04:03 UTC FreeBSD ports repository (doc committer) Modified files: x11-drivers Makefile Removed files: x11-drivers/xf86-input-wacom Makefile distinfo pkg-descr pkg-plist x11-drivers/xf86-input-wacom/files pkg-message.in wacom.in Log: - Remove xf86-input-wacom to be re-added it with a different name PR: ports/128547 Requested by: flz Approved by: gabor Revision Changes Path 1.11 +0 -1 ports/x11-drivers/Makefile 1.2 +0 -105 ports/x11-drivers/xf86-input-wacom/Makefile (dead) 1.2 +0 -6 ports/x11-drivers/xf86-input-wacom/distinfo (dead) 1.2 +0 -16 ports/x11-drivers/xf86-input-wacom/files/pkg-message.in (dead) 1.2 +0 -365 ports/x11-drivers/xf86-input-wacom/files/wacom.in (dead) 1.2 +0 -17 ports/x11-drivers/xf86-input-wacom/pkg-descr (dead) 1.2 +0 -12 ports/x11-drivers/xf86-input-wacom/pkg-plist (dead) _______________________________________________ cvs-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/cvs-all To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
pgj 2008-11-18 14:07:44 UTC FreeBSD ports repository (doc committer) Modified files: x11-drivers Makefile Added files: x11-drivers/input-wacom Makefile distinfo pkg-descr pkg-plist x11-drivers/input-wacom/files pkg-message.in wacom.in Log: Add an X.Org driver, a kernel module, and a script to configure X.Org for Wacom tablets. The X.Org driver is a port of the Linux Wacom Project's [1] work. The kernel module required for USB tablets is provided by Bartosz Fabianowski [2], and supports the following devices: Graphire*, Graphire2*, Graphire3, Graphire4 Bamboo, Bamboo One*, Bamboo Fun Intuos3, Cintiq 21UX Volito*, Volito2* PenStation2*, PenPartner2* * not tested PR: ports/128547 Submitted by: Dominic Fandrey [3] Reviewed by: gabor Approved by: gabor [1] http://linuxwacom.sourceforge.net [2] <freebsd (at) chillt (dot) de> [3] <kamikaze (at) bsdforen (dot) de> Revision Changes Path 1.12 +1 -0 ports/x11-drivers/Makefile 1.1 +106 -0 ports/x11-drivers/input-wacom/Makefile (new) 1.1 +6 -0 ports/x11-drivers/input-wacom/distinfo (new) 1.1 +16 -0 ports/x11-drivers/input-wacom/files/pkg-message.in (new) 1.1 +365 -0 ports/x11-drivers/input-wacom/files/wacom.in (new) 1.1 +17 -0 ports/x11-drivers/input-wacom/pkg-descr (new) 1.1 +12 -0 ports/x11-drivers/input-wacom/pkg-plist (new) _______________________________________________ cvs-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/cvs-all To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
pgj 2008-11-18 14:10:17 UTC FreeBSD ports repository (doc committer) Modified files: . MOVED Log: - Document that x11-drivers/xf86-input-wacom has been renamed to x11-drivers/input-wacom PR: ports/128547 Requested by: gabor Approved by: gabor Revision Changes Path 1.1710 +2 -1 ports/MOVED _______________________________________________ cvs-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/cvs-all To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
State Changed From-To: open->closed It has been committed to the ports tree, however I will require further testing and fixes. Thank you very much for your contribution!