Release process for 0.2.7.1

Help test release candidates for the next release
Post Reply
User avatar
Z-Man
God & Project Admin
Posts: 11587
Joined: Sun Jan 23, 2005 6:01 pm
Location: Cologne
Contact:

Post by Z-Man »

klax wrote:I've reuploaded RC5 Windows Builds with "updated" documentation (also did not have compile.htm and readme_windows.htm). Also corrected duplicated COPYING.txt :s
Thanks!
z-man: I've added in cvs commands.txt to /src/doc (it was missing, how did u generated the docs?). Also this commands.txt adds a few lines thrashed when u moved the doc dir (two new commands in 0.2.7.0).
The commands.txt is the output of "armagetronad-dedicated --doc". That spews out all the commands and variables the server knows. It's another one of these files that don't belong into cvs, sorry for overwriting your changes.
We'll need to think of a decent release process for the future. Making the build subdirectory external should be the first step, it should then contain a makefile that lets you generate source tarballs, windows source directories prepared for instant build and binaries.

Llaffer2: ethereal would be such a sniffer, but I bet we would not be able to make sense of its output. Why don't you attach screenshots?
User avatar
klax
Project Developer
Posts: 481
Joined: Tue Jun 08, 2004 3:51 pm
Location: Barcelona, Spain
Contact:

Post by klax »

yep the build process is not clean for any platform lol
at least we have binaries lol

didn't know that about that generated commands.txt :s
User avatar
Z-Man
God & Project Admin
Posts: 11587
Joined: Sun Jan 23, 2005 6:01 pm
Location: Cologne
Contact:

Post by Z-Man »

klax wrote:didn't know that about that generated commands.txt :s
No wonder. It's not documented. You only see it in one line of the main Makefile.

My old release process would go something like this:
In linux, start the terribly long build/build script. That would, if all went well, somehow generate the rpms, the source tarball, web and windows documentation and copy everything over to the windows partition.
Then I would boot windows, build from the CVS updated to the right version into a specially prepared directory, call some batch files that did more copying ( division of client and server releasse folders ), start the install maker, painstaikingly click my way through the installer creation process and test the result.
Then I'd test the windows and linux builds, boot linux and upload everything with another script to sourceforge, update the webpage, and struggle with the SF file release system. I hate it. Another script would update the web page.

Pretty many scripts, and all hide important tasks from me that I now forgot, like the documentation, version.h, commands.txt, lf to cr-lf conversion.

Anyway, we need a three step process in the build folder:
1. make sourcedist
copies the sources, packs them for linux and windows use
2. make rpm/debian/rawbin
builds binaries
3. make upload
uploads everything to sf.
And 1b: Do the windows build :)
User avatar
llaffer2
Core Dumper
Posts: 115
Joined: Fri May 07, 2004 9:22 pm

Post by llaffer2 »

llaffer2 wrote:Anyone know how I can get my linux box to packet sniff the data my PC sends out? that's the only way I can think of for me to capture the data that cannot be copied-and-pasted.

I have a plain hub between them, so sniffing is possible, I just don't know the command to do it.
Found out how to use tcpdump, but it looks like the data sent is compressed or encrypted -- so that doens't help me.
User avatar
Your_mom
Match Winner
Posts: 653
Joined: Sun Jun 06, 2004 1:45 am

Post by Your_mom »

klax wrote:llafer2: didn't know that bug was there. Any other windows player here??
I havnt seen a bug like that....yet at least. and i've been playing 2.7.1rc3 scince klax posted the installer. Gonna download rc5 and start playing with that. thank goodness klax's around to post installers :)
User avatar
dlh
Formerly That OS X Guy
Posts: 2035
Joined: Fri Jan 02, 2004 12:05 am
Contact:

Post by dlh »

In rc4 there are still sticky walls. Haven't tested out rc5 yet, though.
User avatar
Lucifer
Project Developer
Posts: 8640
Joined: Sun Aug 15, 2004 3:32 pm
Location: Republic of Texas
Contact:

Post by Lucifer »

z-man wrote: Anyway, we need a three step process in the build folder:
1. make sourcedist
copies the sources, packs them for linux and windows use
I don't know what compiler you use in Windows, but if you use Cygwin, you can use the same scripts to handle this in windows as in Linux. :)

In any case, in pyAlarm I have my setup.py script that uses distutils to handle this.
2. make rpm/debian/rawbin
builds binaries
Again the setup.py script handles it (in a Python project). I've customized mine further so that if it's running in Windows, it also copies the NSIS installer script to the dist directory and then calls NSIS to build the installer. The NSIS installer script itself is very detailed and should be pretty simple to adapt here (this is the main thrust of what I'm offering in this post, in case you wind up wondering why I posted). So you just give the NSIS installer a few variables in the commandline, like version number, build number, and so forth.

This will probably get more sophisticated whenever I finally register VMWare.
3. make upload
uploads everything to sf.
And 1b: Do the windows build :)
It should be pretty simple to do the anonymous upload to upload.sourceforge.net, actually. I've never bothered because you still have to go into the file release system and click a few things before the release is done.

