[Buildbot-commits] [Buildbot] #971: Build a windows installer
Buildbot
nobody at buildbot.net
Tue Jul 26 00:28:23 UTC 2011
#971: Build a windows installer
------------------------+-----------------------
Reporter: dustin | Owner: fatman2
Type: enhancement | Status: accepted
Priority: major | Milestone: 0.8.+
Version: | Resolution:
Keywords: windows |
------------------------+-----------------------
Comment (by fatman2):
Long post coming up!
Replying to [comment:22 jollyroger]:
> I looked at your source code. I didn't understand the fossil idea
currently,
Umm, yeah, that's probably my fault. I've misconfigured my Fossil repos
somehow. Sorry.
> so I just downloaded zip archive.
Good, that part still works.
> Unfortunately its currently FTBFS.
Yes, I left it very much a work-in-progress for others to pick apart. And
for me to come back to occasionally.
> you implement user creation, service handling and similar ... better to
have corresponding icons in "buildbot" menu
I intended this to be a monolithic installer that would take the user from
"no Buildbot installed" to "functional Buildbot up and running" as quickly
as possible. Some parts of the install are painful even for an experienced
Windows user and sysadmin, and it's easy to go wrong and not know why. In
my opinion, the whole thing can and should be automated.
> bundling software installations
There isn't any particular reason for this. No one objected at the time.
It can be changed if you want.
> Python 2.6
I could only get Buildbot working at all with Python 2.6. It simply won't
install for me under Windows 7 with Python 2.7. I think the "howto"
instructions are out of date to be honest. I'm just doing the best I can
with what I've got. :)
> hardcoded paths ... and some install paths in "Program Files"
Yes, I don't like this either. I was intending to remove the hardcoded
paths after I got the installer basically working. The "Program Files"
problem isn't easy to solve because Windows has no single standard
location for user programs like other operating systems do.
> cmake ... Isn't this too much (adding new unnecessary build dependency)?
There's no dependency. The Fossil repository is just an image of my own
working directory. The NSIS scripts are the important thing. They don't
depend on CMake at all. I happen to use CMake because I like it, but if
you don't, then feel free to delete CMakeLists.txt and the cmake dir.
Nothing bad will happen.
> I would leave an installer only two functions:
It certainly makes sense from a purist angle, but the problem is that
Buildbot isn't an ordinary program. There are a lot of fiddly little tasks
that need doing (set up a user, log on as that user, set up service, log
out, etc) that could be done so much more easily with a script.
> other actions may be done more than once ... separate commands in
"buildbot" menu
Good point. A simple installer can't take care of this. I suggest we need
an administration program to take care of each "slave herd", but until we
sort that out your menu icons might be the best way to go. The installer
should install only one master or only one slave (or only one of each),
plus your admin icons to add/delete slaves, etc. Does it make sense to
have more than one master per machine? Yes, I think so.
> done some work ... take a look
Cool, I'll check it out.
Replying to [comment:23 jollyroger]:
> * Installer should install buildbot and its dependencies.
Agree.
> Creating users, registering services ... tools installed together with
buildbot or by hand
Disagree very much for reasons stated above.
> * Dependencies are better installed by downloading ... buildbot.net
will host an INI file
Ooh, nifty. Agree very much.
> * Installer should be able to install buildbot for Python 2.x branch >=
2.4
Eeek! Have you tried this? Agreed it needs to be done. Stupid twisty
Python. :P
> I propose the following installer workflow:
> 1. Detect available Python versions and buildbot's dependencies. List
all possible Python versions and buildbot dependencies(listed as
subsections to respective Python section). Note status of the dependencies
for every Python section (installed/not installed). User selects Python
versions where buildbot will be installed and goes to the next
installation screen.
Yes.
> 2. The next step should be downloading dependencies and installing
them. Installer downloads files and runs installations. If all
dependencies are available, the step is skipped. If any of the
dependencies' setup exited with failure, the users is asked wether to
retry. After all installations finished successfully, we check again
status of the dependencies(this is because some installations would allow
to install Python packages to the several Python environments in one run)
and notify user if those are not equal to what user requested. Here user
may ask to install the forgotten dependencies or to drop buildbot
installation for current Python section at all.
Yes.
> 3. Installing buildbot itself. This includes copying files and
generating precompiled *.pyc files.
Yes.
> 4. Creating links and menu groups. Currently didn't go far into
details.
I suggest links for creating and destroying herds of masters and slaves.
> Currently I work on functions that will detect installed dependencies.
These are needed anyway.
True.
> Another question to discuss is the uninstaller. It is surely will be
written, but I have doubts about where it should be located. Since we
could install buildbot into several places at once, the uninstaller should
have some common place or else we should generate uninstaller for every
Python environment. The uninstaller's behavior is an open question though.
Should it remove all installed files from all environments at once or just
remove buildbot code from the corresponding Python environment? Ideas are
welcome.
Oh boy. This is a biggy. I have several opinions on this, all conflicting.
More discussion needed.
--
Ticket URL: <http://trac.buildbot.net/ticket/971#comment:24>
Buildbot <http://buildbot.net/>
Buildbot: build/test automation
More information about the Commits
mailing list