Open main menu

CDOT Wiki β

Difference between revisions of "FAQ"

(Building Firefox)
m
 
(61 intermediate revisions by 13 users not shown)
Line 1: Line 1:
This FAQ is meant to provide a place for you to capture knowledge as you begin working on Mozilla development.  When someone answers a question for you, consider adding it below.  Create new topic headings as necessary.
+
This FAQ is meant to provide a place for you to capture knowledge as you begin working with Open Source.  When someone answers a question for you, consider adding it below, and feel free to update previous entries.  Create new topic headings as necessary.
  
 
==Building Firefox==
 
==Building Firefox==
 
+
 
#  '''Where can I get information on building Firefox or other Mozilla products?'''
 
#  '''Where can I get information on building Firefox or other Mozilla products?'''
 
#: Start with the documentation on [http://developer.mozilla.org MDC]: http://developer.mozilla.org/en/docs/Build_Documentation.
 
#: Start with the documentation on [http://developer.mozilla.org MDC]: http://developer.mozilla.org/en/docs/Build_Documentation.
Line 8: Line 8:
 
#: See [http://cs.senecac.on.ca/%7Edavid.humphrey/writing/firefox-win32-build.html Building Firefox on Win32 using Visual Studio .NET 2005].
 
#: See [http://cs.senecac.on.ca/%7Edavid.humphrey/writing/firefox-win32-build.html Building Firefox on Win32 using Visual Studio .NET 2005].
 
#: <b>[http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites#GNU_Tools_for_Microsoft_Windows_.28Cygwin.29 Windows Build Documentation is updated - 17:15, Sept 16 2006 (EST)]</b>
 
#: <b>[http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites#GNU_Tools_for_Microsoft_Windows_.28Cygwin.29 Windows Build Documentation is updated - 17:15, Sept 16 2006 (EST)]</b>
 +
#: ''Seneca students can get Visual Studios .NET 2003 or 2005 from [http://acs.senecac.on.ca/pages/download.php ACS].''
 +
#  '''How can I checkout the source code when ACS is blocking ports?'''
 +
#: Open up two terminals. The first one makes a tunnel to matrix. In terminal 1:
 +
#: ssh -L 2401:cvs-mirror.mozilla.org:2401 -l yourusername yourusername@matrix
 +
#: In terminal 2:
 +
#: cvs -d :pserver:anonymous:anonymous@localhost:/cvsroot co mozilla/client.mk
 +
#  '''What's the best way to run a build so it doesn't mess-up my default install/profile?'''
 +
#: Use the '''-no-remote''' and '''-profile''' command line switches.  The '''-no-remote''' switch will allow multiple versions of the browser to run at the same time (i.e., otherwise it will open another window for your currently running instance).  The '''-profile''' switch allows you to specify a path to a profile (e.g., a directory).  This profile directory doesn't need to exist--it will create it if it is not there:<br/><br/><code>$ mozilla/''objdir''/dist/bin/firefox.exe -no-remote -profile some/path/testing</code>
 +
#  '''When I run my new build on Windows, I get a lot of assertion pop-ups.  How can I stop this?'''
 +
#: Before you run your build at the command line, do this (which will send the assertion messages to the console instead):<br/><br/><code>$ export XPCOM_DEBUG_BREAK=warn</code>
 +
#  '''What are some ways I can make my build go faster?'''
 +
#: See [[Improving Build Times]]
 +
 +
== Mozilla Build System ==
 +
 +
1. '''How do a see what macros are being expanded in order to understand my compiler error (a.k.a., how do I create a preprocessed version of a C/C++ file)?
 +
$ cd $OBJDIR/some/directory
 +
$ make nsMyFilename.i
 +
2. '''How do I generate Doxygen documentation for Mozilla?'''
 +
$ cd $OBJDIR
 +
$ make documentation
 +
3. '''Hw do I see the final value of a makefile variable?'''
 +
$ cd $OBJDIR/some/directory
 +
$ make echo-variable-EXTRA_DSO_LDOPTS
  
 
== IRC ==
 
== IRC ==
  
 +
# '''Where can I get general info about using IRC?'''
 +
#: See the [[Irc|IRC]] page on this wiki.
 
#  '''Where can I find a comprehensive list of IRC clients?'''
 
#  '''Where can I find a comprehensive list of IRC clients?'''
 
#: Visit http://en.wikipedia.org/wiki/List_of_IRC_clients for a list of IRC clients on various platforms.  Two popular choices are [http://www.hacksrus.com/~ginda/chatzilla/ Chatzilla] and [http://www.irssi.org/ irssi].
 
#: Visit http://en.wikipedia.org/wiki/List_of_IRC_clients for a list of IRC clients on various platforms.  Two popular choices are [http://www.hacksrus.com/~ginda/chatzilla/ Chatzilla] and [http://www.irssi.org/ irssi].
 
#  '''Where can I ask for help on IRC?'''
 
#  '''Where can I ask for help on IRC?'''
#: Use the '''#seneca''', '''#firefox''' or '''#developers''' channels on irc://irc.mozilla.org.
+
#: Use the '''#seneca''', '''#firefox''', or '''#developers''' channels on irc://irc.mozilla.org (in that order).
 
