Compilation on Linux Newbie

For many people unfamiliar with the command line, the build process on Linux can appear a little daunting. Basic operations, like how to change "into" a particular directory are not obvious without some instruction.

I recently tried to step someone who was fresh to the command line through the build process on Ubuntu Linux. I'm posting extracts from that dialogue here in the hope that they will be useful to other new-comers to the Linux operating system.

I've inserted headings through the mail so that the wiki can generate a table of contents which will aide navigation. The original dialogue was in email, from which I have only posted my responses to questions. questions or comments from the other party (Greg) will be prefixed with the inline reply indicator ">".

Email 1 - Concepts, build process

Caveats

On Thursday 16 Mar 2006 06:30, you wrote:
> Hi Matthew,
>
> Greg here (astrodiver) from the Stellarium Forum. Hopefully you are
> willing to answer a Linux question for me.
Sure.
> I was finally able to intall Ubuntu. I really like it so far! I
> started using a computer after Windows came around. Anything that
> looks "command line" scares the hell out of me, but I'm trying. I
> was able to successfully download the CVS version and, according to
> my File Browser, it seems to live in my /home/greg/stellarium
> directory. Now what? I see the commands I am supposed to enter in
> my terminal from the Stellarium Wiki page, but I do not know how to
> make this magic happen. What do I actually type in my terminal at
> the prompt? I guess the problem is that I know nothing about Linux
> commands, so I do not know how to tell the terminal what to do.
> Does that make any sense?
Yes it does. I remember the first time looking at a unix terminal and
not knowing where to start - it was awful! It's the main problem
with the command line - it's not intuiative, especially at the
beginning. But there's a lot of joy hidden away in there to keep
nerds happy ;)
Before we start to try to build the CVS version, I'd like to say this
is a fairly hard-core nerd activity! It's not as hard as it looks at
first, but I just wanted to say this isn't something most
non-developers will ever do... Don't associate this sort of
procedure with Linux, it's a software developer thing... :)
The CVS version doesn't always build properly because its a work in
progress. If it doesn't build it usually needs some quick fix to the
sourcecode. I know that the CVS build was broken a few days ago, but
the fix is just to modify one line in one of the source files... I
can help with these problems (send you fixed version of files and so
on).

Dependencies

OK. First we need to make sure all the dependencies are installed.
Open the synaptic package manager, and install the packages listed in
the pre-requsites table on the wiki page. The search feature of
synaptic will be very useful.
Ignore the bit on the wiki page saying about "apt-get" (it's an
alternative way to install software, but lets not go into it now).

The Prompt; The Shell; The Terminal; Changing Directory

