#!/usr/bin/perl $II2PKGDIR = $ENV{"II2PKGDIR"}; $II2INSTALLDIR = $ENV{"II2INSTALLDIR"}; $II2RESOURCES = $ENV{"II2RESOURCES"}; $II2DOSERVER = $ENV{"II2DOSERVER"}; $II2BUILDSTAMP = $ENV{"II2BUILDSTAMP"}; $TEXIPKGTEXLIVE = $ENV{"TEXIPKGTEXLIVE"}; $TEXIPKGTETEX = $ENV{"TEXIPKGTETEX"}; $PROGNAME = `"${II2RESOURCES}/basename" "$0"`; chomp( $PROGNAME); if (${II2BUILDSTAMP} < 1167840304) { warn "### You need at least i-Installer 2.87 for this package. Bailing out...\n"; exit 1; } my $arch = `uname -p`; chomp $arch; print "### ${PROGNAME}: Started...\n"; # Add our installed TeX to the beginning of the PATH so it will always # be found first. It would be better to add it to the end and check # with which that we have the right one. Too much work for now. $ENV{"PATH"} = "${II2INSTALLDIR}/bin/${arch}-apple-darwin-current:$ENV{'PATH'}"; setConfigUser(); # Load shared stuff require "${II2PKGDIR}/tex.sharedscript.pm"; print "### ${PROGNAME}: TeX Live: ${TEXIPKGTEXLIVE} teTeX: ${TEXIPKGTETEX}\n"; # Set that contains the set selected during any previous selector phase. This is received # from i-Installer: my %set = getSetInfo(); # sets %set if (not -x "/usr/bin/grep") { print "### ${PROGNAME}: TeX needs commands from the BSD subsystem to run. The BSD subsystem seems to be missing on this system. Bailing out...\n"; exit( 1); } if (${II2INSTALLDIR} eq "") { ipkgwarn( "Your environment is damaged, your Mac OS X installation or your user account is probably damaged. Try running a disk repair program or install from another user's account. Bailing out...\n"); exit( 1); } if ( not -w "${II2INSTALLDIR}" or ! -d "${II2INSTALLDIR}") { ipkgwarn( "Cannot write in directory ${II2INSTALLDIR}. Bailing out...\n"); exit( 1); } if (-d "${II2INSTALLDIR}/share/texmf.macosx") { print "### ${PROGNAME}: Modifying old-style TeX directory layout....\n"; if (-f "${II2INSTALLDIR}/README.texmf.macosx") { print "### ${PROGNAME}: Renaming README.texmf.macosx.\n"; ipkgsystem( "(cd \"${II2INSTALLDIR}\"; mv README.texmf.macosx README.texmf.gwtex)"); } if (-f "${II2INSTALLDIR}/texmf.cnf") { print "### ${PROGNAME}: Saving copy of texmf.cnf.\n"; ipkgsystem( "(cd \"${II2INSTALLDIR}\" ;mv texmf.cnf texmf.gwtex.oldstructure)"); } if (-l "${II2INSTALLDIR}/share/texmf.os") { print "### ${PROGNAME}: Removing texmf.os symbolic link.\n"; ipkgsystem( "(cd \"${II2INSTALLDIR}\"/share ;rm texmf.os)"); } print "### ${PROGNAME}: Renaming texmf.macosx.\n"; ipkgsystem( "(cd \"${II2INSTALLDIR}\"/share ;mv texmf.macosx texmf.gwtex)"); print "### ${PROGNAME}: Removing old (mixed) texmf tree. Please wait...\n"; ipkgsystem( "(cd \"${II2INSTALLDIR}\"/share ;rm -rf texmf)"); ipkgwarn( "NOTE: Your TeX directory layout has been modified. You will need to install TeX Programs.\n"); ipkgsystem( "rm -f \"${II2INSTALLDIR}\"/.*texbinaries* >/dev/null 2>&1"); } `"${II2RESOURCES}/doalerter" -s "${II2DOSERVER}" -V -t IncrementProgress -p 10000`; if (-d "${II2INSTALLDIR}/share/texmf.tetex" or -d "${II2INSTALLDIR}/share/texmf.gwtex") { print "### ${PROGNAME}: You are using my TeX directory layout. Good.\n"; my $uninstalledSetString = ""; if ($set{'tl2003-bin-powerpc'}{'selected'} eq 'YES' or $set{'tl2004-bin-i386'}{'selected'} eq 'YES' or $set{'tl2004-bin-powerpc'}{'selected'} eq 'YES' or $set{'tl2005-bin-i386'}{'selected'} eq 'YES' or $set{'tl2005-bin-powerpc'}{'selected'} eq 'YES') { if (-f "${II2INSTALLDIR}/bin/${arch}-apple-darwin-current/xetex") { print "### ${PROGNAME}: Found XeTeX install.\n"; ipkgwarn( "I found a XeTeX install inside my install location. You will need to reinstall XeTeX after you have installed TeX.\n"); ipkgsystem( "${fmtutilcmd} --disablefmt xetex /dev/null 2>&1"); ipkgsystem( "rm -rf \"${II2INSTALLDIR}\"/share/texmf.local/fonts/*/xetex >/dev/null 2>&1"); ipkgsystem( "rm -rf \"${II2INSTALLDIR}\"/share/texmf.local/xetex >/dev/null 2>&1"); } &removetexprogramessentials(); $uninstalledSetString .= "tl2003-bin-powerpc|tl2004-bin-powerpc|tl2005-bin-powerpc|tl2005-bin-i386|"; } `"${II2RESOURCES}/doalerter" -s "${II2DOSERVER}" -V -t IncrementProgress -p 20000`; if ($set{'tetex2-texmfe'}{'selected'} eq 'YES' or $set{'tetex3-texmfe'}{'selected'} eq 'YES') { &removetetexfoundation(); $uninstalledSetString .= "tetex2-texmfe|tetex3-texmfe|"; if (not $set{'tetex2-texmfdoc'}{'selected'} eq 'YES' or not $set{'tetex3-texmfdoc'}{'selected'} eq 'YES') { warn "### ${PROGNAME}: teTeX documentation removed automatically because its parent, the teTeX texmf tree has been removed.\n"; $uninstalledSetString .= "tetex2-texmfdoc|tetex3-texmfdoc|"; } } elsif ($set{'tetex2-texmfdoc'}{'selected'} eq 'YES' or $set{'tetex3-texmfdoc'}{'selected'} eq 'YES') { &removetetexfoundationdocs(); $uninstalledSetString .= "tetex2-texmfdoc|tetex3-texmfdoc|"; } `"${II2RESOURCES}/doalerter" -s "${II2DOSERVER}" -V -t IncrementProgress -p 90000`; if ($set{'gwtex23'}{'selected'} eq 'YES') { &removegwtexfoundation(); $uninstalledSetString .= "gwtex23|"; } `"${II2RESOURCES}/doalerter" -s "${II2DOSERVER}" -V -t IncrementProgress -p 30000`; if ($set{'tex4ht'}{'selected'} eq 'YES') { print "### ${PROGNAME}: Removing \"$set{'tex4ht'}{'name'}\". Please wait...\n"; ipkgsystem( "rm -rf \"${II2INSTALLDIR}\"/share/texmf.local/tex4ht >/dev/null 2>&1"); ipkgsystem( "rm -rf \"${II2INSTALLDIR}\"/share/texmf.local/tex/generic/tex4ht >/dev/null 2>&1"); ipkgsystem( "rmdir -p \"${II2INSTALLDIR}\"/share/texmf.local/tex/generic >/dev/null 2>&1"); $uninstalledSetString .= "tex4ht|"; } `"${II2RESOURCES}/doalerter" -s "${II2DOSERVER}" -V -t IncrementProgress -p 10000`; if ($TEXIPKGTETEX eq '3' or $set{'gwtex2'}{'selected'} eq 'YES') { print "### ${PROGNAME}: Removing old Latin Modern install. Please wait...\n"; ipkgsystem( "rm -rf \"${II2INSTALLDIR}\"/share/texmf.local/doc/fonts/lm >/dev/null 2>&1"); ipkgsystem( "rmdir -p \"${II2INSTALLDIR}\"/share/texmf.local/doc/fonts >/dev/null 2>&1"); ipkgsystem( "rm -rf \"${II2INSTALLDIR}\"/share/texmf.local/dvips/lm >/dev/null 2>&1"); ipkgsystem( "rmdir -p \"${II2INSTALLDIR}\"/share/texmf.local/dvips >/dev/null 2>&1"); ipkgsystem( "rm -rf \"${II2INSTALLDIR}\"/share/texmf.local/fonts/*/public/lm >/dev/null 2>&1"); ipkgsystem( "rmdir -p \"${II2INSTALLDIR}\"/share/texmf.local/fonts/*/public >/dev/null 2>&1"); ipkgsystem( "rm -rf \"${II2INSTALLDIR}\"/share/texmf.local/tex/latex/lm >/dev/null 2>&1"); ipkgsystem( "rmdir -p \"${II2INSTALLDIR}\"/share/texmf.local/tex/latex >/dev/null 2>&1"); } `"${II2RESOURCES}/doalerter" -s "${II2DOSERVER}" -V -t IncrementProgress -p 10000`; if ($set{'xmljadetex'}{'selected'} eq 'YES') { print "### ${PROGNAME}: Removing \"$set{'xmljadetex'}{'name'}\". Please wait...\n"; ipkgsystem( "rm -rf \"${II2INSTALLDIR}\"/share/texmf.local/tex/jadetex >/dev/null 2>&1"); ipkgsystem( "rm -rf \"${II2INSTALLDIR}\"/share/texmf.local/doc/jadetex >/dev/null 2>&1"); ipkgsystem( "rm -rf \"${II2INSTALLDIR}\"/share/texmf.local/source/jadetex >/dev/null 2>&1"); ipkgsystem( "rm -rf \"${II2INSTALLDIR}\"/share/texmf.local/tex/xmltex >/dev/null 2>&1"); ipkgsystem( "rm -rf \"${II2INSTALLDIR}\"/share/texmf.local/doc/xmltex >/dev/null 2>&1"); ipkgsystem( "rm -rf \"${II2INSTALLDIR}\"/share/texmf.local/source/xmltex >/dev/null 2>&1"); ipkgsystem( "rmdir -p \"${II2INSTALLDIR}\"/share/texmf.local/tex >/dev/null 2>&1"); ipkgsystem( "rmdir -p \"${II2INSTALLDIR}\"/share/texmf.local/doc >/dev/null 2>&1"); ipkgsystem( "rmdir -p \"${II2INSTALLDIR}\"/share/texmf.local/source >/dev/null 2>&1"); $uninstalledSetString .= "xmljadetex|"; } `"${II2RESOURCES}/doalerter" -s "${II2DOSERVER}" -V -t IncrementProgress -p 10000`; if ($set{'tl2003-lib-powerpc'}{'selected'} eq 'YES' or $set{'tl2004-lib-powerpc'}{'selected'} eq 'YES' or $set{'tl2005-lib-universal'}{'selected'} eq 'YES') { &removetexprogramextras(); $uninstalledSetString .= "tl2003-lib-powerpc|tl2004-lib-powerpc|tl2005-lib-universal|"; } `"${II2RESOURCES}/doalerter" -s "${II2DOSERVER}" -V -t IncrementProgress -p 10000`; if ($uninstalledSetString ne '') { # UnsetInstalled also clears configured state chop( $uninstalledSetString) if $uninstalledSetString =~ /\|$/; `"${II2RESOURCES}/doalerter" -s "${II2DOSERVER}" -V -t UnsetInstalledSelectorSets -P "$uninstalledSetString"`; } } else { if (-d "${II2INSTALLDIR}/share/texmf" or -d "${II2INSTALLDIR}/texmf") { ipkgwarn( "Unfamiliar TeX directory layout. No removal before unarchiving. This may cause problems when you use TeX.\n"); $doresult = `"${II2RESOURCES}/doalerter" -s "${II2DOSERVER}" -V -t Alert -T "Unknown layout!" -I "Your TeX layout is not recognized. No parts will be removed before new parts are installed.\n\nThis may lead to doubles and an unreliable setup." -1 "Continue"`; } `"${II2RESOURCES}/doalerter" -s "${II2DOSERVER}" -V -t IncrementProgress -p 180000`; } # make sure all subdirs for parts of the archive exist (temp fix. should be in i-Installer!): ipkgsystem( "mkdir -p \"${II2INSTALLDIR}\"/share/texmf.local >/dev/null 2>&1"); `"${II2RESOURCES}/doalerter" -s "${II2DOSERVER}" -V -t IncrementProgress -p 10000`; warn "### ${PROGNAME}: Finished.\n"; print "### ${PROGNAME}: Finished.\n"; sub setConfigUser { if (-e "${II2INSTALLDIR}/bin/${arch}-apple-darwin-current/texconfig-sys") { if ($> == 0) { print "### ${PROGNAME}: System wide configuration, TL2005-style.\n"; ${configforuser} = 'root'; ${sudocmd} = "sudo -H -u ${configforuser}"; ${texconfigcmd} = "${sudocmd} texconfig-sys"; ${fmtutilcmd} = "${sudocmd} fmtutil-sys"; ${updmapcmd} = "${sudocmd} updmap-sys"; ${kpsewhichcmd} = "${sudocmd} kpsewhich"; } else { print "### ${PROGNAME}: Configuring system-wide for user $ENV{'II2USER'}, TL2005-style.\n"; ${configforuser} = $ENV{'II2USER'}; ${sudocmd} = ""; ${texconfigcmd} = "${sudocmd} texconfig-sys"; ${fmtutilcmd} = "${sudocmd} fmtutil-sys"; ${updmapcmd} = "${sudocmd} updmap-sys"; ${kpsewhichcmd} = "${sudocmd} kpsewhich"; } } else { if ($> == 0) { print "### ${PROGNAME}: System wide configuration, pre-TL2005-style.\n"; ${configforuser} = 'root'; ${sudocmd} = "sudo -H -u ${configforuser}"; ${texconfigcmd} = "${sudocmd} texconfig"; ${fmtutilcmd} = "${sudocmd} fmtutil"; ${updmapcmd} = "${sudocmd} updmap"; ${kpsewhichcmd} = "${sudocmd} kpsewhich"; } else { print "### ${PROGNAME}: Configuring system-wide for user $ENV{'II2USER'}, pre-TL2005-style.\n"; ${configforuser} = $ENV{'II2USER'}; ${sudocmd} = ""; ${texconfigcmd} = "${sudocmd} texconfig"; ${fmtutilcmd} = "${sudocmd} fmtutil"; ${updmapcmd} = "${sudocmd} updmap"; ${kpsewhichcmd} = "${sudocmd} kpsewhich"; } } } # $Id: tex.prepare 110 2006-12-28 21:58:00Z gctwnl $