#  '''What is the best way to share long error messages or other text that is too big to copy/paste into IRC?'''
 
#  '''What is the best way to share long error messages or other text that is too big to copy/paste into IRC?'''
 
#: Use a pastebin at http://pastebin.ca/ or http://pastebin.mozilla.org/ to copy/paste your output.  Then paste the resulting URL into IRC.
 
#: Use a pastebin at http://pastebin.ca/ or http://pastebin.mozilla.org/ to copy/paste your output.  Then paste the resulting URL into IRC.
Line 21: Line 47:
 
#  '''IRSSI + Terminal Server:'''
 
#  '''IRSSI + Terminal Server:'''
 
#: Click for a quick [[Irssi Tutorial]]
 
#: Click for a quick [[Irssi Tutorial]]
 +
#: [http://f0rked.com/articles/irssidoc IRSSI Documentation and Resources]
 +
#  '''What do all these acronyms stand for?'''
 +
#: Look them up on the [http://www.valinor.sorcery.net/glossary/ Glossary of IRC terminology]
 +
#  '''I can't seem to join #seneca, how do I register my nick?'''
 +
#: Take a look at [http://freenode.net/faq.shtml#registering this] discussion of IRC nick registration for a list of instructions.
 +
 +
==SVN==
 +
#  '''What is SVN?'''
 +
#: Subversion (or SVN for short) is a revision control system that is used to track changes to a project's file repository.  SVN tracks changes to the repository made by each project collaborator. SVN tracks changes and can be used to analyze differences and undo changes at a later time if needed.  This allows for greater collaboration and speed , while minimizing (though never completely elimintating) risks  associated with duplication and overwriting each others work.  Project contents need not be limited to source code files.
 +
#  '''Where can I find an SVN tutorial?'''
 +
#:* [[Subversion_tutorial|Here]]
 +
#:* [[SVN|SVN at a glance]]
 +
#  '''More complete documentation?'''
 +
#: Detailed SVN tutorials and other help information can be found in the [http://svnbook.red-bean.com/ free official online book] by [http://www.oreilly.com/ O'Reilly Media.]
 +
#  '''Where can I find an SVN Client?
 +
#: View a [http://subversion.tigris.org/links.html#clients list of SVN clients] available for various platforms and development environments.
 +
# <b>SVN at a glance:</b> [[SVN]]
 +
===Common Commands===
 +
* To access the svn repository for your project, use the following command to 'check out' your project.
 +
<pre>
 +
svn checkout svn://cdot.senecac.on.ca/<yourprojecthere>/
 +
</pre>
 +
* Once you have your repository sandbox, change directories into the project folder.
 +
* To add a file to your svn repository, use the following command:
 +
<pre>
 +
svn add <filename>
 +
</pre>
 +
* To remove a file from your svn repository, type:
 +
<pre>
 +
svn remove <filename>
 +
</pre>
 +
* To update the repository with your latest changes to the repository, type:
 +
<pre>
 +
svn commit -m "type a message here that explains what you're committing"
 +
</pre>
 +
* To update the sandbox located on your local machine to the same version on the repository, type:
 +
<pre>
 +
svn update
 +
</pre>
 +