The other thing is, if you're willing to depend on Python in the build system for this thing, I could probably put together a setup.py script for building packages. Distutils only supports rpm right now, though. But there's talk of having it support debian. The way I hear it, the other systems need a human to maintain it, but I don't really know, all's I know is how to build rpms with python's distutils.
Image

Be the devil's own, Lucifer's my name.
- Iron Maiden
User avatar
Z-Man
God & Project Admin
Posts: 11587
Joined: Sun Jan 23, 2005 6:01 pm
Location: Cologne
Contact:

Post by Z-Man »

Lucifer wrote:I don't know what compiler you use in Windows, but if you use Cygwin, you can use the same scripts to handle this in windows as in Linux. :)
We use Visual Studio/C++ 6. Isn't it so that cygwin compiled binaries need cygwin installed? Would non mingw be better for us? For compiling, I mean. As build environment, cygwin would do.
In any case, in pyAlarm I have my setup.py script that uses distutils to handle this.
I'm a bit familiar with distutils; in my numerics project for my thesis I use python as a flexible build system and use distutils to give me the right compiler options for shared libraries.
I've customized mine further so that if it's running in Windows, it also copies the NSIS installer script to the dist directory and then calls NSIS to build the installer.
Sounds cool!
The other thing is, if you're willing to depend on Python in the build system for this thing, I could probably put together a setup.py script for building packages. Distutils only supports rpm right now, though. But there's talk of having it support debian. The way I hear it, the other systems need a human to maintain it, but I don't really know, all's I know is how to build rpms with python's distutils.
Depending on python should be no problem since it is generally available. Heck, I'm using a distribution that entirely depends on python :) Not being able to integrate the debian build is problematic, however. Although I don't even know how the debian stuff works when you install it by hand. How about a make file that calls smaller python scripts for individual tasks? We'll still want to distribute them across several persons or rerun only those parts of the build process that failed last time, and make is good at handling such things.

Nemo: I'm afraid the stickyness and other sync problems only affect your style of settings. Very weird things happening I can't hope of fixing in the current version, I guess most are related to speed mispredictions I did not anticipate. I'll have a closer look at it tomorrow.
User avatar
Lucifer
Project Developer
Posts: 8640
Joined: Sun Aug 15, 2004 3:32 pm
Location: Republic of Texas
Contact:

Post by Lucifer »

z-man wrote: We use Visual Studio/C++ 6. Isn't it so that cygwin compiled binaries need cygwin installed? Would non mingw be better for us? For compiling, I mean. As build environment, cygwin would do.
No, you only need to distribute certain dll's, depending on what you use. It's theoretically possible to build without linking to any of the Cygwin POSIX layer dll's (that's all they are), but in practice I've never managed to do so. So it would make the distributable bigger.

Besides that, GNU make can use Microsoft's compiler. The old Mozilla build system did exactly this.

However, that's not entirely necessary either. :) You could keep on using VC++ to build the distributable and then just use Cygwin for the bash it comes with, and the python, and that gives you a common environment for all plfatforms to build distributables with. So the same makefiles you use would work on all platforms, and would be customized as needed to do what is needed for each platform.
I'm a bit familiar with distutils; in my numerics project for my thesis I use python as a flexible build system and use distutils to give me the right compiler options for shared libraries.
Distutils rules. :) That's all I can say. I have a few complaints, but I have a few complaints about everything. Distutils just plain rules.
I've customized mine further so that if it's running in Windows, it also copies the NSIS installer script to the dist directory and then calls NSIS to build the installer.
Sounds cool!
If you can send me a zipfile of a Windows source directory after you've compiled it and list the files that need to go into the distributable, I can see about customizing my generic NSIS script for arma. The only catch is, to build the distributable you have to use NSIS (obvious, I guess). The advantage, and the reason I use NSIS, is that since it has a wonderful commandline version, it's easy to automate builds. (It is also very competitive in its feature set, but that's a different discussion)
Depending on python should be no problem since it is generally available. Heck, I'm using a distribution that entirely depends on python :) Not being able to integrate the debian build is problematic, however. Although I don't even know how the debian stuff works when you install it by hand. How about a make file that calls smaller python scripts for individual tasks? We'll still want to distribute them across several persons or rerun only those parts of the build process that failed last time, and make is good at handling such things.
Theoretically, making it support debian packages should be a matter of just writing a new distutils module. Having not done that, I'd prefer not to do it now. Instead, work up a bash script that'll do it and make a makefile call for it. I can build a setup.py to handle the source tarball, rpm-building, a windows distributable (based on NSIS, or any arbitrary system you send me, but you probably should send me command line arguments and so forth since I only know NSIS right now), and even a generic .tar.gz binary. Then make makefile calls for those and we're set.

Using python's distutils for automating tasks doesn't have to mean "make a separate build system". It should be integrated into the makefiles, I think. :) Ideally a guy would be able to do:

cvs update && make && make bdist

and have an rpm/source tarball/self-installer/disk image, depending on his platform. So I'm talking about grafting it after the part the actually builds the executables and libraries. :)
Last edited by Lucifer on Sat Mar 05, 2005 11:09 pm, edited 1 time in total.
Image

