[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