From owner-freebsd-ports-bugs@FreeBSD.ORG Tue Apr 3 18:20:10 2007 Return-Path: X-Original-To: freebsd-ports-bugs@hub.freebsd.org Delivered-To: freebsd-ports-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id F048516A405 for ; Tue, 3 Apr 2007 18:20:10 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [69.147.83.40]) by mx1.freebsd.org (Postfix) with ESMTP id A099F13C44C for ; Tue, 3 Apr 2007 18:20:10 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.4/8.13.4) with ESMTP id l33IKAtX095419 for ; Tue, 3 Apr 2007 18:20:10 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.4/8.13.4/Submit) id l33IKAi9095418; Tue, 3 Apr 2007 18:20:10 GMT (envelope-from gnats) Date: Tue, 3 Apr 2007 18:20:10 GMT Message-Id: <200704031820.l33IKAi9095418@freefall.freebsd.org> To: freebsd-ports-bugs@FreeBSD.org From: Jason Bacon Cc: Subject: Re: ports/110144: New port: math/Matlab7 X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Jason Bacon List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Apr 2007 18:20:11 -0000 The following reply was made to PR ports/110144; it has been noted by GNATS. From: Jason Bacon To: bug-followup@freebsd.org, bacon@smithers.neuro.mcw.edu Cc: Subject: Re: ports/110144: New port: math/Matlab7 Date: Tue, 3 Apr 2007 12:39:01 -0500 Not quite sure of the best way to submit this update. There were too many changes for a diff to be practical in my opinion, so I'm including a whole new shar file below. If resubmitting it with send-pr would make life easier for the committers, please let me know. Cheers, JB # 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: # # math/Matlab7 # math/Matlab7/files # math/Matlab7/files/pkg-message.in # math/Matlab7/files/finish.m # math/Matlab7/files/finish.sh # math/Matlab7/files/flexlm.sh # math/Matlab7/files/install_flexlm.sh # math/Matlab7/files/install_matlab-r14 # math/Matlab7/files/gcc-wrapper.c # math/Matlab7/Makefile # math/Matlab7/distinfo # math/Matlab7/pkg-descr # echo c - math/Matlab7 mkdir -p math/Matlab7 > /dev/null 2>&1 echo c - math/Matlab7/files mkdir -p math/Matlab7/files > /dev/null 2>&1 echo x - math/Matlab7/files/pkg-message.in sed 's/^X//' >math/Matlab7/files/pkg-message.in << 'END-of-math/Matlab7/files/pkg-message.in' X==================================================================== XSince the Matlab installation directory undergoes changes over time, X"make deinstall" may fail to remove all files, and you will need to Xmanually remove %%PREFIX%%/matlab. X XIf you want to enable flexlm on this host, run X%%PREFIX%%/matlab/bin/install_flexlm.sh %%PREFIX%%/matlab X XIf you did not allow the Matlab installer to create symbolic links Xto the Matlab binaries, users will need %%PREFIX%%/matlab/bin Xin their PATH to run matlab. X XUsers who wish to run mex, mcc, etc. should add the following to their X.cshrc, or equivalent startup file: X X# If shell is a child of Linux Matlab, put Matlab bin in front of PATH X# so the MEX compilations use the gcc wrapper for linux_dist-gentoo. Xif ( $?MATLAB && -e %%PREFIX%% ) then X set path = (%%PREFIX%%/matlab/bin $path) Xendif X XPlease report any problems with this port to the maintainer at X X http://www.neuro.mcw.edu/~bacon/FreeBSD_MRI X==================================================================== END-of-math/Matlab7/files/pkg-message.in echo x - math/Matlab7/files/finish.m sed 's/^X//' >math/Matlab7/files/finish.m << 'END-of-math/Matlab7/files/finish.m' X! $MATLAB/bin/finish.sh X END-of-math/Matlab7/files/finish.m echo x - math/Matlab7/files/finish.sh sed 's/^X//' >math/Matlab7/files/finish.sh << 'END-of-math/Matlab7/files/finish.sh' X#!/usr/compat/linux/bin/sh X X(sleep 5; killall -1 matlab_helper) & Xexit 0 X END-of-math/Matlab7/files/finish.sh echo x - math/Matlab7/files/flexlm.sh sed 's/^X//' >math/Matlab7/files/flexlm.sh << 'END-of-math/Matlab7/files/flexlm.sh' X#!/bin/sh X X# Quiet FreeBSD expr -r errors XPATH=/compat/linux/bin:/compat/linux/usr/bin:$PATH Xexport PATH X Xcase "$1" in Xstart) X if [ -e /usr/local/etc/lmboot_TMW ]; then X /usr/local/etc/lmboot_TMW -glnx86 -u matlab && echo 'MATLAB_lmgrd' X fi X ;; Xstop) X if [ -e /usr/local/etc/lmdown_TMW ]; then X /usr/local/etc/lmdown_TMW > /dev/null 2>&1 X fi X ;; X*) X echo "Usage: $0 {start|stop}" X exit 1 X ;; Xesac X END-of-math/Matlab7/files/flexlm.sh echo x - math/Matlab7/files/install_flexlm.sh sed 's/^X//' >math/Matlab7/files/install_flexlm.sh << 'END-of-math/Matlab7/files/install_flexlm.sh' X#!/bin/sh X Xif [ $# != 1 ]; then X echo "Usage: $0 " X exit 1 Xfi X Xinstall_dir=$1 X X# FLEXLM License Manager, if installed Xif [ -e ${install_dir}/etc/lmboot ]; then X ln -sf ${install_dir}/etc/lmboot /usr/local/etc/lmboot_TMW X ln -sf ${install_dir}/etc/lmdown /usr/local/etc/lmdown_TMW X install -m 0555 ${install_dir}/etc/flexlm.sh /usr/local/etc/rc.d X /usr/local/etc/rc.d/flexlm.sh start X echo "The following files or links were installed outside the Matlab" X echo "installation tree:" X echo "" X echo " /usr/local/etc/lmboot_TMW" X echo " /usr/local/etc/lmdown_TMW" X echo " /usr/local/etc/rc.d/flexlm.sh" X echo "" X echo "You will need to manually remove them if you decide to deinstall" X echo "or deactivate flexlm." X X matlabuser=`awk -F':' '$1 == "matlab"' /etc/passwd` X if [ "${matlabuser}" = "" ]; then X echo "There is no 'matlab' user on this system. You must either create" X echo "one, or edit /usr/local/etc/rc.d/flexlm.sh to change the username" X echo "flexlm will run under. Note that flexlm cannot be run as root." X fi Xfi X END-of-math/Matlab7/files/install_flexlm.sh echo x - math/Matlab7/files/install_matlab-r14 sed 's/^X//' >math/Matlab7/files/install_matlab-r14 << 'END-of-math/Matlab7/files/install_matlab-r14' X#!/bin/sh X X######################################################################### X# Matlab 7.3.0 R2006b FreeBSD installation script X# X# Author: Jason W. Bacon X# Medical College of Wisconsin X# X# Usage: X# X# This script is a wrapper around the Matlab graphical installation X# utility. It installs and updates license files for use with a X# FLEXlm license server, and contains workarounds for installing X# Matlab on FreeBSD using Linux compatibility. X# X# Redistribution and use in source and binary forms, with or without X# modification, are permitted provided that the following conditions are X# met: X# X# Redistributions of source code must retain the above copyright notice, X# this list of conditions and the following disclaimer. Redistributions X# in binary form must reproduce the above copyright notice, this list of X# conditions and the following disclaimer in the documentation and/or X# other materials provided with the distribution. X# X# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS X# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED X# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A X# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT X# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, X# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT X# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, X# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY X# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT X# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE X# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. X Xif [ $# != 2 ]; then X echo "Usage: $0 " X exit 1 Xfi X X# Port PREFIX Xprefix="$1" X X# Install into PREFIX/matlab Xinstall_dir=${prefix}/matlab X X# WRKSRC directory contains patches and install scripts Xwrksrc="$2" X X# Remember where we started Xport_dir=`pwd` Xpkg_plist=${port_dir}/pkg-plist X X# A little eye candy Xalias drawline='echo -e "\n====================================================================\n"' X X# License file must be copied into install directory before starting X# Matlab installer. Xlicense_file="" Xwhile [ "${license_file}" = "" ]; do X drawline X echo 'Enter the full pathname of your license.dat file: ' X read license_file X if [ ! -e ${license_file} ]; then X echo 'Error: ${license_file} does not exist. Please try again.' X license_file="" X fi Xdone X Xdrawline Xecho "Should this installation fail, please see the Matlab manual" Xecho "installation instructions in the FreeBSD Handbook." Xdrawline X X# Input installation source. Offer standard CDROM mount point X# as a default. Xdefault_source_dir='/cdrom' X Xecho "If you are using a remote license server," Xecho "be sure to remove FLEXlm from the Items to" Xecho "Install list in the Matlab installer." Xecho "" Xecho -n "Press return to continue..." Xread andthrowaway X X# Prime loop for 'install another disk' question at end Xans='y' X X# Run installer from within install directory Xwhile [ "${ans}" = "y" ]; do X drawline X X # Disks in multiple CD set can be loaded in any order. X echo "" X echo "If you are installing from CDs, insert the first CD now." X echo "Otherwise, enter the full pathname of the directory" X echo "containing the Matlab 'install' script." X echo "" X echo -n "Location of install sources? [${default_source_dir}] " X read source_dir X if [ "${source_dir}" = "" ]; then X source_dir="${default_source_dir}" X else X default_source_dir="${source_dir}" X fi X X # Try to determine if this is loadable media X dev=`awk -v dir=${source_dir} '$2 == dir && $4 ~ "noauto" { print $1 }' /etc/fstab` X if [ "${dev}" != '' ]; then X mount=1 X echo "Mounting $dev..." X mount ${source_dir} X else X mount=0 X fi X X # Run Matlab installer X if [ ! -d ${install_dir} ]; then X mkdir -p ${install_dir} X if [ $? != 0 ]; then X echo "Error creating ${install_dir}, aborting installation..." X echo "Make sure you are logged in as root, or have appropriate" X echo "permissions on the install directory." X exit 1 X fi X fi X X # License file must be in install directory when Matlab installer starts X echo "Installing skeletal license file..." X if [ ! -e ${license_file} ]; then X echo "Missing license file: ${license_file}" X fi X cp ${license_file} ${install_dir} X X # Matlab installer installs into current working directory. X cd ${install_dir} X X # Invoke the installer from a Linux shell so that it senses X # a valid environment. Set PATH so that Linux binaries will be X # used where possible. (FreeBSD expr does not X # support -r flag, so this will silence errors during install X # by using the Linux expr.) X savepath="${PATH}" X PATH="/compat/linux/bin:/compat/linux/usr/bin:${PATH}" X export PATH X X echo "Running Matlab install tool. Note that pathnames referred to" X echo "by the installer are relative to /compat/linux." X X # Make sure boot.ftp has been unpacked X if [ ! -e "${source_dir}/update" ]; then X (cd $source_dir; tar xvf boot.ftp) X fi X X # Remove old links, if present X for file in matlab mex mcc mbuild X do X rm -f /compat/linux/usr/local/bin/${file} X rm -f /usr/local/bin/${file} X done X X # Test connection to X server and run graphical install if possible. X xhost > /dev/null 2> /dev/null X if [ $? = 0 ]; then X /compat/linux/bin/sh ${source_dir}/install X else X echo "Cannot connect to DISPLAY $DISPLAY. Using text mode install." X /compat/linux/bin/sh ${source_dir}/install -t X fi X X # Restore old path without Linux bins so that the rest of the X # script runs native FreeBSD commands. X PATH="${savepath}" X export PATH X X # Unmount disk if necessary X if [ $mount = 1 ]; then X echo "Unmounting..." X umount ${source_dir} X fi X X echo "Done with ${source_dir}." X echo -n 'Install another disk? (y/n) ' X read ans Xdone X X# Create Matlab launch script to set up Linux environment for Matlab. X# Put Linux bin directories first in the path, so Matlab scripts will X# use Linux binaries rather than the FreeBSD binaries wherever possible. X# This will, at minimum, quiet the annoying 'invalid -r flag' errors X# produced by the FreeBSD expr command. X Xscript=${prefix}/matlab/bin/matlab X# Rename original "matlab" script so it doesn't get run directly Xmv -f ${script} ${script}.sh X X# Replace "matlab" with wrapper that sets the environment and calls X# the original as "matlab.sh" Xecho '#!/bin/sh' > ${script} Xecho '' >> ${script} Xecho 'PATH="/compat/linux/bin:/compat/linux/usr/bin:${PATH}"' >> ${script} Xecho 'export PATH' >> ${script} Xecho "${install_dir}"'/bin/matlab.sh -glnx86 $*' >> ${script} Xchmod 555 ${script} X X# Flexlm installation scripts for convenience Xinstall -m 0555 ${wrksrc}/install_flexlm.sh ${install_dir}/bin Xinstall -m 0555 ${wrksrc}/flexlm.sh ${install_dir}/etc X X# Link to working linux jre Xln -s /usr/local/linux-sun-jdk1.4.2/jre \ X ${install_dir}/sys/java/jre/glnx86/jre1.4.2 Xmv ${install_dir}/sys/java/jre/glnx86/jre.cfg \ X ${install_dir}/sys/java/jre/glnx86/jre.cfg.orig Xecho "1.4.2" > ${install_dir}/sys/java/jre/glnx86/jre.cfg X X# Set default browser Xecho "Please select a WEB browser for use by Matlab. You must ensure" Xecho "that the browser is installed and in each Matlab user's PATH." Xecho "Examples are firefox, konqueror, mozilla..." Xecho "Just press to accept the default [firefox]: " Xread browser Xif [ x${browser} = "x" ]; then X browser="firefox" Xfi Xecho "Setting ${browser} as the default browser for Matlab..." Xsed -e "s|netscape|${browser}|g" ${install_dir}/toolbox/local/docopt.m > /tmp/docopt.m Xmv -f /tmp/docopt.m ${install_dir}/toolbox/local X X###################################################################### X# Generate pkg-plist X Xrm -f ${pkg_plist} X(cd ${prefix} && find -d matlab \! -type d) >> ${pkg_plist} X(cd ${prefix} && find -d matlab -type d) | \ X sed -e 's#^#@dirrm #' >> ${pkg_plist} X END-of-math/Matlab7/files/install_matlab-r14 echo x - math/Matlab7/files/gcc-wrapper.c sed 's/^X//' >math/Matlab7/files/gcc-wrapper.c << 'END-of-math/Matlab7/files/gcc-wrapper.c' X#include X#include X#include X#include X#include X X#define DEBUG 0 X#define MAX_ARG_SIZE 1024 X#define PREFIX "/usr/local/gentoo-stage3" X Xint main(int argc,char *argv[]) X X{ X extern int errno; X int c; X char *p, X *temp; X X /* X * Gentoo gcc contains hard-coded paths to files such as X * /usr/bin/gcc-config, which will not be found in the FreeBSD root X * tree. We must chroot() to /usr/local/gentoo-stage3 in order for X * gcc to function. X */ X if ( chroot("/usr/local/gentoo-stage3") != 0 ) X { X fprintf(stderr,"Error: chroot() failed: %s\n",strerror(errno)); X return 1; X } X X /* Relinquish root euid after chroot() */ X seteuid(getuid()); X X#if DEBUG == 1 X printf("UID = %d EUID = %d\n",getuid(),geteuid()); X#endif X X /* Update paths in gcc arguments to reflect chroot to gentoo-base3 */ X for (c=0; argv[c] != NULL; ++c) X { X p = strstr(argv[c],PREFIX); X if ( p != NULL ) X { X /* Null-terminate string preceding PREFIX in original arg */ X *p = '\0'; X X /* Build new arg with / replacing PREFIX */ X temp = malloc(MAX_ARG_SIZE+1); X snprintf(temp,MAX_ARG_SIZE,"%s%s", X argv[c], /* Points to string before PREFIX */ X p+strlen(PREFIX) /* Points to string after PREFIX */ X ); X X /* Replace old arg with new in argv[] */ X argv[c] = temp; X } X } X X /* Check arguments */ X#if DEBUG == 1 X putchar('\n'); X for (c=0; argv[c] != NULL; ++c) X puts(argv[c]); X#endif X X execvp("/usr/bin/gcc",argv); X return 0; X} X END-of-math/Matlab7/files/gcc-wrapper.c echo x - math/Matlab7/Makefile sed 's/^X//' >math/Matlab7/Makefile << 'END-of-math/Matlab7/Makefile' X# New ports collection Makefile for: Linux Matlab 7.3.0 R2006b X# Date created: 20 Mar 2007 X# Whom: bacon@smithers.neuro.mcw.edu X# X# $FreeBSD$ X# X XPORTNAME= Matlab XPORTVERSION= 7.3.0 XCATEGORIES= math science XMASTER_SITES= XPKGNAMEPREFIX= linux- XDISTFILES= X XMAINTAINER= bacon@smithers.neuro.mcw.edu XCOMMENT= Mathworks(r) Matlab 7.3.0 R2006b X X# Install linux_base-fc4 before any dependencies install a different one. X# Matlab7 won't work under linux_base8, and is untested under others. XEXTRACT_DEPENDS=${LINUX_BASE_PORT}:${PORTSDIR}/emulators/linux_base-fc4 XRUN_DEPENDS= ${LOCALBASE}/linux-sun-jdk1.4.2:${PORTSDIR}/java/linux-sun-jdk14 X XUSE_LINUX= fc4 XUSE_XLIB= yes X XOPTIONS= MEX "Requires linux_dist-gentoo-stage3" off X XONLY_FOR_ARCHS= i386 X XIS_INTERACTIVE= yes X X.include X X.if defined(WITH_MEX) XPREFIX= ${LOCALBASE}/gentoo-stage3 XEXTRACT_DEPENDS+= ${LOCALBASE}/gentoo-stage3: ${PORTSDIR}/emulators/linux_dist-gentoo-stage3 X.else XPREFIX= ${LINUXBASE} X.endif X XSUB_FILES= pkg-message X Xpost-extract: X.if defined(WITH_MEX) X ${CP} ${FILESDIR}/gcc-wrapper.c ${WRKDIR}/gcc.c X ${REINPLACE_CMD} -e "s|/usr/local/gentoo-stage3|${PREFIX}|g" \ X ${WRKDIR}/gcc.c X.endif X Xdo-build: X.if defined(WITH_MEX) X (cd ${WRKDIR}; ${CC} -O gcc.c -o gcc) X.endif X X# Run installation script under pre-install, so the packing list X# can be generated AFTER the files are in place. The installed X# toolboxes will vary immensely depending on the user's license options X# and selection. Xpre-install: X ${FILESDIR}/install_matlab-r14 ${PREFIX} ${FILESDIR} X.if defined(WITH_MEX) X ${INSTALL_PROGRAM} ${WRKDIR}/gcc ${PREFIX}/matlab/bin X ${CHMOD} 4555 ${PREFIX}/matlab/bin/gcc X.endif X Xdo-install: X @${ECHO_MSG} "Installation complete." X Xpost-install: X @${CAT} ${WRKDIR}/pkg-message X X.include END-of-math/Matlab7/Makefile echo x - math/Matlab7/distinfo sed 's/^X//' >math/Matlab7/distinfo << 'END-of-math/Matlab7/distinfo' XMD5 (Matlab-7r14.tar.gz) = 3ff76719a6679603210af0a7086a4665 XSHA256 (Matlab-7r14.tar.gz) = 2d7a1756749a004acf8a9998eee154f7fe4c039cb01965ef68a6eee249edf795 XSIZE (Matlab-7r14.tar.gz) = 4026 END-of-math/Matlab7/distinfo echo x - math/Matlab7/pkg-descr sed 's/^X//' >math/Matlab7/pkg-descr << 'END-of-math/Matlab7/pkg-descr' XThis is Mathworks (r) Matlab 6.5r13 for Linux. It requires installation Xmedia and a license file from Mathworks, Inc., and linux_base-8. END-of-math/Matlab7/pkg-descr exit