Be the devil's own, Lucifer's my name.
- Iron Maiden
User avatar
Lucifer
Project Developer
Posts: 8640
Joined: Sun Aug 15, 2004 3:32 pm
Location: Republic of Texas
Contact:

Post by Lucifer »

removed for being stupid, sorry.
Image

Be the devil's own, Lucifer's my name.
- Iron Maiden
User avatar
n54
MVP
Posts: 1587
Joined: Sun Dec 21, 2003 12:40 pm

Post by n54 »

z-man wrote:Isn't it so that cygwin compiled binaries need cygwin installed? Would non mingw be better for us? For compiling, I mean.
if (big if) i remember correctly this is the case for both cygwin as well as mingw (cygwin needs cygwin and mingw needs its special dll) -- after all both are meant as shortcuts to get *nix-like environments on windows and not the other way around. it's been a while since i last did anything in either though so it might have changed, or maybe my mind is stuck inside the box :)
User avatar
Lucifer
Project Developer
Posts: 8640
Joined: Sun Aug 15, 2004 3:32 pm
Location: Republic of Texas
Contact:

Post by Lucifer »

n54 wrote:
z-man wrote:Isn't it so that cygwin compiled binaries need cygwin installed? Would non mingw be better for us? For compiling, I mean.
if (big if) i remember correctly this is the case for both cygwin as well as mingw (cygwin needs cygwin and mingw needs its special dll) -- after all both are meant as shortcuts to get *nix-like environments on windows and not the other way around. it's been a while since i last did anything in either though so it might have changed, or maybe my mind is stuck inside the box :)
I'm not entirely certain, except that MingW is two things. It's a series of winAPI header files that have been reverse-engineered so they can be offered under the GPL. And they're also a series of shared libraries that you can dynamically link to with ld. However, at runtime the actual Microsoft dll's will be loaded instead.

And that's it. I could be wrong on it, but that's how Cygwin presents it when you want to install them.
Image

Be the devil's own, Lucifer's my name.
- Iron Maiden
User avatar
n54
MVP
Posts: 1587
Joined: Sun Dec 21, 2003 12:40 pm

Post by n54 »

what confuses me slightly with this discussion is that if you use either cygwin or mingw for making the windows releases wouldn't you end up (aside from any additional dependencies) with for example textfiles with *nix-encoding? since both cygwin and mingw are meant for accessing *nix tools & programs in a "native *nix way" on a win32?

i know the textfiles are a bad example beause it's easy to change that encoding using *nix tools but still: does it really solve things or just make them more complicated?

that said i have both cygwin and mingw installed for use of gcc but my gcc results have only been for "internal" use.

edit:
clarification:
what i'm saying is that if one compiles a program within mingw the result is actually a mingw-executeable (i.e. *nix) rather than a windows one (same for cygwin). and whether or not that would actually be a problem depends a lot on the complexity and dependencies of the program itself.
Last edited by n54 on Sat Mar 05, 2005 11:36 pm, edited 1 time in total.
User avatar
Lucifer
Project Developer
Posts: 8640
Joined: Sun Aug 15, 2004 3:32 pm
Location: Republic of Texas
Contact:

Post by Lucifer »

n54 wrote:what confuses me slightly with this discussion is that if you use either cygwin or mingw for making the windows releases wouldn't you end up (aside from any additional dependencies) with for example textfiles with *nix-encoding? since both cygwin and mingw are meant for accessing *nix tools & programs in a "native *nix way" on a win32?

i know the textfiles is a bad example beause it's easy to change that encoding using *nix tools but still: does it really solve things or just make them more complicated?

that said i have both cygwin and mingw installed for use of gcc but my gcc results have only been "internal" use.
With Cygwin, you make that call when you install it on how it'll treat line-endings. So you'd install it to treat line-endings like Windows, and then cvs will automatically make the right changes for you when you update from the repository.

So, no, it's not a problem if you do that. However, my Cygwin is installed to treat line-endings in the UNIX fashion because I don't use cvs to move code around. (long story, but it's all about timestamps and committing the code back to the repository, so I just do it the hard way and copy from one partition back to the other and do all my commits within Linux)

MingW, as far as I know, doesn't even address line endings. Um, you might be getting MingW confused with MSYS, actually. MSYS is the shell that's used by people who use only MingW, rather than MingW in, for example, Dev-C++, or MingW in Cygwin. If you don't want to use either of those big environments, MSYS is there for you.
Image

Be the devil's own, Lucifer's my name.
- Iron Maiden
User avatar
klax
Project Developer
Posts: 481
Joined: Tue Jun 08, 2004 3:51 pm
Location: Barcelona, Spain
Contact:

Post by klax »

Compiling under mingw (or gcc/g++ windows builds as you wish) is possible but it is needed to change some code in armagetronad (more or less the same code that it is needed to compile under vs.net2003). Do you remember those posts where we compiled armagetronad using Dev-C++ IDE (that uses mingw)?

Lucifer: about the nsis installers, see here. Days ago I've uploaded them to cvs:
http://cvs.sf.net/viewcvs.py/armagetron ... d/VisualC/

they are named armagetronad.nsi and armagetronad_dedicated.nsi
Post Reply