Re: Problems building a binary from cpython that can be installed in /Users/{USER}/Library

Barry Scott <[email protected]> Sun, 14 Nov 2021 15:57:13 +0000
Newsgroups gmane.comp.python.apple
Message-ID <[email protected]>
--===============3479285775757009184==
Content-Type: multipart/alternative;
	boundary="Apple-Mail=_12353685-FAEA-4CBD-9FFC-9B780D92B389"


--Apple-Mail=_12353685-FAEA-4CBD-9FFC-9B780D92B389
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii



> On 10 Nov 2021, at 20:28, Paul Romer <[email protected]> wrote:
>=20
> I am new to this sig. I hope it is appropriate to pose the following =
detailed question to its members. Let me know if I have misunderstood.=20=

>=20
> I'll provide a bit of background, specify the steps I took, then =
describe the two issues I'm facing on which I would welcome advice.=20
>=20
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>=20
> Background:=20
> I am trying to create a self-contained Python application that a user =
could download and run on MacOS that does not have Python 3 installed. I =
am aware that PyInstaller and py2app are alternative paths for creating =
self-contained apps and am pursuing them in parallel.=20
>=20
> The issue I want to describe here arose as part of experiments with =
the process for creating a binary for a recent version of Python (3.9.8) =
that can be installed under the user's home directory.=20
>=20
> /Users/{USER}/Library.=20
>=20
> According to the information in the cpython repository, it seems that =
it should be possible to build an installer for a full version of Python =
that can be installed someplace on a Mac other than the default =
location: /Library. In particular, one should be able to do this using=20=

>=20
> build-installer.py=20
>=20
> in the
>=20
> Mac/BuildScript=20
>=20
> directory.=20
>=20
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>=20
> Steps I Took:
>=20
> In the cpython directory I ran:=20
>=20
> > ./configure --enable-framework=3D/Users/{USER}/Library/Frameworks \
> --enable-optimizations

Why do you think you need to build CPYTHON at all?

I use py3app with the python.org <http://python.org/> downloaded =
versions of python.

>=20
> I confirmed that the Makefile included the line:=20
>=20
> CONFIG_ARGS=3D     =
'--enable-framework=3D/Users/{USER}/Library/Frameworks' =
'--enable-optimizations'
>=20
> (I also tried replacing {USER} with the actual user on my system, =
'admin'. This yielded the same results.) =20
>=20
> I put the external files OpenSSL, tcl/tck, ... (details below) that =
are required into the=20
>=20
> .../Universal/other-sources=20
>=20
> directory. I deleted my install of Python3.9 and backed-up and deleted =
all the files from=20
>=20
> /usr/local/bin=20
>=20
> Then from=20
>=20
> /Mac/BuildScript=20
>=20
> I ran=20
>=20
> > python3 build-installer.py \
> --universal-archs=3Dintel-64 \
> --dep-target=3D11
>=20
> Along the way, there were several warnings, but no errors. The end =
result is a dmg file:=20
>=20
> python-3.9.8+-macos12-2021-11-10.dmg
>=20
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>=20
> Issues:
>=20
> 1. I am not sure how to convert the dmg into a "macOS flat installer =
package" and would welcome any advice on this point.=20


You do not need to. All the user needs to do it drag the <yourapp>.app =
folder into (typically) /Applications.

>=20
> 2. But in any case, I do not think that an installer based on this dmg =
will allow an install in the Library of the user. When I inspect the dmg =
file, I find that the post-install scripts include references to the =
usual file location in /Library. For example, the script that runs after =
installing the framework has the lines:=20
>=20
> PYVER=3D"3.9"
> FWK=3D"/Library/Frameworks/Python.framework/Versions/3.9"

 What post-install script? That's not something that py2app does.

>=20
> The script that runs after installing the files for pip has the lines:=20=

>=20
> PYVER=3D"3.9"
> PYMAJOR=3D"3"
> FWK=3D"/Library/Frameworks/Python.framework/Versions/${PYVER}"
> RELFWKBIN=3D"../../..${FWK}/bin"
>=20
> This suggests that I have misunderstood the instructions. So I would =
appreciate any advice on how to succeed on this path, or suggestions =
about alternative paths that might work. In particular, the alternative =
that might be feasible would be to use the work from=20
>=20
> https://github.com/codrsquad/portable-python =
<https://github.com/codrsquad/portable-python>
>=20
> This is a recent project, not the one with the same name that was =
abandoned that you'll find here:
>=20
> https://portablepython.com/ <https://portablepython.com/>
For Barry's Emacs I do 2 steps.

