mac term packaging code (trunk only)

: Modified Files:
: 	sys/unix/hints/macosx.sh sys/unix/hints/macosx10.5
: 	win/macosx/NetHackRecover.applescript win/macosx/recover.pl
: Added Files:
: 	win/macosx/NetHackGuidebook.applescript
: 	win/macosx/NetHackTerm.applescript
This commit is contained in:
keni
2011-10-17 01:29:20 +00:00
parent f48de2f336
commit 2402f43776
6 changed files with 188 additions and 22 deletions

View File

@@ -146,7 +146,7 @@ xinfoplist) SVSDOT=`util/makedefs --svs .`
<key>IFPkgFlagAuthorizationAction</key>
<string>RootAuthorization</string>
<key>IFPkgFlagDefaultLocation</key>
<string>/usr/games</string>
<string>/</string>
<key>IFPkgFlagInstallFat</key>
<false/>
<key>IFPkgFlagIsRequired</key>

View File

@@ -191,40 +191,61 @@ ifdef WANT_WIN_TTY
DEVUTIL=/Developer/Applications/Utilities
PKGR=$(DEVUTIL)/PackageMaker.app/Contents/MacOS/PackageMaker
SVS=$(shell $(NHSROOT)/util/makedefs --svs)
SVSDOT=$(shell $(NHSROOT)/util/makedefs --svs .)
PKGROOT_UG = PKGROOT/usr/games
PKGROOT_UGLN = PKGROOT/usr/games/lib/nethackdir
build_tty_pkg:
ifneq (,$(WANT_WIN_X11)$(WANT_WIN_QT))
-echo build_tty_pkg only works for a tty-only build
exit 1
else
rm -rf NetHack-$(SVS)-mac-Term.pkg NetHack-$(SVS)-mac-Term.dmg
$(MAKE) build_package_root
rm -rf RESOURCES
mkdir RESOURCES
enscript --language=rtf -o - < dat/license >RESOURCES/License.rtf
#enscript --language=rtf -o - < dat/license >RESOURCES/License.rtf
sys/unix/hints/macosx.sh descplist > RESOURCES/Description.plist
sys/unix/hints/macosx.sh infoplist > Info.plist
$(PKGR) --root PKGROOT --info Info.plist -e RESOURCES -v -o NetHack-$(SVS)-mac-Term.pkg
hdiutil create -verbose -srcfolder NetHack-$(SVS)-mac-Term.pkg Nethack-$(SVS)-mac-Term.dmg
mkdir PKGROOT/Applications
#osacompile -o NetHackQt/NetHackQt.app/nethackdir/NetHackRecover.app \
# win/macosx/NetHackRecover.applescript
#cp win/macosx/recover.pl NetHackQt/NetHackQt.app/nethackdir
osacompile -o PKGROOT/Applications/NetHackRecover.app \
win/macosx/NetHackRecover.applescript
cp win/macosx/recover.pl $(PKGROOT_UGLN)
SVS=$(shell util/makedefs --svs)
SVSDOT=$(shell util/makedefs --svs .)
osacompile -o PKGROOT/Applications/NetHackTerm.app \
win/macosx/NetHackTerm.applescript
# XXX integrate into Makefile.doc
(cd doc; cat Guidebook.mn | ../util/makedefs --grep --input - --output - \
| tbl tmac.n - | groff |ps2pdf - > Guidebook.pdf)
cp doc/Guidebook.pdf $(PKGROOT_UG)/doc/NetHackGuidebook.pdf
osacompile -o PKGROOT/Applications/NetHackGuidebook.app \
win/macosx/NetHackGuidebook.applescript
$(PKGR) --root PKGROOT --info Info.plist -e RESOURCES -v -o NetHack-$(SVS)-mac-Term.pkg
hdiutil create -verbose -srcfolder NetHack-$(SVS)-mac-Term.pkg NetHack-$(SVS)-mac-Term.dmg
build_package_root:
cd src/.. # make sure we are at TOP
rm -rf PKGROOT
mkdir -p PKGROOT/lib PKGROOT/bin PKGROOT/man/man6 PKGROOT/doc
install -p src/nethack PKGROOT/bin
install -p util/recover PKGROOT/bin
install -p doc/nethack.6 PKGROOT/man/man6
install -p doc/recover.6 PKGROOT/man/man6
install -p doc/Guidebook PKGROOT/doc
install -p dat/nhdat PKGROOT/lib
cd dat; install -p $(DATNODLB) ../PKGROOT/lib
mkdir -p $(PKGROOT_UG)/lib $(PKGROOT_UG)/bin $(PKGROOT_UG)/man/man6 $(PKGROOT_UG)/doc $(PKGROOT_UGLN)
install -p src/nethack $(PKGROOT_UG)/bin
# XXX should this be called nethackrecover?
install -p util/recover $(PKGROOT_UG)/bin
install -p doc/nethack.6 $(PKGROOT_UG)/man/man6
install -p doc/recover.6 $(PKGROOT_UG)/man/man6
install -p doc/Guidebook $(PKGROOT_UG)/doc
install -p dat/nhdat $(PKGROOT_UGLN)
cd dat; install -p $(DATNODLB) ../$(PKGROOT_UGLN)
# XXX these files should be somewhere else for good Mac form
touch PKGROOT/perm PKGROOT/record PKGROOT/logfile
touch $(PKGROOT_UGLN)/perm $(PKGROOT_UGLN)/record $(PKGROOT_UGLN)/logfile
# XXX may need postinstall script to get perms right for sgid, etc.
mkdir PKGROOT/save
mkdir $(PKGROOT_UGLN)/save
# XXX what about a news file?
endif # end of build_tty_pkg
endif # WANT_WIN_TTY for packaging

