QuickWho

Check-in [8e075bfc2d]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Re-work Mac build to self-developed bundle scheme to avoid issues with py2app
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 8e075bfc2d99ef95e62d9f76faa3ea56dc3fdb5a
User & Date: kevin 2018-02-24 19:58:37
Context
2018-02-24
22:25
More updates for Mac check-in: 22d31afe7c user: kevin tags: trunk
19:58
Re-work Mac build to self-developed bundle scheme to avoid issues with py2app check-in: 8e075bfc2d user: kevin tags: trunk
2017-06-21
03:51
Tweak to regproc check-in: 533d0d077f user: kevin tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to QuickWho.py.

71
72
73
74
75
76
77
78
79
80
81
82
83
84
85

    def __init__(self, parent):
        Tk.__init__(self, parent)
        try:
            self.tk.call('console', 'hide')
        except TclError:
            pass
        self.setAppName('QuickWho', '6.2')
        self.makeImages()
        if self.isAqua():
            self.tk.call('package', 'require', 'tclservices')
            self.tk.call('package', 'require', 'cocoaprint')
            self.createcommand('::tk::mac::PerformService', self.runService)
            self.tk.call('package', 'require', 'fullscreen')
            self.tk.call('package', 'require', 'aem')







|







71
72
73
74
75
76
77
78
79
80
81
82
83
84
85

    def __init__(self, parent):
        Tk.__init__(self, parent)
        try:
            self.tk.call('console', 'hide')
        except TclError:
            pass
        self.setAppName('QuickWho', '6.3')
        self.makeImages()
        if self.isAqua():
            self.tk.call('package', 'require', 'tclservices')
            self.tk.call('package', 'require', 'cocoaprint')
            self.createcommand('::tk::mac::PerformService', self.runService)
            self.tk.call('package', 'require', 'fullscreen')
            self.tk.call('package', 'require', 'aem')
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
        self.compassphoto = PhotoImage("compass", data=compassdata)

    #aboutwindow

    def aboutWindow(self):
       
        messagebox.showinfo(title='About QuickWho',   message='QuickWho: Domain Name Service', 
		icon='info', parent=self, detail='Version 6.2\n(c) 2017 WordTech Communications LLC')
        

    #draw the GUI
    def drawGUI(self):

        self.title('QuickWho')
        self.option_add('*tearOff', FALSE)







|







292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
        self.compassphoto = PhotoImage("compass", data=compassdata)

    #aboutwindow

    def aboutWindow(self):
       
        messagebox.showinfo(title='About QuickWho',   message='QuickWho: Domain Name Service', 
		icon='info', parent=self, detail='Version 6.3\n(c) 2018 WordTech Communications LLC')
        

    #draw the GUI
    def drawGUI(self):

        self.title('QuickWho')
        self.option_add('*tearOff', FALSE)

Changes to buildapp.

14
15
16
17
18
19
20
21










































































22

23






24
25






26


27


28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46






47

48
49
50
51
52
53
54
55
56
57
58
59
60
61

if [ -a build ]
then
    rm -rf build
fi


python3 setup.py py2app --includes Pmw




















































































mkdir dist/QuickWho.app/Contents/lib









find dist/QuickWho.app  -name "*.a"  -exec rm -rf {} \;


find dist/QuickWho.app  -name "*debug"  -exec rm -rf {} \;
find dist/QuickWho.app  -name "*.sh"  -exec rm -rf {} \; 