1. Build the .app bundle.
2. Build .dmg that has a bunch of files including the .app bundle.

There may be a bit too much complexity but have look at how I build the =
.app bundle in
=
https://github.com/barry-scott/BarrysEmacs/blob/master/Editor/PyQtBEmacs/b=
uild-macosx.sh =
<https://github.com/barry-scott/BarrysEmacs/blob/master/Editor/PyQtBEmacs/=
macosx.mak>
and
=
https://github.com/barry-scott/BarrysEmacs/blob/master/Editor/PyQtBEmacs/b=
rand.setup-macosx.py =
<https://github.com/barry-scott/BarrysEmacs/blob/master/Editor/PyQtBEmacs/=
brand.setup-macosx.py>

I'm using PyQt not Tk.

Barry


>=20
>=20
> Thanks for reading through all this!=20
>=20
>=20
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>=20
> PS: Contents of my .../Universal/other-sources directory:=20
>=20
> -rw-r--r--   1 admin  staff    367573 Nov 10 00:53 =
ncurses-5.9-20120616-patch.sh.bz2
> -rw-r--r--   1 admin  staff   2826473 Nov 10 00:53 ncurses-5.9.tar.gz
> -rw-r--r--   1 admin  staff   9834044 Nov  9 22:19 =
openssl-1.1.1l.tar.gz
> -rw-rw-rw-@  1 admin  staff   2956627 Nov 10 01:06 =
sqlite-autoconf-3350500.tar.gz
> -rw-rw-rw-@  1 admin  staff  10259009 Nov  9 22:55 =
tcl8.6.11-src.tar.gz
> -rw-rw-rw-@  1 admin  staff   4496914 Nov 10 00:37 tk8.6.11-src.tar.gz
> -rw-rw-rw-@  1 admin  staff   1490665 Nov 10 00:45 xz-5.2.3.tar.gz
>=20
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>=20
>=20
> Paul Romer=20
> [email protected] <mailto:[email protected]> | paulromer.net =
<http://paulromer.net/> | @paulromer =
<https://twitter.com/paulmromer?ref_src=3Dtwsrc%5Egoogle%7Ctwcamp%5Eserp%7=
Ctwgr%5Eauthor>
>=20
> _______________________________________________
> Pythonmac-SIG maillist  -  [email protected]
> https://mail.python.org/mailman/listinfo/pythonmac-sig
> unsubscribe: https://mail.python.org/mailman/options/Pythonmac-SIG