View File

@@ -0,0 +1,11 @@
#!/usr/bin/osascript
# NetHack 3.5.0 NetHackGuidebook.applescript $Date$ $Revision$
# Copyright (c) Kenneth Lorber, Kensington, Maryland, 2011
# NetHack may be freely redistributed. See license for details.
# Display the Guidebook from the GUI.
tell application "Finder"
open location "file:///usr/games/doc/NetHackGuidebook.pdf"
delay 5
end tell

View File

@@ -15,10 +15,11 @@ if not canceled then
set hpath to the path to me
set mpath to the POSIX path of hpath
considering case
set lastpos to offset of "/nethackdir" in mpath
set lastpos to lastpos + (length of "/nethackdir")
set rawpath to (get text 1 through lastpos of mpath) & "/recover.pl"
set safepath to the quoted form of rawpath
--set lastpos to offset of "/nethackdir" in mpath
--set lastpos to lastpos + (length of "/nethackdir")
--set rawpath to (get text 1 through lastpos of mpath) & "/recover.pl"
--set safepath to the quoted form of rawpath
set safepath to the quoted form of "/usr/games/lib/nethackdir/recover.pl"
end considering
do shell script safepath
display dialog result with title "NetHackRecover Output"

View File

@@ -0,0 +1,130 @@
#!/usr/bin/osascript
# NetHack 3.5.0 NetHackTerm.applescript $Date$ $Revision$
# Copyright (c) Kenneth Lorber, Kensington, Maryland, 2011
# NetHack may be freely redistributed. See license for details.
# Run the terminal port from the GUI.
# BUGS:
# We close any terminal windows with no processes in them, even if they
# don't belong to us because we can't really tell which ones do belong to us.
# Shouldn't be serious since anyone using this is unlikely to be using Terminal
# for anything else.
set debug to false
set needshutdown to false
tell application "Terminal"
# see if we're going to have to shut it down at the end because we started it up
if it is not running then
set needshutdown to true
end if
activate
#open new window and run NetHack in it
do script with command "clear;sleep 1;/usr/games/bin/nethack;echo '(press RETURN to exit)';awk '{exit}';exit"
set nhresult to result -- class is tab
set nhresrec to result as record
set nhreslist to result as list
set nhwin to item 4 of nhreslist
set custom title of nhwin to "NH"
#set title displays custom title of nhresult to true
set title displays device name of nhresult to false
set title displays shell path of nhresult to false
set title displays window size of nhresult to false
set title displays file name of nhresult to false
#set idnum to id of nhresult
set xxx to class of nhresrec
get class of nhresrec -- record
get length of nhresrec -- 4
set nhwinname to name of nhwin
set nhtab to selected tab of nhwin
get processes of nhtab
# main loop - wait for all nethack processes to exit
set hit to true
set nhname to "nethack" as text
delay 4
repeat while hit
set hit to false
delay 0.5
# don't blow up if the window has gone away
try
set procs to get processes of nhtab
on error number -1728
exit repeat
end try
repeat with pname in procs
if debug then
display alert "PNAME=" & pname & "=" & nhname & "="
end if
# XXX this test is odd, but more obvious tests fail
if pname starts with nhname then
#display alert "HIT" -- dangerous - infinite loop
set hit to true
end if
# yes, this is scary.
if pname starts with ("awk" as text) then
set hit to true
end if
end repeat
end repeat
if debug then
display alert "DONE"
end if
# window may have already closed or dropped its last process (error -1728)
try
close window nhwinname
on error errText number errNum
if errNum = -1728 then
if debug then
display alert "close failed (expected)"
end if
else
-- unexpected error - show it
display alert "close failed: " & errText & " errnum=" & errNum
end if
end try
end tell
# Close all the windows that don't have any live processes in them.
tell application "Terminal"
set wc to count windows
set pending to {}
if debug then
display alert "COUNT is " & wc
end if
repeat with win in windows
if debug then
display alert "WIN: " & (name of win) & " TABS: " & (count of tabs of win) & " PROCS: " & (count of processes of item 1 of tabs of win)
end if
set pcount to count of processes of item 1 of tabs of win
if pcount is 0 then
copy win to the end of pending
set wc to wc - 1
end if
end repeat
end tell
if debug then
display alert "LATE COUNT is " & wc
end if
repeat with win in pending
try
close win
end try
end repeat
# If we started Terminal.app and the user doesn't have anything else running,
# shut it down.
if needshutdown and (wc is 0) then
if debug then
display alert "trying shutdown"
end if
tell application "Terminal"
quit
end tell
end if

View File

@@ -13,7 +13,7 @@ if(! -d $playground){
print "Cannot find playground $playground.";
exit 0
}
if(! -f "$playground/castle.lev"){
if(! -f "$playground/castle.lev" && ! -f "$playground/nhdat"){
print "Failed to find playground $playground.";
exit 0
}
@@ -38,9 +38,12 @@ if($try_perm){
}
# run recover, but only if there is something that looks promising
$recover = "./recover";
$recover = "/usr/games/bin/recover" unless(-e $recover);
$uid = $<;
foreach ( <$uid*.0> ){
system ("./recover -d . $_");
system ("$recover -d . $_");
}
print "Done.\n";