*To revert/undo file into its pre-modified state (More on [[SVN#svn_revert|svn revert]]):
 +
<pre>
 +
$ svn revert <filename>
 +
</pre>
 +
* To view all the changes (commits) made on a svn repository, type:
 +
<pre>
 +
svn log
 +
</pre>
 +
:It is very important that you type useful messages when committing code.
 +
* How do i resolve a conflicted file? (To better understand the use of this command, check out: [[SVN#Resolve_Conflicts_.28Merging_Others.27_Changes.29 | Resolve Conflicts (Merging Others' Changes)]])
 +
<pre>
 +
svn resolved <filename>
 +
</pre>
 +
* Here is how to create a patch using svn. Everything in square brackets is optional. If you provide no additional arguements, then a diff file would be made of all the changes you have done since the last commit/update.
 +
<pre> svn diff [-r from[:to]] [filename|directory] > mypatch.patch</pre>
 +
 +
==Common Abbreviations/Acronyms==
 +
Listed alphabetically
 +
 +
*'''AMO'''
 +
*: [https://addons.mozilla.org/ addons.mozilla.org]
 +
*'''MDC or devmo'''
 +
*: [http://developer.mozilla.org Mozilla Developer Center]
 +
*'''MoCo'''
 +
*: [http://www.mozilla.com/ Mozilla Corporation]
 +
*'''NSPR'''
 +
*: [http://www.mozilla.org/projects/nspr/ Netscape Portable Runtime] <br>Additional Resources : [[NSPR| DPS909]]
 +
*'''NSS'''
 +
*: [http://www.mozilla.org/projects/security/pki/nss/ Network Security Services]
 +
*'''RDF'''
 +
*: [http://www.mozilla.org/rdf/doc/ Resource Description Framework] <br> Additional Resources : [[XUL| DPS909]] [http://www.w3.org/RDF/ W3C]
 +
*'''XPCOM'''
 +
*: [http://www.mozilla.org/projects/xpcom/ Cross Platform Component Object Model] <br> Additional Resources : [[XPCOM| DPS909]]
 +
*'''XUL'''
 +
*: [http://www.mozilla.org/projects/xul/ XML User interface Language] <br> Additional Resources : [[XUL| DPS909]]
 +
 +
==VMWare==
 +
#  '''What is a VM appliance?'''
 +
#: A VM appliance is pre-configured, pre-packaged image of an operating system or environment.  This allows you to simply download these appliances and not have to worry about downloading iso images and burning CD's etc. to install an OS.  VM appliances are opened with the VMPlayer.
 +
#  '''How do I get VM appliances?'''
 +
#: To get started you will need to [http://www.vmware.com/download/player/download install the VMWare player.] or [http://www.vmware.com/download/server/ VMWare Server]  To use an appliance, simply download and unzip it.  Then launch VM Player or Server and open it when prompted.
 +
#  '''Where can I find a listing of available VM appliances?'''
 +
#: A detailed listing of available VM Appliances can be found at the [http://www.vmware.com/vmtn/appliances/directory/ Virtual Appliance Directory].
 +
#  '''Why is there a shortage/absence of appliances for Microsoft Operating Systems in the directory?'''
 +
#: Appliances can be created for Microsoft operating systems just they can be created for the  the various other operating systems (e.g. Ubuntu, Fedora etc.) using VMWare Workstation.  However, licensing restrictions remain the only factor limiting the availabilty of MS operating systems.
 +
#  '''Is there a way to create your own virtual machines (appliances) using only the VMWare Player?'''
 +
#: The easiest method to create VM appliances is using VM Server or Workstation edition.  However, Mike Shaver was able to locate a [http://hackaday.com/2005/10/24/how-to-vmware-player-modification hack for this].  There is even a [http://rhysgoodwin.orcon.net.nz/vmxwizard/ free third party wizard applicaton] that can help you create your on VM's to run on the VM Player.
 +
 +
==Other==
 +
 +
# '''How do I find out who owns what module in the Mozilla Tree?'''
 +
#: Visit: [http://www.mozilla.org/owners.html http://www.mozilla.org/owners.html]
  
==Terminology==
 
  
#  '''What does MDC or devmo refer to?'''
+
[[Category:Mozilla for beginners]]
#: Mozilla Developer Center - http://developer.mozilla.org.
 

Latest revision as of 21:32, 17 September 2008

This FAQ is meant to provide a place for you to capture knowledge as you begin working with Open Source. When someone answers a question for you, consider adding it below, and feel free to update previous entries. Create new topic headings as necessary.

Building Firefox

  1. Where can I get information on building Firefox or other Mozilla products?
    Start with the documentation on MDC: http://developer.mozilla.org/en/docs/Build_Documentation.
  2. Where can I get more help building Firefox on Windows?
    See Building Firefox on Win32 using Visual Studio .NET 2005.
    Windows Build Documentation is updated - 17:15, Sept 16 2006 (EST)
    Seneca students can get Visual Studios .NET 2003 or 2005 from ACS.
  3. How can I checkout the source code when ACS is blocking ports?
    Open up two terminals. The first one makes a tunnel to matrix. In terminal 1:
    ssh -L 2401:cvs-mirror.mozilla.org:2401 -l yourusername yourusername@matrix
    In terminal 2:
    cvs -d :pserver:anonymous:anonymous@localhost:/cvsroot co mozilla/client.mk
  4. What's the best way to run a build so it doesn't mess-up my default install/profile?
    Use the -no-remote and -profile command line switches. The -no-remote switch will allow multiple versions of the browser to run at the same time (i.e., otherwise it will open another window for your currently running instance). The -profile switch allows you to specify a path to a profile (e.g., a directory). This profile directory doesn't need to exist--it will create it if it is not there:

    $ mozilla/objdir/dist/bin/firefox.exe -no-remote -profile some/path/testing
  5. When I run my new build on Windows, I get a lot of assertion pop-ups. How can I stop this?
    Before you run your build at the command line, do this (which will send the assertion messages to the console instead):

    $ export XPCOM_DEBUG_BREAK=warn
  6. What are some ways I can make my build go faster?
    See Improving Build Times

Mozilla Build System

1. How do a see what macros are being expanded in order to understand my compiler error (a.k.a., how do I create a preprocessed version of a C/C++ file)?

$ cd $OBJDIR/some/directory
$ make nsMyFilename.i

2. How do I generate Doxygen documentation for Mozilla?

$ cd $OBJDIR
$ make documentation

3. Hw do I see the final value of a makefile variable?

$ cd $OBJDIR/some/directory
$ make echo-variable-EXTRA_DSO_LDOPTS

IRC

  1. Where can I get general info about using IRC?
    See the IRC page on this wiki.
  2. Where can I find a comprehensive list of IRC clients?
    Visit http://en.wikipedia.org/wiki/List_of_IRC_clients for a list of IRC clients on various platforms. Two popular choices are Chatzilla and irssi.
  3. Where can I ask for help on IRC?
    Use the #seneca, #firefox, or #developers channels on irc://irc.mozilla.org (in that order).
  4. What is the best way to share long error messages or other text that is too big to copy/paste into IRC?
    Use a pastebin at http://pastebin.ca/ or http://pastebin.mozilla.org/ to copy/paste your output. Then paste the resulting URL into IRC.
  5. What is the best way to share long URLs in IRC?
    Use http://tinyurl.com/ and paste the resulting URL into IRC.
  6. IRSSI + Terminal Server:
    Click for a quick Irssi Tutorial
    IRSSI Documentation and Resources
  7. What do all these acronyms stand for?
    Look them up on the Glossary of IRC terminology
  8. I can't seem to join #seneca, how do I register my nick?
    Take a look at this discussion of IRC nick registration for a list of instructions.

SVN

  1. What is SVN?
    Subversion (or SVN for short) is a revision control system that is used to track changes to a project's file repository. SVN tracks changes to the repository made by each project collaborator. SVN tracks changes and can be used to analyze differences and undo changes at a later time if needed. This allows for greater collaboration and speed , while minimizing (though never completely elimintating) risks associated with duplication and overwriting each others work. Project contents need not be limited to source code files.
  2. Where can I find an SVN tutorial?
  3. More complete documentation?
    Detailed SVN tutorials and other help information can be found in the free official online book by O'Reilly Media.
  4. Where can I find an SVN Client?
    View a list of SVN clients available for various platforms and development environments.
  5. SVN at a glance: SVN

Common Commands

  • To access the svn repository for your project, use the following command to 'check out' your project.
svn checkout svn://cdot.senecac.on.ca/<yourprojecthere>/
  • Once you have your repository sandbox, change directories into the project folder.
  • To add a file to your svn repository, use the following command:
svn add <filename>
  • To remove a file from your svn repository, type:
svn remove <filename>
  • To update the repository with your latest changes to the repository, type:
svn commit -m "type a message here that explains what you're committing"
  • To update the sandbox located on your local machine to the same version on the repository, type:
svn update
  • To revert/undo file into its pre-modified state (More on svn revert):
$ svn revert <filename>
  • To view all the changes (commits) made on a svn repository, type:
svn log
It is very important that you type useful messages when committing code.
svn resolved <filename>
  • Here is how to create a patch using svn. Everything in square brackets is optional. If you provide no additional arguements, then a diff file would be made of all the changes you have done since the last commit/update.
 svn diff [-r from[:to]] [filename|directory] > mypatch.patch

Common Abbreviations/Acronyms

Listed alphabetically

VMWare

  1. What is a VM appliance?
    A VM appliance is pre-configured, pre-packaged image of an operating system or environment. This allows you to simply download these appliances and not have to worry about downloading iso images and burning CD's etc. to install an OS. VM appliances are opened with the VMPlayer.
  2. How do I get VM appliances?
    To get started you will need to install the VMWare player. or VMWare Server To use an appliance, simply download and unzip it. Then launch VM Player or Server and open it when prompted.
  3. Where can I find a listing of available VM appliances?
    A detailed listing of available VM Appliances can be found at the Virtual Appliance Directory.
  4. Why is there a shortage/absence of appliances for Microsoft Operating Systems in the directory?
    Appliances can be created for Microsoft operating systems just they can be created for the the various other operating systems (e.g. Ubuntu, Fedora etc.) using VMWare Workstation. However, licensing restrictions remain the only factor limiting the availabilty of MS operating systems.
  5. Is there a way to create your own virtual machines (appliances) using only the VMWare Player?
    The easiest method to create VM appliances is using VM Server or Workstation edition. However, Mike Shaver was able to locate a hack for this. There is even a free third party wizard applicaton that can help you create your on VM's to run on the VM Player.

Other

  1. How do I find out who owns what module in the Mozilla Tree?
    Visit: http://www.mozilla.org/owners.html