--Apple-Mail=_12353685-FAEA-4CBD-9FFC-9B780D92B389
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=us-ascii

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dus-ascii"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" class=3D""><br =
class=3D""><div><br class=3D""><blockquote type=3D"cite" class=3D""><div =
class=3D"">On 10 Nov 2021, at 20:28, Paul Romer &lt;<a =
href=3D"mailto:[email protected]" class=3D"">[email protected]</a>&gt; =
wrote:</div><br class=3D"Apple-interchange-newline"><div class=3D""><div =
dir=3D"ltr" class=3D""><div class=3D""><span =
style=3D"font-family:monospace" class=3D"">I am new to this sig. I hope =
it is appropriate to pose the following detailed question to its =
members.&nbsp;</span><span style=3D"font-family:monospace" class=3D"">Let =
me know if I have misunderstood. <br class=3D""></span></div><div =
class=3D""><span style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D"">I'll provide a bit of =
background, specify the steps I took, then describe the two issues I'm =
facing on which I would welcome advice. <br class=3D""></span></div><div =
class=3D""><span style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><span =
style=3D"font-family:monospace" class=3D""><span =
style=3D"font-family:monospace" =
class=3D"">=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D</spa=
n></span></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><span =
style=3D"font-family:monospace" class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></span></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><b class=3D"">Background: =
</b></span><span style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D"">I am trying to create a =
self-contained Python application that a user could download and run on =
MacOS that does not have Python 3 installed. <span =
style=3D"font-family:monospace" class=3D"">I am aware that PyInstaller =
and py2app are alternative paths for creating self-contained apps and am =
pursuing them in parallel. <br class=3D""></span></span></div><div =
class=3D""><span style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D"">The issue I want to describe =
here arose as part of experiments with the process for creating a binary =
for a recent version of Python (3.9.8) that can be installed under the =
user's home directory. <br class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div style=3D"margin-left:40px" class=3D""><span =
style=3D"font-family:monospace" class=3D"">/Users/{USER}/Library. <br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D"">According to the information =
in the cpython repository, it seems that it should be possible to build =
an installer for a full version of Python that can be installed =
someplace on a Mac other than the default location: /Library. In =
particular, one should be able to do this using <br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div style=3D"margin-left:40px" class=3D""><span =
style=3D"font-family:monospace" class=3D"">build-installer.py <br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D"">in the<br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div style=3D"margin-left:40px" class=3D""><span =
style=3D"font-family:monospace" class=3D"">Mac/BuildScript <br =
class=3D""></span></div><div style=3D"margin-left:40px" class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D"">directory. <br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><b class=3D""><br =
class=3D""></b></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><b class=3D""><span =
style=3D"font-family:monospace" class=3D""><span =
style=3D"font-family:monospace" =
class=3D"">=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D</spa=
n></span></b></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><b class=3D""><span =
style=3D"font-family:monospace" class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></span></b></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><b class=3D"">Steps I =
Took:</b></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D"">In the cpython directory I =
ran: <br class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div style=3D"margin-left:40px" class=3D""><span =
style=3D"font-family:monospace" class=3D"">&gt; ./configure =
--enable-framework=3D/Users/{USER}/Library/Frameworks \</span></div><div =
style=3D"margin-left:40px" class=3D""><span =
style=3D"font-family:monospace" class=3D"">--enable-optimizations<br =
class=3D""></span></div></div></div></blockquote><div><br =
class=3D""></div>Why do you think you need to build CPYTHON at =
all?</div><div><br class=3D""></div><div>I use py3app with the <a =
href=3D"http://python.org" class=3D"">python.org</a>&nbsp;downloaded =
versions of python.</div><div><br class=3D""><blockquote type=3D"cite" =
class=3D""><div class=3D""><div dir=3D"ltr" class=3D""><div =
class=3D""><div class=3D""><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D"">I confirmed that the Makefile =
included the line: <br class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><div style=3D"background-color: =
rgb(255, 255, 255); font-weight: normal; font-size: 12px; line-height: =
18px; white-space: pre;" class=3D""><div style=3D"margin-left:40px" =
class=3D""><span style=3D"font-family:monospace" class=3D""><span =
style=3D"" class=3D"">CONFIG_ARGS=3D     =
'--enable-framework=3D/Users/{USER}/Library/Frameworks' =
'--enable-optimizations'</span></span></div><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><span style=3D"font-family:monospace" =
class=3D"">(I also tried replacing {USER} with the actual user on my =
system, 'admin'. This yielded the same results.)&nbsp; <br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D"">I put the external files =
OpenSSL, tcl/tck, ... (details below) that are required into the <br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div style=3D"margin-left:40px" class=3D""><span =
style=3D"font-family:monospace" class=3D"">.../Universal/other-sources =
<br class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D"">directory. I deleted my =
install of Python3.9 and backed-up and deleted all the files from <br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div style=3D"margin-left:40px" class=3D""><span =
style=3D"font-family:monospace" class=3D"">/usr/local/bin <br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D"">Then from <br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div style=3D"margin-left:40px" class=3D""><span =
style=3D"font-family:monospace" class=3D"">/Mac/BuildScript <br =
class=3D""></span></div><div style=3D"margin-left:40px" class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><span style=3D"font-family:monospace" class=3D"">I=
 ran <br class=3D""></span></div><div class=3D""><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div style=3D"margin-left:40px" class=3D""><span =