#copy the supporting libraries
for lib in scriptlibs/*
do
  echo "Copying $lib library..."
  cp -R -f $lib dist/QuickWho.app/Contents/lib
done

#copy the supporting libraries
for lib in maclibs/*
do
  echo "Copying $lib library..."
  cp -R -f $lib dist/QuickWho.app/Contents/lib
done








find dist/QuickWho.app -type f -name "*.so"  -exec codesign --verbose --signature-size 9400 -f -s "Developer ID Application: Kevin Walzer" {} \;

find dist/QuickWho.app -type f -name "*.dylib"  -exec codesign --verbose --signature-size 9400 -f -s "Developer ID Application: Kevin Walzer" {} \; 

codesign  --verbose --signature-size 9400 -f -s "Developer ID Application: Kevin Walzer" dist/QuickWho.app/Contents/Frameworks/Tk.framework/Versions/8.6/Resources/Wish.app/Contents/MacOS/Wish
codesign  --verbose --signature-size 9400 -f -s "Developer ID Application: Kevin Walzer" dist/QuickWho.app/Contents/Frameworks/Tk.framework/Versions/Current
codesign --verbose --signature-size 9400 -f -s "Developer ID Application: Kevin Walzer" dist/QuickWho.app/Contents/Frameworks/Tcl.framework/Versions/Current
codesign --verbose --signature-size 9400 -f -s "Developer ID Application: Kevin Walzer" dist/QuickWho.app/Contents/Frameworks/Python.framework/Versions/Current
codesign  --verbose --signature-size 9400 -f -s "Developer ID Application: Kevin Walzer" dist/QuickWho.app/Contents/MacOS/python
xattr -cr dist/QuickWho.app

codesign  --signature-size 9400 -f -s "Developer ID Application: Kevin Walzer" --verbose=2  dist/QuickWho.app

cp readme.txt dist/readme.txt
cd dist
ln -s /Applications Applications







|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

>

>
>
>
>
>
>

|
>
>
>
>
>
>

>
>
|
>
>
|
|






|






|



>
>
>
>
>
>

>






|







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159

if [ -a build ]
then
    rm -rf build
fi


cat << EOT > Info.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>English</string>
	<key>CFBundleDisplayName</key>
	<string>QuickWho</string>
	<key>CFBundleExecutable</key>
	<string>_quickWho</string>
	<key>CFBundleGetInfoString</key>
	<string>QuickWho $1</string>
	<key>CFBundleIconFile</key>
	<string>QuickWho.icns</string>
	<key>CFBundleIdentifier</key>
	<string>com.codebykevin.quickwho</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>QuickWho</string>
	<key>CFBundlePackageType</key>
	<string>APPL</string>
	<key>CFBundleShortVersionString</key>
	<string>$1</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>$1</string>
	<key>LSApplicationCategoryType</key>
	<string>public.app-category.utilities</string>
	<key>LSArchitecturePriority</key>
	<string>x86_64</string>
	<key>LSHasLocalizedDisplayName</key>
	<false/>
	<key>LSMinimumSystemVersion</key>
	<string>10.13</string>
	<key>LSMinimumSystemVersionByArchitecture</key>
	<dict>
		<key>x86_64</key>
		<string>10.13</string>
	</dict>
	<key>NSAppleScriptEnabled</key>
	<string>YES</string>
	<key>NSHighResolutionCapable</key>
	<string>YES</string>
	<key>NSHumanReadableCopyright</key>
	<string>Copyright (c) 2018 WordTech Communications LLC</string>
	<key>NSMainNibFile</key>
	<string>MainMenu</string>
	<key>NSPrincipalClass</key>
	<string>NSApplication</string>
	<key>NSServices</key>
	<array>
		<dict>
			<key>NSMenuItem</key>
			<dict>
				<key>default</key>
				<string>QuickWho: Display Domain Information</string>
			</dict>
			<key>NSMessage</key>
			<string>provideService</string>
			<key>NSPortName</key>
			<string>QuickWho</string>
			<key>NSSendTypes</key>
			<array>
				<string>NSStringPboardType</string>
			</array>
		</dict>
	</array>
	<key>OSAScriptingDefinition</key>
	<string>QuickWho.sdef</string>
</dict>
</plist>
EOT

gcc main.m -o _quickwho -framework Carbon -framework Cocoa

mkdir dist
mkdir dist/QuickWho.app
mkdir dist/QuickWho.app/Contents
mkdir dist/QuickWho.app/Contents/MacOS
mkdir dist/QuickWho.app/Contents/Resources
mkdir dist/QuickWho.app/Contents/Frameworks

cp Info.plist dist/QuickWho.app/Contents/Info.plist
cp _quickwho dist/QuickWho.app/Contents/MacOS/_quickwho
cp launcher dist/QuickWho.app/Contents/Resources/launcher
cp QuickWho.icns dist/QuickWho.app/Contents/Resources/QuickWho.icns
cp QuickWho.sdef dist/QuickWho.app/Contents/Resources/QuickWho.sdef
cp QuickWho.py  dist/QuickWho.app/Contents/Resources/QuickWho.py
cp ToolTip.py  dist/QuickWho.app/Contents/Resources/ToolTip.py

#copy the frameworks
cp -R -f /Library/Frameworks/Tcl.framework  dist/QuickWho.app/Contents/Frameworks/Tcl.framework
cp -R -f /Library/Frameworks/Tk.framework  dist/QuickWho.app/Contents/Frameworks/Tk.framework
cp -R -f /Library/Frameworks/Python.framework  dist/QuickWho.app/Contents/Frameworks/Python.framework
cp -f dist/QuickWho.app/Contents/Frameworks/Python.framework/Versions/3.6/Resources/Python.app/Contents/MacOS/Python dist/QuickWho.app/Contents/Resources/QuickWho
cp -f /usr/local/lib/libcrypto.42.dylib  dist/QuickWho.app/Contents/Frameworks/libcrypto.42.dylib
cp -f /usr/local/lib/libssl.44.dylib  dist/QuickWho.app/Contents/Frameworks/libssl.44.dylib 


#copy the supporting libraries
for lib in scriptlibs/*
do
  echo "Copying $lib library..."
  cp -R -f $lib dist/QuickWho.app/Contents/Frameworks/Tcl.framework/Versions/8.6/Resources/Scripts
done

#copy the supporting libraries
for lib in maclibs/*
do
  echo "Copying $lib library..."
  cp -R -f $lib dist/QuickWho.app/Contents/Frameworks/Tcl.framework/Versions/8.6/Resources/Scripts
done



find dist/QuickWho.app  -name "*.a"  -exec rm -rf {} \;
find dist/QuickWho.app  -name "*debug"  -exec rm -rf {} \;
find dist/QuickWho.app  -name "*.sh"  -exec rm -rf {} \; 

find dist/QuickWho.app -type f -name "*.so"  -exec strip -x {} \;
find dist/QuickWho.app -type f -name "*.so"  -exec codesign --verbose --signature-size 9400 -f -s "Developer ID Application: Kevin Walzer" {} \;
find dist/QuickWho.app -type f -name "*.dylib"  -exec strip -x  {} \;
find dist/QuickWho.app -type f -name "*.dylib"  -exec codesign --verbose --signature-size 9400 -f -s "Developer ID Application: Kevin Walzer" {} \; 

codesign  --verbose --signature-size 9400 -f -s "Developer ID Application: Kevin Walzer" dist/QuickWho.app/Contents/Frameworks/Tk.framework/Versions/8.6/Resources/Wish.app/Contents/MacOS/Wish
codesign  --verbose --signature-size 9400 -f -s "Developer ID Application: Kevin Walzer" dist/QuickWho.app/Contents/Frameworks/Tk.framework/Versions/Current
codesign --verbose --signature-size 9400 -f -s "Developer ID Application: Kevin Walzer" dist/QuickWho.app/Contents/Frameworks/Tcl.framework/Versions/Current
codesign --verbose --signature-size 9400 -f -s "Developer ID Application: Kevin Walzer" dist/QuickWho.app/Contents/Frameworks/Python.framework/Versions/Current
codesign  --verbose --signature-size 9400 -f -s "Developer ID Application: Kevin Walzer" dist/QuickWho.app/Contents/MacOS/_quickwho
xattr -cr dist/QuickWho.app

codesign  --signature-size 9400 -f -s "Developer ID Application: Kevin Walzer" --verbose=2  dist/QuickWho.app

cp readme.txt dist/readme.txt
cd dist
ln -s /Applications Applications
80
81
82
83
84
85
86
87
88
89

cd ../

#create archive of entire source tree
tar cvfz QuickWho-$1.tgz QuickWho

echo "Done."










<
<
<
178
179
180
181
182
183
184




cd ../

#create archive of entire source tree
tar cvfz QuickWho-$1.tgz QuickWho

echo "Done."



Added launcher.





































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/sh

name=`basename "$0"`
tmp="$0"
tmp=`dirname "$tmp"`
tmp=`dirname "$tmp"`
bundle=`dirname "$tmp"`
bundle_contents="$bundle"/Contents
bundle_res="$bundle_contents"/Resources
bundle_frameworks="$bundle_contents"/Frameworks
python="$bundle_res"/QuickWho
main_script="$bundle_res"/QuickWho.py

export DYLD_LIBRARY_PATH="$bundle_frameworks"
export DYLD_FRAMEWORK_PATH="$bundle_frameworks"


exec "$python" "$@" $main_script

Added main.m.

















































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#import <Foundation/Foundation.h>
#import <Cocoa/Cocoa.h>
#import <stdlib.h>
#import <stdio.h>
#import <unistd.h>
#import <sys/wait.h>

int main (int argc, const char * argv[]) {

 
  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

  NSString *launchpath = [[NSBundle mainBundle] pathForResource:@"launcher" ofType:nil];

  char cmd[50000];

  [launchpath getCString:cmd maxLength:(sizeof cmd) encoding:NSUTF8StringEncoding];

  system(cmd);

  [pool release];

  
}

Changes to scriptlibs/machelp/help.txt.

103
104
105
106
107
108
109




110
111
112
113
114
115
116
 * Help viewer by Keith Vetter: [http://wiki.tcl.tk/19649].
 * pythonwhois library. Website and license: [https://pypi.python.org/pypi/pythonwhois/2.4.3]
 
-------------------
title: QuickWho Version History
alias: History





'''6.2 (May 1, 2017):'''
 * Improved scrolling performance, security support on macOS.
 * Improved security support on Windows.

'''6.1 (March 1, 2017):'''
 * Improved security on software updates.
 * Minor UI enhancements.







>
>
>
>







103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
 * Help viewer by Keith Vetter: [http://wiki.tcl.tk/19649].
 * pythonwhois library. Website and license: [https://pypi.python.org/pypi/pythonwhois/2.4.3]
 
-------------------
title: QuickWho Version History
alias: History

'''6.3 (February 24, 2018):'''
 * Improved resizing of main window for efficient UI.
 * Removal of console on Windows.

'''6.2 (May 1, 2017):'''
 * Improved scrolling performance, security support on macOS.
 * Improved security support on Windows.

'''6.1 (March 1, 2017):'''
 * Improved security on software updates.
 * Minor UI enhancements.
190
191
192
193
194
195
196
197
198
199
200
201
202
203
title: License
alias: License
 
'''The MIT License (MIT)'''

QuickWho source code: [http://fossil.codebykevin.com/fossil.cgi/quickwho/]

Copyright (c) 2017 WordTech Communications LLC

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.







|






194
195
196
197
198
199
200
201
202
203
204
205
206
207
title: License
alias: License
 
'''The MIT License (MIT)'''

QuickWho source code: [http://fossil.codebykevin.com/fossil.cgi/quickwho/]

Copyright (c) 2018 WordTech Communications LLC

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Changes to scriptlibs/softwareupdate/softwareupdate.tcl.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#softwareupdate.tcl  routines to manage spoftware updates

#  Copyright (C) 2014  WordTech Communications LLC

#MIT license

package provide softwareupdate 1.5
package require http
package require tls

::http::register https 443 [list ::tls::socket -servername codebykevin.com -request 0 -require 0 -ssl2 0 -ssl3 0 -tls1 1]

namespace eval softwareupdate {

    if {![info exists library]} {
	variable library [file dirname [info script]]








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#softwareupdate.tcl  routines to manage spoftware updates

#  Copyright (C) 2014  WordTech Communications LLC

#MIT license

package provide softwareupdate 1.5
package require http
package require tls 

::http::register https 443 [list ::tls::socket -servername codebykevin.com -request 0 -require 0 -ssl2 0 -ssl3 0 -tls1 1]

namespace eval softwareupdate {

    if {![info exists library]} {
	variable library [file dirname [info script]]