Compilation on Linux Newbie

(Difference between revisions)
Jump to: navigation, search
m (Reverted edit of CacocNalim, changed back to last version by Matthewg42)
Line 1: Line 1:
lacnal
 
 
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.   
 
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.   
  

Revision as of 13:17, 15 October 2007

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 ">".

Contents


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.

The Patch File

--- stel_command_interface.cpp.broken	2006-03-17 18:28:51.000000000 +0000
+++ stel_command_interface.cpp	2006-03-17 18:29:33.000000000 +0000
@@ -456,7 +456,7 @@
 		  audio->play(args["loop"]=="on");
 
 		  // if fast forwarding mute (pause) audio
-		  if(stcore->getTimeMultiplier()!=1) audio->pause();
+		  if(stapp->getTimeMultiplier()!=1) audio->pause();
 
 	  } else if(args["volume"]!="") {
 

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
Personal tools
Namespaces
Variants
Actions
in this wiki
other languages
Toolbox