style=3D"font-family:monospace" class=3D"">&gt; python3 =
build-installer.py \<br class=3D""></span></div><div =
style=3D"margin-left:40px" class=3D""><span =
style=3D"font-family:monospace" class=3D"">--universal-archs=3Dintel-64 =
\<br class=3D"">--dep-target=3D11</span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><span =
style=3D"font-family:monospace" class=3D"">Along the way, there were =
several warnings, but no errors. </span>The end result is a dmg file: =
<br class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div style=3D"margin-left:40px" class=3D""><span =
style=3D"font-family:monospace" =
class=3D"">python-3.9.8+-macos12-2021-11-10.dmg</span></div><div =
class=3D""><div style=3D"margin-left:40px" class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><span style=3D"font-family:monospace" =
class=3D""><span style=3D"font-family:monospace" class=3D""><span =
style=3D"font-family:monospace" =
class=3D"">=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D</spa=
n></span></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><b =
class=3D"">Issues:</b></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D"">1. I am not sure how to =
convert the dmg into a "macOS flat installer package" and would welcome =
any advice on this point. <br =
class=3D""></span></div></div></div></div></div></blockquote><div><br =
class=3D""></div><div><br class=3D""></div><div>You do not need to. All =
the user needs to do it drag the &lt;yourapp&gt;.app folder into =
(typically) /Applications.</div><br class=3D""><blockquote type=3D"cite" =
class=3D""><div class=3D""><div dir=3D"ltr" class=3D""><div =
class=3D""><div class=3D""><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D"">2. But in any case, I do not =
think that an installer based on this dmg will allow an install in the =
Library of the user. When I inspect the dmg file, I find that the =
post-install scripts include references to the usual file location in =
/Library. For example, the script that runs after installing the =
framework has the lines: <br class=3D""></span></div><div class=3D""><span=
 style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><div style=3D"margin-left:40px" =
class=3D""><span style=3D"font-family:monospace" class=3D"">PYVER=3D"3.9"<=
br class=3D"">FWK=3D"/Library/Frameworks/Python.framework/Versions/3.9"<br=
 =