OK, once the prerequisites are installed open up a terminal window.
You'll see a window with some text in it, at the end of which will be
the prompt. The prompt will look something like:
greg@ubuntu:~$
To execute commands, you type them in here. When you press return, the
command is executed and when the command is complete, you get another
prompt.
By the way, the "terminal" program is an interface to another program
which you will hear referred to a a lot, called the "shell". It's
the shell which reads what you type, executes the commands and prints
output. The terminal might be thought of as just the window in which
the shell program operates. I want to say this because I tend to mix
the terms, so don't worry if you hear things like "type this into
your terminal" or "execute this command in a shell"... people often
use these terms to mean the same sort of thing.
OK. When you're looking at your hard disk with Explorer in Windows,
you have a "current" directory that it's looking at. In Windows
Explorer this is indicated in the bar at the top of the window, e.g.
C:\Program Files\Stellarium. In the shell this information is often
shown in the prompt. By the way, Linux uses "/" where Windows uses
"\".
The shell also has a current directory. When you start the terminal
program, the shell which it contains is started in your home
directory, /home/greg. The prompt tell you this. I know what you're
thikning, "what! where?". It's the "~" bit. Because the home
directory is used so much it has a special abbreviation, "~".
As well as looking at the prompt, you can ask the shell to tell you
the current direction using the "pwd" command (which stands for
"present working directory"):
greg@ubuntu:~$ pwd
/home/greg
To build the CVS version, we need tell the shell to change into the
directory where we have all the files, "stellarium". In Windows
explorer you'd do this by double-clicking (or single-clicking
depending on the setup) on the stellarium folder. In the shell,
there is a text command for this: "cd" (short for "change
directory"). You type the command and the name of the directory to
change to as a "parameter". A parameter is extra information which
is passed to the command so it knows what you want: Paremters are
just extra words separated from the command by spaces:
greg@ubuntu:~$ cd stellarium
After the command has executed, you'll get the prompt back, but it
will have changed to something like this:
greg@ubuntu:~/stellarium$
Which just tells you that you are now working in the stellarium
directory.

Doing the Build

Now you're here, you just need to execute the commands from the wiki
page to build stellarium:
greg@ubuntu:~/stellarium$ ./configure
greg@ubuntu:~/stellarium$ make
greg@ubuntu:~/stellarium$ sudo make install
Each command will create a lot of output telling you what it is doing.
Don't worry too much about it, but check to see that the last few
lines of output don't look like an error of some kind, else the next
command won't work as expected.
The last command "sudo make install" will prompt you for your
password. "sudo" means "super user do". This executes the command
with administrator privilidges. It's normal on Linux systems for
user account to not be able to modify installed programs. Users can
only modify files in home directories. When you install the software
using the method shown here, it goes to some directories in
the /usr/local area, which is only writable by the administrator. On
Ubuntu, the first user account (in this case "greg") can execute
admin commands using their own password given to the sudo command...
In short, to install software you need to use sudo and give your
password.
One final note. Almost all shell commands are document in the manual.
To get help on a command, use the "man" command. e.g. to get help on
"cd", do this:
greg@ubuntu:~$ man cd
You can use the cursor keys to scroll up and down, and the "q" key to
get back to the prompt.
OK, that's all for now. I hope it isn't too verbose. I usually err
on the side of providing too much information rather than not enough.
>
> If I do something once I can usually do it from then on. Any help
> would be greatly appreciated.
>
> Thanks,
> Greg
>
> "The greatest obstacle to discovering the truth is being convinced
> that you already know it" - author unknown

Email 2 - Installing & Running

On Friday 17 Mar 2006 00:49, you wrote:
> Hi Matthew,
>
> Thanks so much for the great information. That really helped me
> understand some of the concepts and get me over some initial
> hurdles. You should write a manual! oh wait a second... you did
> write a manual!
Glad to be of service :)
> Everything went well. I was able to download the current version,
> extract it, ./configure, make, and sudo make install. It "seems"
> that everything installed OK in the /usr/local/share directory.
> When I open that directory using the file browser I see the config,
> textures, and data folders, but no application. How do I know if it
> installed OK? I did not get any error messages. How do I start the
> application, and/or make it appear in the Applications pull-down?

The PATH

The application binary is installed in the /usr/local/bin directory.
This directory is normally in the PATH, which is where programs are
looked for, so you can quickly check to see if it works by just
typing "stellarium" in the shell and hitting return. If you want to
ask the shell where it finds the program file, use this command:
which stellarium
this should print:
/usr/local/bin/stellarium
The shell finds programs by looking through each directory in the PATH
variable. You can see what is in your PATH by using this command:
echo $PATH
The PATH is a list of directories separated with : characters.
Whenever the shell executes a command, it looks through the PATH
until if finds a file in one of the directories, and then executes
that program. If no such program is found, you get the "command not
found" message. This is a little bit of an over-simplification
because the shell it self contains many "internals" - commands which
are not implemented in a separate program. For example, "echo" is an
internal command. Internals are searched for before externals.
There are a few more exceptions too, but it's not very important
unless you're going to write programs for the shell.
So, ummm, yes stellarium should run if you type "stellarium" in the
shell.

Adding to the Application Menu (Gnome)