class=3D""></span></div></div></div></div></div></div></blockquote><div><b=
r class=3D""></div>&nbsp;What post-install script? That's not something =
that py2app does.</div><div><br class=3D""><blockquote type=3D"cite" =
class=3D""><div class=3D""><div dir=3D"ltr" class=3D""><div =
class=3D""><div class=3D""><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D"">The script that runs after =
installing the files for pip has the lines: <br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div style=3D"margin-left:40px" class=3D""><span =
style=3D"font-family:monospace" class=3D"">PYVER=3D"3.9"<br =
class=3D"">PYMAJOR=3D"3"<br =
class=3D"">FWK=3D"/Library/Frameworks/Python.framework/Versions/${PYVER}"<=
br class=3D"">RELFWKBIN=3D"../../..${FWK}/bin"</span></div><div =
style=3D"margin-left:40px" class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><span style=3D"font-family:monospace" =
class=3D"">This suggests that I have misunderstood the instructions. So =
I would appreciate any advice on how to succeed on this path, or =
suggestions about alternative paths that might work. In particular, the =
alternative that might be feasible would be to use the work from <br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div style=3D"margin-left:40px" class=3D""><span =
style=3D"font-family:monospace" class=3D""><a =
href=3D"https://github.com/codrsquad/portable-python" =
class=3D"">https://github.com/codrsquad/portable-python</a> =
</span></div><div class=3D""><span style=3D"font-family:monospace" =
class=3D""><br class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D"">This is a recent project, not =
the one with the same name that was abandoned that you'll find =
here:</span></div><div class=3D""><span style=3D"font-family:monospace" =
class=3D""><br class=3D""></span></div><div style=3D"margin-left:40px" =
class=3D""><span style=3D"font-family:monospace" class=3D""><a =
href=3D"https://portablepython.com/" =
class=3D"">https://portablepython.com/</a></span></div></div></div></div><=
/blockquote><div><br class=3D""></div><div>For Barry's Emacs I do 2 =
steps.</div><div><br class=3D""></div><div>1. Build the .app =
bundle.</div><div>2. Build .dmg that has a bunch of files including the =
.app bundle.</div><div><br class=3D""></div><div>There may be a bit too =
much complexity but have look at how I build the .app bundle =
in</div><div><a =
href=3D"https://github.com/barry-scott/BarrysEmacs/blob/master/Editor/PyQt=
BEmacs/macosx.mak" =
class=3D"">https://github.com/barry-scott/BarrysEmacs/blob/master/Editor/P=
yQtBEmacs/build-macosx.sh</a></div><div>and</div><div><a =
href=3D"https://github.com/barry-scott/BarrysEmacs/blob/master/Editor/PyQt=
BEmacs/brand.setup-macosx.py" =
class=3D"">https://github.com/barry-scott/BarrysEmacs/blob/master/Editor/P=
yQtBEmacs/brand.setup-macosx.py</a></div><div><br =
class=3D""></div><div>I'm using PyQt not Tk.</div><div><br =
class=3D""></div><div>Barry</div><div><br class=3D""></div><br =
class=3D""><blockquote type=3D"cite" class=3D""><div class=3D""><div =
dir=3D"ltr" class=3D""><div class=3D""><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D"">Thanks for reading through =
all this! <br class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><span =
style=3D"font-family:monospace" =
class=3D"">=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D</spa=
n></span></div><div class=3D""><span style=3D"font-family:monospace" =
class=3D""><br class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D"">PS: Contents of my =
.../Universal/other-sources directory: <br class=3D""></span></div><div =
class=3D""><span style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D"">		-rw-r--r-- =
&nbsp; 1 admin &nbsp;staff &nbsp; &nbsp;367573 Nov 10 00:53 =
ncurses-5.9-20120616-patch.sh.bz2<br class=3D"">		=
-rw-r--r-- &nbsp; 1 admin &nbsp;staff &nbsp; 2826473 Nov 10 00:53 =
ncurses-5.9.tar.gz<br class=3D"">		-rw-r--r-- &nbsp; 1 =
admin &nbsp;staff &nbsp; 9834044 Nov &nbsp;9 22:19 =
openssl-1.1.1l.tar.gz<br class=3D"">		-rw-rw-rw-@ &nbsp;1 =
admin &nbsp;staff &nbsp; 2956627 Nov 10 01:06 =
sqlite-autoconf-3350500.tar.gz<br class=3D"">		-rw-rw-rw-@ =
&nbsp;1 admin &nbsp;staff &nbsp;10259009 Nov &nbsp;9 22:55 =
tcl8.6.11-src.tar.gz<br class=3D"">		-rw-rw-rw-@ &nbsp;1 =
admin &nbsp;staff &nbsp; 4496914 Nov 10 00:37 tk8.6.11-src.tar.gz<br =
class=3D"">		-rw-rw-rw-@ &nbsp;1 admin &nbsp;staff &nbsp; =
1490665 Nov 10 00:45 xz-5.2.3.tar.gz</span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><div class=3D""><span =
style=3D"font-family:monospace" =
class=3D"">=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><span =
style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div><div class=3D""><div dir=3D"ltr" =
class=3D"gmail_signature" data-smartmail=3D"gmail_signature"><div =
dir=3D"ltr" class=3D""><div style=3D"font-size: 12px;" class=3D""><span =
style=3D"font-family:monospace" class=3D"">Paul Romer&nbsp;<br =
class=3D""><a href=3D"mailto:[email protected]" =
style=3D"color:rgb(17,85,204)" target=3D"_blank" =
class=3D"">[email protected]</a>&nbsp;|&nbsp;<a =
href=3D"http://paulromer.net/" style=3D"color:rgb(17,85,204)" =
target=3D"_blank" class=3D"">paulromer.net</a>&nbsp;|&nbsp;<a =
href=3D"https://twitter.com/paulmromer?ref_src=3Dtwsrc%5Egoogle%7Ctwcamp%5=
Eserp%7Ctwgr%5Eauthor" style=3D"color:rgb(17,85,204)" target=3D"_blank" =
class=3D"">@paulromer</a></span></div><div style=3D"font-size: 12px;" =
class=3D""><span style=3D"font-family:monospace" class=3D""><br =
class=3D""></span></div></div></div></div></div></div></div>
_______________________________________________<br =
class=3D"">Pythonmac-SIG maillist &nbsp;- &nbsp;<a =
href=3D"mailto:[email protected]" =
class=3D"">[email protected]</a><br class=3D""><a =
href=3D"https://mail.python.org/mailman/listinfo/pythonmac-sig" =
class=3D"">https://mail.python.org/mailman/listinfo/pythonmac-sig</a><br =
class=3D"">unsubscribe: =
https://mail.python.org/mailman/options/Pythonmac-SIG<br =
class=3D""></div></blockquote></div><br class=3D""></body></html>=

--Apple-Mail=_12353685-FAEA-4CBD-9FFC-9B780D92B389--

--===============3479285775757009184==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Pythonmac-SIG maillist  -  [email protected]
https://mail.python.org/mailman/listinfo/pythonmac-sig
unsubscribe: https://mail.python.org/mailman/options/Pythonmac-SIG

--===============3479285775757009184==--