You can add a menu item like this:
+ From the Applications menu, select
System Tools -> Applications Menu Editor
+ Select the "New Entry" button
+ Enter these values:
Name = Stellarium
command = /usr/local/bin/stellarium
+ Click on the icon button (reads "no icon" to start with) and choose
an icon. I
used /usr/local/share/stellarium/textures/bt_constellation.png To
browse to this folder, you can double-click the the "File System"
icon on the left (which will set the directory to "/"), and then
double clicking on usr, then local etc.
+ That's it.
> Also, where do I access this Universe, and Multiverse repositories?
I tried to write my own description, but then I found this:
https://wiki.ubuntu.com/AddingRepositoriesHowto
> I see that Celestia can be installed automatically if I use the
> Universe.
I think Stellarium is also in one of these repositories, although it
is an old version in the current stable release of Ubuntu (5.10,
"breezy badger").
>
> Thanks again!
> Greg
No problem
> "The greatest obstacle to discovering the truth is being convinced
> that you already know it" - author unknown
Nice quote!

Email 3 - Waxing Lyrical over Ubuntu

On Friday 17 Mar 2006 04:40, you wrote:
> Works perfectly! Thanks again. I'm hopefully staring to get the
> hang of this. I just noticed that I have not started my other
> computer (running XP) for the past two days. Somehow Ubuntu just
> seems more... friendly.
:D I'm glad to hear it! The interface (desktop environment) Ubuntu
uses by default is Gnome (http://gnome.org). It has a nice clean
feel about it, and I think it's really friendly.
Did you get the 3d accelerated graphics drivers working OK? Which
card do you have, nvidia?
Here are a few of my favourite apps which are installable through
synaptic:
+ Frozen Bubble - annoyingly addictive game
+ Planetpenguin-racer - nice 3d game
+ Inkscape - cool vector graphics program.
+ GIMP - photoshop wannabe
+ TuxPaint - art for kids and adults like me with "special needs"
when it comes to drawing.
+ Speedcrunch - nifty calculator
There's so much software to experiment with. I've spent literally
years playing with so many programs. If you have a need, describe it
to me and I can probably recommend something to solve the problem.
Cheers,
--
Matthew

Email 4 - Graphics Drivers; Copy Paste

On Friday 17 Mar 2006 05:48, you wrote:
> Hi Matthew,
>
> I'm not sure about the 3d graphics drivers. I have an ATI Radeon
> 9200 card. I now have better screen resolution, but I don't know
> how to check to see if it's accelerated. I suspect it's not working
> correctly because Celestia crashes right away each time I start it.
> Stellarium looks fairly good though. How do I check to see if the
> OpenGL stuff is configured properly?
If Stellarium is use-able, it is probably set up OK. With the
non-acclerated drivers Stellarium will have a frame rate of about
0.5, which means then when you move, zoom etc the output will look
extremely slow and jerky.
As for Celestia not starting... hmm, strange. I can try to work out
what is wrong. Can you start it in a terminal (command = celestia),
and send me any output? You can copy-paste from terminal windows by
selecting text with the mouse and choose copy from the menu.
Ooh, an interesting note about copy-paste. There is more than one
type of copy-paste. Most apps can use control-C, control-V (terminal
being an exception because control-C is already used by the shell for
something else), but you can also do it another way.
Usually, when you select text with the mouse, you can paste it
somewhere by clicking the middle mouse button. This type of copy
paste uses a different butter to the control-C copy paste. It's
useful. I use middle-click copy-paste quite a lot.
All programs can be started from the shell/terminal if you know the
program name, and this is often useful for diagnosing problems
because they usually print error messages here.
I'm giving away all my best tricks :p
--
Matthew

Email 5&6 - Getting an old version from CVS; Diff/Patch

On Friday 17 Mar 2006 05:48, you wrote:
> When should I try the CVS version? Is there still a problem with
> compiling it?
It doesn't seem to be working well at the moment. For me it compiled
without errors, but there is something wrong with the way it displays
- the whole screen goes white.

Check Out CVS Version From Specific Date

It is possible to ask CVS to give you a copy of the files from a
previous date (CVS keeps all old versions of files)... I'll look to
find a command to get a working version which has the spherical
mirror feature and mail you when I find it.
...
OK, if you cd into stellarium/src, then execute this command:
cvs update -D 2006-03-12
... it will fetch the files which include the spherical projection.

Patching Files

There is one problem - there is a mistake in the file
stel_command_interface.cpp at line 459. It reads:
if(stcore->getTimeMultiplier()!=1) audio->pause();
but it should read
if(stapp->getTimeMultiplier()!=1) audio->pause();
All you need to do is make this change, and then go into the
stellarium directory and do
make
sudo make install
And then you should have a working CVS version from the 12th March.
To modify the file, you can use one of the very large number of text
editors available for Linux. I think Ubuntu comes with gedit
installed by default (Applications -> Accessories -> Text Editor),
and this has an option in the search menu to go to a specific line
number.
This is fine for small changes like the one we need to do here, but
it's very inconvenient and error-prone for larger changes.
Developers have come up with a cool method of applying changes like
this to sourcecode files. A program called diff is run on the two
versions of the file, and it outputs instructions to change one into
the other. This output is known as "a diff", or a "patch" file.
There are a couple of different formats of these files

Diff / Patch

The diff or patch data is then sent to another program who "applies"
it to their un-patched file, thus updating it to the new version.
I've attached a .patch file. To use it, save it in the stellarium/src
directory, open a shell, cd to the stellarium/src directory, and
execute this command:
patch -p0 < quickfix.patch
The quickfix.patch file is plain text - you can read it without any
special program. Learning to read patch files / diff output can be a
useful skill.
It's very common for open source developers to send patch files to
other developers with new functionality to try out before anything is
saved into the CVS repository, so known how to handle patch files is
a really nice skill to learn.
Of course diff and patch have manual pages, but these are sometimes a
little bit difficult to read for complicated tools as they are
written as a technical reference.
If you are intereested in diff/patch, you might find this interesting:
http://applications.linux.com/applications/06/02/16/1938203.shtml?tid=47&tid=89
Enjoy,
--
Matthew

Email 7 - The Patch File

The command line is actually a very productive way to do some tasks.
Of course it's never going to be a substitute for photoshop, but it
has a valuable place.
Don't worry about messing the system up unless you're using sudo, or
are logged in as root. As long as you are in your non-root user, you
can only mess up files in your home directory.

Email 8 - Permissions and Ownership

On Saturday 18 Mar 2006 01:13, you wrote:
> Hi Matthew,
>
> I spoke too soon. I tried to add the spheric_mirror to the
> projector line to the config file, but it was Read Only. I tried to
> change the permission using all the sudo chmod stuff. It looks like
> the permissions were changed OK, but I still cannot edit the file.
OK, there are two sets of things to understand. Ownership and
permissions. If your user is the owner of a file, you are free to
change the permissions.
You can see the owner and permissions using the ls -l command:
matthew@krubuntu:~$ cd .stellarium
matthew@krubuntu:~/.stellarium$ ls -l
total 16
-rw-r--r-- 1 matthew matthew 4198 2006-03-16 21:02 config.ini
-rw-r--r-- 1 matthew matthew 6331 2006-03-17 17:43 default_config.ini
Lets take the config.ini line and look at the various components.
1st is the -rw-r--r-- part. This is the permissions. We'll come back
to this in a moment.
The next column says 1. This is the link count. Don;t worry about
this now.
Next is the owner of the file, in this case my user, "matthew".
Next is the group of the file, also "matthew".
The remaining columns are file size, modification date/time &
filename.
OK, so What does it mean, owner. The owner of the file is the user
who created the file. If root creates a file, root is the owner, and
only root can modify the permissions. Since user matthew (or more
precisely a process belonging to user matthew) created the config.ini
file, matthew owns it.
Right, permissions. On unix-like systems, file permissions have three
types, and each type exists for three groups of users.
Permission types are:
read (file can be opened for reading)
write (file can be opened for writing)
execute (file can be executed as a program)
Permission groups are:
owner (the user who created the file)
group (users may be long to several groups)
all (also called other - everyone not the owner or in
the group for the file)
If I re-write the -rw-r--r-- string downwards I can describe the
parrts:
- Special type (-=normal file, d=directory, l=link)
r \ / read
w } Owner permissions { write
- / \ execute (not set)
r \ / read
- } Group permissions { write (not set)
- / \ execute (not set)
r \ / read
- } Other permissions { write (not set)
- / \ execute (not set)
So we can say for -rw-r--r--, that this file is regular file, it is
readable and writable by the owner (matthew), readable by any user in
the group matthew, and readable by anyone else.
If the file was owned by root with the same permissions, user matthew
would be able to read it, but not write it (only the owner can write
to this file).
OK, so what's happened?
I think you must have run stellarium as the root user, possible using
sudo.
To check it, execute this command:
ls -al ~/.stellarium
Look at the lines for config.ini and the "." line (meaning the
directory itself). If the owner is root, then I think the first time
you ran stellarium and these files were created, you used sudo.
If this is the case, you need to get the owner (root) to give the
ownership of the files to your regular user. This is done using the
chown (change owner) command:
sudo chown greg:greg ~/.stellarium ~/.stellarium/*
The reason we need to modify the directory as well as the files in it
is that to create new files inside a directory, the process doing the
creating must be able to write to the directory as well as the files
in it.
We need to use sudo because only the owner of the file (or root) is
allowed to change the owner. This way bob can't take control of
alice's files unless an admin allows it.
Once, you've done this, edit the config.ini file and restart
stellarium. Don't run stellarium as root or with sudo... it's a
normal program and shold run with your normal user's privilidges.
>
> Then I edited the original default_config.ini in the folder where I
> originally applied all the commands (./autogen, ./configure, make,
> sudo make install), to include the spheric_mirror, and the FOV 180.
> I tried to recompile the thing with the changes, but I got all kids
> of error messages. Mostly having to do with not being able to
> overwrite.
I think you might have built the program using root as well. This
means all the files created during the build process (the .o files
and the stellarium executable etc) are owned by root.
To solve this, open a tereminal and change directory to the home
directory. Using "cd" with no parameters does this:
matthew@krubuntu:~/projects/cvs/stellarium$ pwd
/home/matthew/projects/cvs/stellarium
matthew@krubuntu:~/projects/cvs/stellarium$ cd
matthew@krubuntu:~$ pwd
/home/matthew
Then you can execute this command:
sudo chown greg:greg -R stellarium
The -R option means "recursive" (i.e. apply to all sub-directories and
files in those too). This is where the power of the shell commands
starts to be seen. Most of them have many behaviours which can be
chosen using extra parameters known as options. The dis-advantage is
that these must be learned, and are sometimes not very well named
(unix-style CLI commands are optimised for less typing, not clarity,
hence command names like ln, cp, rm, mv, dd and so on).
> I guess my main question is: How can I delete the compiled CVS, and
> start over? I tried the package manager, and sudo apt-get --purge
> remove, but it said that Stellarium was not installed, so it was
> not removed. Is that the way to go to remove a program? Am I
> getting in too deep for a newby?

Packages

When you built from source and installed using "make install", you are
not using the package manager, so it doesn't know about the files.
Building from source is an unsual approach and we're only doing it
here because we want a version of the program which hasn;t been
released yet. It's the equivolent of copying the files of a windows
program and manually putting them in c:\program files... you can't
then un-install using the control panel add/remove software.
Because we did the installation manually, we need to remove them
manually too.
I think this command will remove everything:
sudo rm -f /usr/local/bin/stellarium
sudo rm -rf /usr/local/share/stellarium
If you already did the chown on ~/stellarium, you don't need the sudo,
so you can remove the source files using just
rm -rf ~/stellarium
(or just use the graphical file manager).

Email 9 - More Perms; Settings Files; Linux Filesystem Arrangement

On Saturday 18 Mar 2006 05:46, you wrote:
> Hi Matthew,
>
> I'm having a good time learning a bit about CLI, even if I'm not
> successful at building the cvs version right now.
>
> OK, I'm not using any sudo commands while getting the cvs version.
> I do the cvs update on the stellarium/src to get the spherical
> mirror stuff. Then I apply the quickfix.patch to the
> stellarium/src. Then I run ./autogen.sh, then ./configure, then
> make, then make install.
The make install needs sudo, it's the only part which does.
> That is where I start getting errors. It
> will not let me do make install, instead I must do sudo make
> install.
That's fine.
> When I run sudo make install I cannot edit the
> default_config.ini and I do not even see the regular config.ini
> anywhere.
Ah, OK, I have another idea of whatmight e happening (it's very hard
without seeing which commands you are executing, and where). Perhaps
you are looking at the wrong config.ini file...
Are you looking at the one in /usr/local/share/stellarium/config?
If so, this is not the version for your user. I should explain.
Because Linux systems are designed as multi-user operative systems,
most programs don't use a single configuration file. When a user
runs the program for the first time, a confiuration file is created
in the user's home directory. Traditionally there was a file called
".<programname>rc". Files which begin with a . in unix are "hidden".
These files don't appear on normal directory listings. This is not
meant to be a security feature, it's just to reduce clutter - mostly
users don't want to see these automatically generated settings files,
so they are hidden from view.
You might consider these files as the equivalent of the user-specific
parts of the windows registy. Just a side-note, system-wide settings
on unix systems mostly go in /etc. Having settings in files has a
few advantages over the registry - if one file is corrupted, the
system doesn't break, the files are readable / modifyable with
nothing more than a text editor, permissions may be set per file (I
might want to share my shell configuration (.bashrc) with other
users, but not my encryption settings (.gpg), etc...
You can see hidden files using the -a option (all) to the ls command.
Here I use the -l option (long format) as well to show more details:
ls -a -l
or
ls -al
When you do this in your home directory, you'll see a lot of hidden
files. Stellarium doesn't follow the .rc file tradition exactly,
instead it created a diectory called .stellarium, and puts it's
configuration files in there.
So if you do this
cd ~/.stellarium
ls -al
You'll see your own copy of the configuration file.
I'm not sure about this default_config.ini thing - I never saw it
before yesterday. It must be a new feature to change how the config
file is working... probably not complete yet.
So back to the problem. The file
in /usr/local/share/stellarium/config is a template, which is copied
to each user's ~/.stellarium directory when stellarium first runs for
that user.
Permissions/ownership of these files...
The build files in ~/stellarium. These would typically be owned by
the user... the user would download them from the net using firefox,
or whatever, and it's a normal user activity to build software.
The installed files: /usr/local/bi/stellarium and everything
in /usr/local/share/stellarium will be owned by the root user. They
are installed for all users on the machine to use, so they are
readable (and in the case of the program file in bin) executable, but
only the root user can write to them / remove them.
The ~/.stellarium director and contents will be owned by the user...
The user runs stellarium.
All this complexity is because Linux's heritage is a multi-usere
environment. When I first used unix, I was usin a machine with
thousands of users, several hundred logged inat any one time. Linx
can do this too, although it's not so common in a home environment.
The same read affects why the file system is arranged in an apparently
odd way... all this bin, share, sbin stuff... it's all designed to
separate files on big systems for administrative reasons. The down
side is that when Linux is used as single user system it can be a
little daunting. Of course usually people don't have to know about
all this any more than users of Microsoft Office should know of the
existence of the registry...
This is the pain (and fun) of doing nerd stuff like building software
from sourcecode. :D
If you want to know more about the way the filesystem is arranged and
why, you should read this:
http://www.pathname.com/fhs/
> Unless you can suggest something easily fixed, I think I will wait
> till the cvs version compiles easier. Maybe you, or Johannes could
> let me know when to give it a try. BTW, what is the problem with
> it?
It's just that it's in the middle of being created... there are often
loose ends at this stage.
> I have been R'ingTFM lately on the various Linux newby sites, and I
> feel much more confident with this stuff. It's starting to be fun,
> but you, I'm sure have better things to do than hold my hand.
> Meanwhile, I have a planetarium dome, projector stand, etc to
> build.
A nice place to get introductory information is the Linux Reality
podcast. It's a nice break to listen rather than read all the time:
http://www.linuxreality.com/
>
> You have a gift for writing in plain English. I had no problem
> understanding everything you told me. Not at all too verbose.
> Thanks so much!
Thank you very much.

Email 10 - Gubbins

On Sunday 19 Mar 2006 00:00, you wrote:
> Hi Matthew,
>
> Thanks for all the help. I'm ashamed to say that most all of my
> problem was just not knowing about that hidden Stellarium directory
> in the home directory. I was able to go into the config.ini and
> play around. The fisheye warping looks great. Johannes said he
> could fix a few problems with the rendering fairly easily. It's
> good to see that feature. I was about to spend a ton of money with
> the MirrorDome folks for something I can do for myself (with the
> help of the developers).
The mirrordome people re-sirtribute Stellarium, so under the terms of
the GPL they must make their code available to their customers.
Because of this, it's probable that their work will eventually make
it's way back into the public stellarium source tree. We're trying
to convince them to give it to us anyway as a sign of good will, but
so far they have been silent... In the mean time, the Stellarium
devs seem to be able to make something workable, which is nice.
> Now I can really concentrate on building that dome! I should have a
> projection surface very soon.
That's cool. I'd love to see photos when you're done.
> Thanks for the link to linuxreality.com I'll give it a try.
>
> Is it easy to update the projector file that Johannes wrote if he
> makes some changes?
I don't know, I've not done this.
> How do I update the next CVS version?
In the stellariuim source directory, just enter the command
cvs update
And you'll get the most up-to-date CVS code. But there might be the
problem that it doesn't compile...
> Don't
> worry about explaining all that right now. I'm busy playing with
> the new feature anyway.>
> Thanks again!
> Greg

Email 11 - Build Details

On Saturday 25 Mar 2006 00:39, you wrote:
> Hi Matthew,
>
> One quick question for you.
>
> In order to download the latest CVS version, should I be in the
> /stellarium directory, or the /stellarium/src directory?
The short answer is "probably either, but the stellarium directory is
better".
The long answer is that "cvs update" works on the current working
directory, and any sub-directories. If you do "cvs update" in the
stellarium directory, it will also update the src sub-directory.
Since most of the development work is in the stllarium/src directory,
there is a good chance that this is the only directory you will need
to update... but it's probably best to do the update in the
stellarium directory just in case there are changes to other files,
like the textures.
One thing to note: If you have modified any files in your local copy
(e.g. when we patched that file to fix the build problem), cvs will
not over-write these locally modified files with newer versions from
the CVS. CVS assumes you are working on them, and don't want to lose
your work.
You are in the similar position to me - you probably don't want to
keep these changes because you just want the latest work - we are not
doing development on the code. So you need to tell cvs to over-write
locally modified files with newer veresions from the repository.
This is easy, just add -C to the command (important: upper-case "C"),
like this:
me@myhost:~/stellarium$ cvs update -C
That's it.
After you've done this you probably just need to do make. If there
has been a radical change to the code, it might be necessary to do a
"make clean" before the make. This will delete any previously
compiled files. Make usually does a pretty good job of only
re-bulding files as necessary, but sometimes you need to clean first.
My advice is to try "make" first. If there is an error do "make
clean" and then another "make". If it still fails there is a build
problem - mail me and I'll tell you if I know of a simple
work-around.
> Sounds like Johannes and Fabien have done quite a bit of work on
> that spherical mirror, and the stereographic projection. Johannes
> mentioned that he figured out how to make it work in the OpenGL
> rendering and that it should work like the MirrorDome version. I'm
> still shocked that people would work so hard for software that will
> be free. I don't know how to thank them.
There are many motivations for working on Free and Open Source
projects. Mainly I think it's just a fun challenge, like solving a
puzzle. It's also good to have something nerdy to talk about with
fellow nerds :D