https://brlcad.org/w/api.php?action=feedcontributions&user=69.250.247.75&feedformat=atomBRL-CAD - User contributions [en]2024-03-28T22:30:04ZUser contributionsMediaWiki 1.32.2https://brlcad.org/w/index.php?title=Developing_applications&diff=982Developing applications2008-08-29T20:13:59Z<p>69.250.247.75: </p>
<hr />
<div>The following links provide a very brief introduction into writing applications with BRL-CAD.<br />
<br />
* {{pdf|Application Development|An introduction to writing BRL-CAD applications}}<br />
* [[Example Application|An example program with rt_shootray()]]<br />
* [[Example_db_walk_tree|An example program with db_walk_tree()]]<br />
== Standards Support ==<br />
Several tools in BRL-CAD conform to various national and international standards including:<br />
* C Programming Language (ANSI/ISO 9899:1990)<br />
* International Graphics Exchange Standard (IGES) (ANSI Y14.26M-1981)<br />
* Virtual Reality Modeling Language (VRML) 2.0 (ISO/IEC 14772-1:1997)<br />
* Portable Network Graphics (PNG) Specification (ISO/IEC 15948:2003)<br />
* Transmission Control Protocol (TCP) (IETF RFC 793)<br />
* Internet Protocol (IP) v4 (IETF RFC 791)<br />
* User Datagram Protocol (UDP) (IETF RFC 768)<br />
* Internet Control Message Protocol (ICMP) (IETF RFC 792)<br />
* Test Transmission Control Protocol (TTCP) (NWG RFC 2398)<br />
* X Window System Protocol (X10R4 and X11R6)<br />
* OpenGL Standard (OpenGL Graphics System 1.2 Specification)<br />
* Character Encoding (ISO/IEC 8859-1)<br />
* Portable Operating System Interface (POSIX) Shell (IEEE 1003.2 and ISO/IEC 9945-2:2003)<br />
* American Standard Code for Information Interchange (ASCII) (ANSI X3.4-1986, EMCA-6, ISO/IEC 646:1991)<br />
* Really Simple Syndication (RSS) 2.0 (subset of ISO 8879:1986(E) and REC-xml-20040204)<br />
* International System of Units (SI and ISO 31 and ISO 1000 and 55 FR 52242-52245)<br />
* U.S. customary units (NIST Handbook 44)<br />
<br />
[[Category:Documentation]]</div>69.250.247.75https://brlcad.org/w/index.php?title=Cvs2svn&diff=966Cvs2svn2008-08-23T21:51:09Z<p>69.250.247.75: /* Automatic properties */</p>
<hr />
<div>At the end of 2007, preparations to convert BRL-CAD's CVS repository to Subversion began. The cvs2svn tool was used to perform the conversion, initially with version 1.5.1 but later using the latest available 2.0.1 version. The page is provided for historic reference on how the repository was converted including the steps that were taken.<br />
<br />
Using version 1.5.1, cvs2svn using all default options took over 7 hours of processing before it filled up available hard disk space (only 3GB was available at the time). More space was made available and cvs2svn version 2.0.1 was installed, which provided a new more direct and faster method of extracting data from the CVS repository. Using the same default options, version 2.0.1 took just under 3 hours. The conversion was performed by Christopher Sean Morrison (aka brlcad). The details of this conversion process are documented in following.<br />
<br />
= CVS repository preparations =<br />
As cvs2svn reported issues in the repository processing, some repairs to BRL-CAD's CVS root was required. Working on a copy of the CVS root files, this included fixing five directory subtrees that were in the Attic:<br />
<br />
* html/manuals/Attic/mged4.0<br />
* html/Attic/release-notes<br />
* Attic/libitcl<br />
* Attic/libtcl<br />
* Attic/libtk<br />
<br />
These directories seemed to expose a bug in cvs2svn's Attic processing. Initial thoughts were that someone had manually moved directories into the Attic, but upon further investigation it seemed more likely that this was perhaps actually proper behavior for an old version of CVS. All of the files in the Attic subdirs were properly marked as dead, and they were a '''hierarchy''' of ,v files that were properly marked as Dead revisions in that Attic subdir. Also, the directory "deletions" into the Attic were performed by multiple developers (namely butler, parker, and pjt iirc) during the late 90's, when the repository was located on an old IRIX server with an old version of cvs (pre 1.10 but unknown). <br />
<br />
The workaround solution used, without needing to modify cvs2svn, was to create Attic directories throughout the hierarchy subfolders, move the ,v files into their respective Attic directory for each subfolder, and then move the directory up one level out of the Attic. The Attic/libitcl directory conflicted with an existing libitcl/ directory, so it was simply purged given it would not have been beneficial to preserve that external dependency history.<br />
<br />
Another message reported by cvs2svn was that there was (exactly) one commit that had non-ascii characters. Upon investigation, it was a commit that contained an ñ in utf-8 so the --encoding option was added to use utf-8. At that point, the options being used were:<br />
<br />
cvs2svn --encoding=utf_8 --cvs-revnums --auto-props=auto-props --eol-from-mime-type --mime-types=mime.types --dumpfile=/path/to/brlcad.dumpfile /path/to/cvs/repository<br />
<br />
Upon performing a full checkout of the entire newly imported Subversion repository, the checkout failed in a branch (rel-5-1-branch) on checkout of cup.g from html/manuals/mged/. Upon review of the CVS root files, it was not apparent what was unique about cup.g,v other than the fact that there also existed a Cup.g,v (both of which existed in the Attic). As that file was entirely a triviality as a v4 binary BRL-CAD database file used in a documentation example, both the uppercase and lowercase files were removed.<br />
<br />
= The executable bit =<br />
<br />
Although not a critical issue as the svn:executable property can easily be set on files after they're imported into Subversion, there were problems with files that were properly set as executable in CVS not getting properly set in Subversion. Some scripts got the setting while others did not, other files that CVS did not make executable upon checkout (like C source files) were getting marked as executable. It seemed to be a mix of problems, some caused by inconsistent permissions set on the CVS root files and by unexpected cvs2svn behavior that is inconsistent with the behavior of CVS.<br />
<br />
There were indeed inconsistent permissions on the CVS root files that needed adjusting to make sure everything that should or should not be mode ugo+x had the appropriate bit setting. With the repository repaired, attention was directed at the making sure the auto-props file also has the svn:executable property set on corresponding files. Even with the auto-props carefully customized to list svn:executable for the files that should be executable, they still came across without the exec bit set. In fact, it seemed the care and attention more categorically made all scripts files, for example, not have the executable properly set. As the executable property is not critical, the files had the property set manually once the SVN repository went on-line.<br />
<br />
UPDATE: Shortly after first posting this article, one of the cvs2svn developers (Michael Haggerty via IRC, thanks mhagger) contacted Sean regarding this write-up and the issues encountered with the BRL-CAD cvs2svn conversion. He reviewed the config and input file settings and noted that the executable bit problems were directly the result of the auto-props file settings being used. Contrary to SVN's behavior, cvs2svn interprets svn:executable as meaning '''''unset''' that property'' instead of setting it. So, the file needed to have something like svn:executable=1 instead of just svn:executable to ensure the property was set. This was at least the behavior as of version 2.0.1 of cvs2svn. It was subsequently suggested that cvs2svn not diverge from SVN's behavior and instead allow a '''!'''svn:executable indicate the explicit ''unsetting'' of properties.<br />
<br />
= Mime types =<br />
<br />
The repository conversion went through yet another full conversion when it was discovered that several files in the repository had been marked as binary. While Subversion does have improved binary diff management than CVS, it still will not show you the diff or history of a file that is marked as binary. This was particularly detrimental in our repository as I originally used a standard Apache mime.types file in addition to a custom auto-props file. The Apache mime type for a .tcl file is application/x-tcl which Subversion only understands as "binary", making it difficult to view the history. The fix, of course, was to re-run the conversion without the Apache mime.types file but instead be much more more comprehensive about setting types in the auto-props file. <br />
<br />
= Single project vs multiproject =<br />
<br />
The default behavior of cvs2svn is to import all of the CVS modules (or projects) as a single project, putting module directories into each of the /trunk, /branches, and /tags directory. For BRL-CAD, this results in a hierarchy that looks like the following:<br />
<br />
/trunk/CVSROOT/...srcs...<br />
/trunk/brlcad/...srcs...<br />
/trunk/...other_cvs_modules.../...srcs...<br />
<br />
/branches/ansi-branch/brlcad/...srcs...<br />
/branches/windows-branch/brlcad/...srcs...<br />
/branches/...other_brlcad_branches.../brlcad/...srcs...<br />
/branches/...other_cvs_module_branches.../module/...srcs...<br />
<br />
/tags/rel-5-2/brlcad/...srcs...<br />
/tags/rel-7-0-2/brlcad/...srcs...<br />
/tags/...other_brlcad_tags.../brlcad/...srcs...<br />
/tags/...other_module_tags.../module/...srcs...<br />
<br />
Since BRL-CAD's modules really have been historically treated as entirely separate projects, it became apparent that a different hierarchy would be more desirable. It was not desirable to checkout the trunk and receive all of the former CVS modules. Similarly it was not desirable to have the extra module/project subdirectory in each of the tag and branch directories.<br />
<br />
Instead of restructuring the layout after the import to Subversion, the BRL-CAD CVS repository conversion would be run through cvs2svn again as a "multiproject" import. It became necessary to create a cvs2svn options file where modules are individually listed. As a multiproject import, the following hierarchy results:<br />
<br />
/CVSROOT/trunk/...srcs...<br />
/brlcad/trunk/...srcs...<br />
/...other_modules.../trunk/...srcs...<br />
<br />
/brlcad/branches/ansi-branch/...srcs...<br />
/brlcad/branches/windows-branch/...srcs...<br />
/brlcad/branches/...other_brlcad_branches.../...srcs...<br />
/...other_modules.../branches/...other_module_branches.../...srcs...<br />
<br />
/brlcad/tags/rel-5-2/...srcs...<br />
/brlcad/tags/rel-7-0-2/...srcs...<br />
/brlcad/...other_brlcad_tags.../...srcs...<br />
/...other_modules.../...other_module_tags.../...srcs...<br />
<br />
This parallels the CVS root files more directly and their nature as independent projects. Upon conversion as a multiproject import, the repository was once again validated both manually and quantitatively. Creation of a Subversion repository from the dumpfile was verified. It was verified that a complete log could be extracted via "svn log" without error and that no warnings or errors existed in the cvs2svn verbose output. Also, a complete checkout of the SVN root was performed after upload to Sourceforge to verify no errors were evident.<br />
<br />
It was later detected that permissions were incorrect on a limited set of the CVS root files (a couple dozen), but the svn:executable property was fixed on those files after import into SVN.<br />
<br />
= cvs2svn Options =<br />
<br />
To perform the conversion, the following options file was used:<br />
<br />
<pre><br />
import re<br />
<br />
from cvs2svn_lib.boolean import *<br />
from cvs2svn_lib import config<br />
from cvs2svn_lib.common import UTF8Encoder<br />
from cvs2svn_lib.log import Log<br />
from cvs2svn_lib.project import Project<br />
from cvs2svn_lib.output_option import DumpfileOutputOption<br />
from cvs2svn_lib.output_option import ExistingRepositoryOutputOption<br />
from cvs2svn_lib.output_option import NewRepositoryOutputOption<br />
from cvs2svn_lib.revision_reader import RCSRevisionReader<br />
from cvs2svn_lib.revision_reader import CVSRevisionReader<br />
from cvs2svn_lib.checkout_internal import InternalRevisionReader<br />
from cvs2svn_lib.symbol_strategy import AllBranchRule<br />
from cvs2svn_lib.symbol_strategy import AllTagRule<br />
from cvs2svn_lib.symbol_strategy import BranchIfCommitsRule<br />
from cvs2svn_lib.symbol_strategy import ExcludeRegexpStrategyRule<br />
from cvs2svn_lib.symbol_strategy import ForceBranchRegexpStrategyRule<br />
from cvs2svn_lib.symbol_strategy import ForceTagRegexpStrategyRule<br />
from cvs2svn_lib.symbol_strategy import HeuristicStrategyRule<br />
from cvs2svn_lib.symbol_strategy import RuleBasedSymbolStrategy<br />
from cvs2svn_lib.symbol_strategy import UnambiguousUsageRule<br />
from cvs2svn_lib.symbol_transform import RegexpSymbolTransform<br />
from cvs2svn_lib.property_setters import AutoPropsPropertySetter<br />
from cvs2svn_lib.property_setters import CVSBinaryFileDefaultMimeTypeSetter<br />
from cvs2svn_lib.property_setters import CVSBinaryFileEOLStyleSetter<br />
from cvs2svn_lib.property_setters import CVSRevisionNumberSetter<br />
from cvs2svn_lib.property_setters import DefaultEOLStyleSetter<br />
from cvs2svn_lib.property_setters import EOLStyleFromMimeTypeSetter<br />
from cvs2svn_lib.property_setters import ExecutablePropertySetter<br />
from cvs2svn_lib.property_setters import KeywordsPropertySetter<br />
from cvs2svn_lib.property_setters import MimeMapper<br />
from cvs2svn_lib.property_setters import SVNBinaryFileKeywordsPropertySetter<br />
<br />
Log().log_level = Log.VERBOSE<br />
<br />
ctx.output_option = DumpfileOutputOption(<br />
dumpfile_path=r'/path/to/brlcad.dumpfile',<br />
)<br />
<br />
ctx.dry_run = False<br />
ctx.revision_reader = InternalRevisionReader(compress=True)<br />
ctx.svnadmin_executable = r'svnadmin'<br />
ctx.sort_executable = r'sort'<br />
ctx.trunk_only = False<br />
<br />
ctx.prune = True<br />
<br />
ctx.utf8_encoder = UTF8Encoder(<br />
[<br />
'ascii',<br />
'utf8',<br />
],<br />
)<br />
<br />
ctx.filename_utf8_encoder = UTF8Encoder(<br />
[<br />
'ascii',<br />
],<br />
)<br />
<br />
ctx.symbol_strategy = RuleBasedSymbolStrategy()<br />
ctx.symbol_strategy.add_rule(UnambiguousUsageRule())<br />
<br />
ctx.username = None<br />
<br />
ctx.svn_property_setters.extend([<br />
AutoPropsPropertySetter(<br />
r'/path/to/auto-props',<br />
ignore_case=True,<br />
),<br />
<br />
CVSBinaryFileEOLStyleSetter(),<br />
CVSBinaryFileDefaultMimeTypeSetter(),<br />
<br />
EOLStyleFromMimeTypeSetter(),<br />
<br />
DefaultEOLStyleSetter(None),<br />
<br />
SVNBinaryFileKeywordsPropertySetter(),<br />
KeywordsPropertySetter(config.SVN_KEYWORDS_VALUE),<br />
ExecutablePropertySetter(),<br />
<br />
CVSRevisionNumberSetter(),<br />
<br />
])<br />
<br />
ctx.tmpdir = r'cvs2svn-tmp'<br />
ctx.cross_project_commits = True<br />
ctx.cross_branch_commits = True<br />
ctx.retain_conflicting_attic_files = False<br />
<br />
run_options.profiling = False<br />
<br />
ctx.add_project(<br />
Project(<br />
r'/path/to/brlcad/CVSROOT',<br />
'CVSROOT/trunk',<br />
'CVSROOT/branches',<br />
'CVSROOT/tags',<br />
)<br />
)<br />
ctx.add_project(<br />
Project(<br />
r'/path/to/brlcad/brlcad',<br />
'brlcad/trunk',<br />
'brlcad/branches',<br />
'brlcad/tags'<br />
)<br />
)<br />
ctx.add_project(<br />
Project(<br />
r'/path/to/brlcad/jbrlcad',<br />
'jbrlcad/trunk',<br />
'jbrlcad/branches',<br />
'jbrlcad/tags'<br />
)<br />
)<br />
ctx.add_project(<br />
Project(<br />
r'/path/to/brlcad/rt^3',<br />
'rt^3/trunk',<br />
'rt^3/branches',<br />
'rt^3/tags'<br />
)<br />
)<br />
ctx.add_project(<br />
Project(<br />
r'/path/to/brlcad/rtcmp',<br />
'rtcmp/trunk',<br />
'rtcmp/branches',<br />
'rtcmp/tags'<br />
)<br />
)<br />
ctx.add_project(<br />
Project(<br />
r'/path/to/brlcad/web',<br />
'web/trunk',<br />
'web/branches',<br />
'web/tags'<br />
)<br />
)<br />
</pre><br />
<br />
= Automatic properties =<br />
<br />
UPDATE: As noted above regarding the svn:executable property settings, the auto-props file shown below was found to be not what we wanted with respect to how cvs2svn handles property settings that don't list a value. As of version 2.0.1, cvs2svn treats valueless auto-props property settings as an indicator that cvs2svn should explicitly '''unset''' the property instead of setting it. As this behavior may be changed in future versions, consult the cvs2svn documentation.<br />
<br />
Regardless, the following auto-props file that was ultimately used for the BRL-CAD conversion is as follows:<br />
<br />
<pre><br />
[auto-props]<br />
*.[0-9] = svn:mime-type=text/plain;svn:eol-style=native<br />
*.a = svn:mime-type=application/octet-stream<br />
*.ac = svn:eol-style=native;svn:mime-type=text/plain<br />
*.ai = svn:mime-type=application/illustrator<br />
*.am = svn:eol-style=native;svn:mime-type=text/plain<br />
*.asc = svn:eol-style=native;svn:mime-type=text/plain<br />
*.avi = svn:mime-type=video/x-msvideo<br />
*.awk = svn:eol-style=native;svn:mime-type=text/plain<br />
*.bat = svn:eol-style=CRLF;svn:mime-type=text/plain;svn:executable<br />
*.bmp = svn:mime-type=image/bmp<br />
*.c = svn:eol-style=native;svn:mime-type=text/plain<br />
*.cc = svn:eol-style=native;svn:mime-type=text/plain<br />
*.chm = svn:mime-type=application/octet-stream<br />
*.com = svn:eol-style=native;svn:mime-type=text/plain<br />
*.cpp = svn:eol-style=native;svn:mime-type=text/plain<br />
*.cs = svn:eol-style=native;svn:mime-type=text/plain<br />
*.css = svn:mime-type=text/css;svn:eol-style=native<br />
*.csv = svn:eol-style=native;svn:mime-type=text/plain<br />
*.cur = svn:mime-type=application/octet-stream<br />
*.cxx = svn:eol-style=native;svn:mime-type=text/plain<br />
*.decls = svn:eol-style=native;svn:mime-type=text/plain<br />
*.def = svn:eol-style=native;svn:mime-type=text/plain<br />
*.doc = svn:mime-type=text/plain<br />
*.dsp = svn:eol-style=CRLF;svn:mime-type=text/plain<br />
*.dsw = svn:eol-style=CRLF;svn:mime-type=text/plain<br />
*.dylib = svn:mime-type=application/octet-stream<br />
*.enc = svn:eol-style=native;svn:mime-type=text/plain<br />
*.eps = svn:mime-type=application/postscript<br />
*.f = svn:eol-style=native;svn:mime-type=text/plain<br />
*.g = svn:mime-type=application/octet-stream<br />
*.gif = svn:mime-type=image/gif<br />
*.gpgkey = svn:mime-type=application/gpg-keys<br />
*.gtar = svn:mime-type=application/x-gtar<br />
*.gz = svn:mime-type=application/x-gtar<br />
*.h = svn:eol-style=native;svn:mime-type=text/plain<br />
*.hpp = svn:eol-style=native;svn:mime-type=text/plain<br />
*.hqx = svn:mime-type=application/mac-binhex40<br />
*.htm = svn:mime-type=text/html;svn:eol-style=native<br />
*.html = svn:mime-type=text/html;svn:eol-style=native<br />
*.hxx = svn:eol-style=native;svn:mime-type=text/plain<br />
*.ico = svn:mime-type=image/x-icon<br />
*.igs = svn:mime-type=model/iges<br />
*.in = svn:eol-style=native;svn:mime-type=text/plain<br />
*.itcl = svn:eol-style=native;svn:mime-type=text/plain<br />
*.itk = svn:eol-style=native;svn:mime-type=text/plain<br />
*.jar = svn:mime-type=application/java-archive<br />
*.java = svn:eol-style=native;svn:mime-type=text/plain<br />
*.jpeg = svn:mime-type=image/jpeg<br />
*.jpg = svn:mime-type=image/jpeg<br />
*.l = svn:eol-style=native;svn:mime-type=text/plain<br />
*.log = svn:eol-style=native;svn:mime-type=text/plain<br />
*.m4 = svn:eol-style=native;svn:mime-type=text/plain<br />
*.man* = svn:mime-type=text/plain;svn:eol-style=native<br />
*.mov = svn:mime-type=video/quicktime<br />
*.mp3 = svn:mime-type=audio/mpeg<br />
*.mpg = svn:mime-type=video/mpeg<br />
*.ms = svn:eol-style=native;svn:mime-type=text/plain<br />
*.msg = svn:eol-style=native;svn:mime-type=text/plain<br />
*.n = svn:eol-style=native;svn:mime-type=text/plain<br />
*.nsi = svn:mime-type=text/plain;svn:eol-style=native<br />
*.pbxproj = svn:mime-type=text/plain;svn:eol-style=native<br />
*.pdf = svn:mime-type=application/pdf<br />
*.php = svn:mime-type=text/plain;svn:eol-style=native<br />
*.pix = svn:mime-type=image/x-rgb<br />
*.pl = svn:eol-style=native;svn:executable;svn:mime-type=text/plain<br />
*.perl = svn:eol-style=native;svn:executable;svn:mime-type=text/plain<br />
*.plist = svn:mime-type=text/plain<br />
*.png = svn:mime-type=image/png<br />
*.ppm = svn:mime-type=image/x-portable-pixmap<br />
*.ppt = svn:mime-type=application/vnd.ms-powerpoint<br />
*.ps = svn:mime-type=application/postscript<br />
*.psd = svn:mime-type=application/photoshop<br />
*.py = svn:eol-style=native;svn:executable;svn:mime-type=text/plain<br />
*.qpg = svn:mime-type=text/xml;svn:eol-style=native<br />
*.r = svn:eol-style=native;svn:mime-type=text/plain<br />
*.rc = svn:eol-style=CRLF;svn:mime-type=text/plain<br />
*.res = svn:eol-style=native;svn:mime-type=text/plain<br />
*.rgb = svn:mime-type=image/x-rgb<br />
*.rt = svn:eol-style=native;svn:executable;svn:mime-type=text/x-sh<br />
*.rtf = svn:mime-type=text/rtf<br />
*.s = svn:eol-style=native;svn:mime-type=text/plain<br />
*.sh = svn:eol-style=native;svn:executable;svn:mime-type=text/x-sh<br />
*.sln = svn:eol-style=CRLF<br />
*.smil = svn:mime-type=application/smil<br />
*.so = svn:mime-type=application/octet-stream<br />
*.spec = svn:eol-style=native;svn:mime-type=text/plain<br />
*.svg = svn:mime-type=image/svg+xml<br />
*.svgz = svn:mime-type=image/svg+xml<br />
*.swf = svn:mime-type=application/x-shockwave-flash<br />
*.tcl = svn:eol-style=native;svn:mime-type=text/plain<br />
*.tk = svn:eol-style=native;svn:mime-type=text/plain<br />
*.terms = svn:eol-style=native;svn:mime-type=text/plain<br />
*.test = svn:eol-style=native;svn:mime-type=text/plain<br />
*.tex = svn:mime-type=text/x-tex<br />
*.tgz = svn:mime-type=application/x-gtar<br />
*.tif = svn:mime-type=image/tiff<br />
*.tiff = svn:mime-type=image/tiff<br />
*.tr = svn:eol-style=native;svn:mime-type=text/plain<br />
*.txt = svn:mime-type=text/plain;svn:eol-style=native<br />
*.vbs = svn:eol-style=native;svn:mime-type=text/plain;svn:executable<br />
*.vcf = svn:mime-type=text/x-vcard<br />
*.vcproj = svn:eol-style=CRLF;svn:mime-type=text/plain<br />
*.xbm = svn:mime-type=image/x-xbitmap<br />
*.xls = svn:mime-type=application/vnd.ms-excel<br />
*.xml = svn:mime-type=text/xml;svn:eol-style=native<br />
*.y = svn:mime-type=text/plain;svn:eol-style=native<br />
*.zip = svn:mime-type=application/zip<br />
.cvsignore = svn:mime-type=text/plain;svn:eol-style=native<br />
AUTHORS* = svn:eol-style=native;svn:mime-type=text/plain<br />
BUGS* = svn:eol-style=native;svn:mime-type=text/plain<br />
COPYING* = svn:eol-style=native;svn:mime-type=text/plain<br />
ChangeLog* = svn:eol-style=native;svn:mime-type=text/plain<br />
HACKING* = svn:eol-style=native;svn:mime-type=text/plain<br />
INSTALL* = svn:eol-style=native;svn:mime-type=text/plain<br />
Makefile* = svn:eol-style=native;svn:mime-type=text/plain<br />
NEWS* = svn:eol-style=native;svn:mime-type=text/plain<br />
README* = svn:eol-style=native;svn:mime-type=text/plain<br />
TODO* = svn:eol-style=native;svn:mime-type=text/plain<br />
### catch-all for files starting and ending in all caps with optional (e.g. READ.ME)<br />
[A-Z._][A-Z._]*[A-Z._] = svn:eol-style=native;svn:mime-type=text/plain<br />
</pre><br />
<br />
UPDATE: The auto-props shown above is shown for historic purposes only. If you're looking for an up-to-date auto-props file to work with, you may want to try using [http://brlcad.org/~sean/subversion.config this one] from Sean instead.<br />
<br />
= Results and statistics =<br />
<br />
The final cvs2svn processing was performed on:<br />
FreeBSD bz.bzflag.bz 5.2.1-RELEASE FreeBSD 5.2.1-RELEASE #0: Mon Feb 23 20:45:55 GMT 2004 root@wv1u.btc.adaptec.com:/usr/obj/usr/src/sys/GENERIC i386<br />
Intel(R) Celeron(R) CPU 2.40GHz w/ 1GB mem<br />
<br />
The conversion resulted in a 2.8GB dumpfile and provided the following summary statistics:<br />
<br />
cvs2svn Statistics:<br />
------------------<br />
Total CVS Files: 20127<br />
Total CVS Revisions: 147514<br />
Total CVS Branches: 73233<br />
Total CVS Tags: 281841<br />
Total Unique Tags: 80<br />
Total Unique Branches: 32<br />
CVS Repos Size in KB: 516588<br />
Total SVN Commits: 29886<br />
First Revision Date: Thu Dec 15 19:06:47 1983<br />
Last Revision Date: Mon Dec 31 15:25:14 2007<br />
------------------<br />
Timings (seconds):<br />
------------------<br />
1647 pass1 CollectRevsPass<br />
0 pass2 CollateSymbolsPass<br />
483 pass3 FilterSymbolsPass<br />
1 pass4 SortRevisionSummaryPass<br />
2 pass5 SortSymbolSummaryPass<br />
459 pass6 InitializeChangesetsPass<br />
342 pass7 BreakRevisionChangesetCyclesPass<br />
568 pass8 RevisionTopologicalSortPass<br />
155 pass9 BreakSymbolChangesetCyclesPass<br />
341 pass10 BreakAllChangesetCyclesPass<br />
376 pass11 TopologicalSortPass<br />
330 pass12 CreateRevsPass<br />
15 pass13 SortSymbolsPass<br />
14 pass14 IndexSymbolsPass<br />
3112 pass15 OutputPass<br />
7844 total <br />
(initial pass with mime.types was 9573 total)<br />
<br />
The result is a contiguous history of BRL-CAD development that has gone from RCS to CVS and now to SVN preserving more than 25 years of revision history. The conversion was completed on January 10th, 2008.</div>69.250.247.75https://brlcad.org/w/index.php?title=Template:PD_Help_Page&diff=603Template:PD Help Page2008-06-15T18:18:03Z<p>69.250.247.75: make it so you can read the links</p>
<hr />
<div><div style="border:solid 1px #fff; padding:0.5em 1em 0.5em 0.7em; margin:0.5em 0.5em 0.5em 0.5em; background-color:#333;font-size:90%; vertical-align:middle;"><br />
{|<br />
| style="padding: 0.5em; background:#fff;" valign="top" | [[Image:PD-icon.svg|32px|left|PD]] <br />
|<br />
| '''Important note:''' When you edit this page, you agree to release your contribution into the [[:en:Public domain|public domain]]. If you don't want this or can't do this because of license restrictions, please don't edit. This page is one of the [[Project:PD help|Public Domain Help Pages]], which can be freely copied into fresh wiki installations and/or distributed with MediaWiki software; see [[Help:Contents]] for an overview of all pages.<br />
|}</div><br />
<noinclude>{{Languages|Template:PD Help Page}}[[Category:License templates|{{PAGENAME}}]]</noinclude></div>69.250.247.75https://brlcad.org/w/index.php?title=Building_from_SVN&diff=602Building from SVN2008-06-15T17:54:48Z<p>69.250.247.75: </p>
<hr />
<div>== Obtain the sources ==<br />
<br />
BRL-CAD has recently [[Cvs2svn|switched from CVS to the Subversion system]]. In the new system some of the earlier complexities inherent to CVS are gone, no ''-dP'' option is required and developers will not need their passwords or usernames until it is time to commit a change.<br />
<br />
For non-developers:<br />
<pre>svn checkout https://brlcad.svn.sourceforge.net/svnroot/brlcad/brlcad/trunk brlcad</pre><br />
<br />
Note: If you do not yet have an SVN client installed, go to http://subversion.tigris.org for information on obtaining an appropriate SVN client for your platform. Most modern Linux distributions will also have SVN available in their package repositories.<br />
<br />
== Generate the configure script ==<br />
cd brlcad<br />
./autogen.sh<br />
<br />
If autogen.sh reports that the build system is NOT ready and it's not clear why, rerun autogen.sh in verbose mode:<br />
./autogen.sh --verbose<br />
<br />
=== An example generating the configure script on Mac OS X ===<br />
You need to do " sudo port install libtool" to get GNU version of libtool.<br />
imac:brlcad username$ sudo ln -s /usr/local/bin/glibtoolize /usr/bin/libtoolize<br />
Password:<br />
imac:brlcad username$ ./autogen.sh<br />
Preparing the BRL-CAD build system...please wait<br />
<br />
Found GNU Autoconf version 2.61<br />
Found GNU Automake version 1.10<br />
Found GNU Libtool version 1.5.26<br />
<br />
Automatically preparing build ... done<br />
<br />
The BRL-CAD build system is now prepared. To build here, run:<br />
./configure<br />
make<br />
imac:brlcad username$<br />
<br />
== Configure the build system ==<br />
./configure --help<br />
./configure --prefix=install_dir --enable-optimized<br />
<br />
When building for multiuser file servers it is often useful to make the install_dir reflect the version and/or architecture of the compile. This way a single server can provide multiple versions of BRL-CAD or multiple binary formats for various architectures. Symbolic links are then usually added to point to the "current" or "main" version that is preferable to provide so that users only need to add /usr/brlcad/bin to their path. Examples include:<br />
<br />
;By version<br />
:/usr/brlcad/rel-7.8.0 (release 7.8.0)<br />
:/usr/brlcad/rel-7.6.0 (release 7.6.0)<br />
<br />
;By architecture<br />
:/usr/brlcad/ia32 (linux on Pentium)<br />
:/usr/brlcad/ia64 (linux on Itanium)<br />
:/usr/brlcad/x86_64 (linux on Opteron)<br />
<br />
;By version and architecture<br />
:/usr/brlcad/rel-7.8.0/mips32 (IRIX on MIPS in 32-bit mode, release 7.8.0)<br />
:/usr/brlcad/rel-7.8.0/mips64 (IRIX on MIPS in 64-bit mode, release 7.8.0)<br />
:/usr/brlcad/rel-7.8.2/mips32 (IRIX on MIPS in 32-bit mode, release 7.8.2)<br />
<br />
IMPORTANT!!! - Because BRL-CAD has such a long development history, it predates some library naming conventions in modern operating systems. This means an attempt to configure for an install in the "/usr" path on Linux (for example) will stand a good chance of damaging important system libraries - e.g. BRL-CAD libraries put in "/usr/lib" may overwrite system libraries with the same names. Using "/usr/brlcad" or "/opt/brlcad" means all installed files will be safely contained in the brlcad directory.<br />
<br />
== Compile and test your build ==<br />
make<br />
<br />
At this point, you should have a fully installed and working system. You can test things by doing:<br />
<br />
make test<br />
make benchmark<br />
<br />
Both the test and benchmark should report successfully if everything is working correctly. Report any failures to the BRL-CAD [http://sourceforge.net/tracker/?group_id=105292&atid=640802 bug tracker].<br />
<br />
== Install ==<br />
make install<br />
<br />
If you created a prefix as described above for multiple versions or multiple architectures, you should now create your symbolic links for user convenience and consistency. Example where /usr/brlcad/rel-7.8.0/mips32 was used as the install_dir prefix:<br />
<br />
<pre>% ln -s rel-7.8.0/mips32 /usr/brlcad/stable<br />
% ln -s stable/bin /usr/brlcad/bin<br />
% ln -s stable/include /usr/brlcad/include<br />
% ln -s stable/lib /usr/brlcad/lib<br />
% ln -s stable/man /usr/brlcad/man<br />
% ln -s stable/share /usr/brlcad/share<br />
% ls -l /usr/brlcad<br />
total 48<br />
lrwxr-xr-x 1 root wheel 10 12 Apr 09:00 bin -> stable/bin<br />
lrwxr-xr-x 1 root wheel 14 12 Apr 09:00 include -> stable/include<br />
lrwxr-xr-x 1 root wheel 10 12 Apr 09:00 lib -> stable/lib<br />
lrwxr-xr-x 1 root wheel 10 12 Apr 09:00 man -> stable/man<br />
drwxr-xr-x 7 root wheel 238 11 Apr 18:00 rel-7.8.0<br />
lrwxr-xr-x 1 root wheel 12 12 Apr 09:00 share -> stable/share<br />
lrwxr-xr-x 1 root wheel 9 12 Apr 09:00 stable -> rel-7.8.0/mips32</pre><br />
<br />
''Future versions of BRL-CAD may provide this symbolic link operation for you as a configure option. Keep an eye out in the configure --help output.''<br />
<br />
== Setup environment (optional) ==<br />
At this point, everything should be ready for use. If the default prefix of /usr/brlcad was used or if the corresponding symbolic links were created, users should only need to add /usr/brlcad/bin to their PATH in order to find binaries for the package (optionally setting their MANPATH as well):<br />
<br />
For bash:<br />
<br />
export PATH=/usr/brlcad/bin:$PATH<br />
export MANPATH=/usr/brlcad/man:$MANPATH<br />
<br />
For csh/tcsh:<br />
<br />
set path=( /usr/brlcad/bin $path )<br />
setenv MANPATH /usr/brlcd/man:$MANPATH<br />
rehash<br />
<br />
If users do not want to modify their PATH, they can get by providing the full path to the binaries (e.g. /usr/brlcad/bin/mged). To find BRL-CAD manual pages without setting your MANPATH, use the provided "brlman" binary instead of "man".<br />
<br />
== Test installation ==<br />
If everything went well, there should now be more than 400 command-line applications at your disposal for processing images and geometry. A quick test of functionality (and performance) is to run the BRL-CAD benchmark again, which is installed as the benchmark tool:<br />
<br />
benchmark<br />
<br />
Additionally, you can run the MGED solid modeler:<br />
<br />
mged<br />
<br />
[[Category:Documentation]]</div>69.250.247.75https://brlcad.org/w/index.php?title=Building_from_SVN&diff=591Building from SVN2008-06-15T13:43:12Z<p>69.250.247.75: /* An Example of Mac OS X 10.5.3 */</p>
<hr />
<div>== Obtain the sources ==<br />
<br />
BRL-CAD has recently [[Cvs2svn|switched from CVS to the Subversion system]]. In the new system some of the earlier complexities inherent to CVS are gone - no -dP option is required and developers will not need their passwords or usernames until it is time to commit a change.<br />
<br />
For non-developers:<br />
:<code>% svn checkout https://brlcad.svn.sourceforge.net/svnroot/brlcad/brlcad/trunk brlcad </code><br />
<br />
Note: If you do not yet have an SVN client installed, go to http://subversion.tigris.org for information on obtaining an appropriate SVN client for your platform. Most modern Linux distributions will also have SVN available in their package repositories.<br />
<br />
== Generate the configure script ==<br />
<code>% cd brlcad</code><br />
<code>% ./autogen.sh</code><br />
<br />
=== An Example of Mac OS X 10.5.3 ===<br />
You need to do " sudo port install libtool" to get GNU version of libtool.<br />
imac:brlcad tj_yang$ sudo ln -s /opt/local/bin/glibtoolize /usr/bin/libtoolize<br />
Password:<br />
imac:brlcad tj_yang$ ./autogen.sh<br />
Preparing the BRL-CAD build system...please wait<br />
<br />
Found GNU Autoconf version 2.61<br />
Found GNU Automake version 1.10<br />
Found GNU Libtool version 1.5.26<br />
<br />
Automatically preparing build ... done<br />
<br />
The BRL-CAD build system is now prepared. To build here, run:<br />
./configure<br />
make<br />
imac:brlcad tj_yang$<br />
<br />
== Configure the build system ==<br />
<code>% ./configure --help</code><br />
<code>% ./configure --prefix=install_dir --enable-optimized</code><br />
<br />
When building for multiuser file servers it is often useful to make the install_dir reflect the version and/or architecture of the compile. This way a single server can provide multiple versions of BRL-CAD or multiple binary formats for various architectures. Symbolic links are then usually added to point to the "current" or "main" version that is preferable to provide so that users only need to add /usr/brlcad/bin to their path. Examples include:<br />
<br />
;By version<br />
:/usr/brlcad/rel-7.8.0 (release 7.8.0)<br />
:/usr/brlcad/rel-7.6.0 (release 7.6.0)<br />
<br />
;By architecture<br />
:/usr/brlcad/ia32 (linux on Pentium)<br />
:/usr/brlcad/ia64 (linux on Itanium)<br />
:/usr/brlcad/x86_64 (linux on Opteron)<br />
<br />
;By version and architecture<br />
:/usr/brlcad/rel-7.8.0/mips32 (IRIX on MIPS in 32-bit mode, release 7.8.0)<br />
:/usr/brlcad/rel-7.8.0/mips64 (IRIX on MIPS in 64-bit mode, release 7.8.0)<br />
:/usr/brlcad/rel-7.8.2/mips32 (IRIX on MIPS in 32-bit mode, release 7.8.2)<br />
<br />
IMPORTANT!!! - Because BRL-CAD has such a long development history, it predates some library naming conventions in modern operating systems. This means an attempt to configure for an install in the "/usr" path on Linux (for example) will stand a good chance of damaging important system libraries - e.g. BRL-CAD libraries put in "/usr/lib" may overwrite system libraries with the same names. Using "/usr/brlcad" or "/opt/brlcad" means all installed files will be safely contained in the brlcad directory.<br />
<br />
== Compile and test your build ==<br />
<code>% make</code><br />
<br />
At this point, you should have a fully installed and working system. You can test things by doing:<br />
<br />
<code>% make test</code><br />
<code>% make benchmark</code><br />
<br />
Both the test and benchmark should report successfully if everything is working correctly. Report any failures to the BRL-CAD [http://sourceforge.net/tracker/?group_id=105292&atid=640802 bug tracker].<br />
<br />
== Install ==<br />
<code>% make install</code><br />
<br />
If you created a prefix as described above for multiple versions or multiple architectures, you should now create your symbolic links for user convenience and consistency. Example where /usr/brlcad/rel-7.8.0/mips32 was used as the install_dir prefix:<br />
<br />
<pre>% ln -s rel-7.8.0/mips32 /usr/brlcad/stable<br />
% ln -s stable/bin /usr/brlcad/bin<br />
% ln -s stable/include /usr/brlcad/include<br />
% ln -s stable/lib /usr/brlcad/lib<br />
% ln -s stable/man /usr/brlcad/man<br />
% ln -s stable/share /usr/brlcad/share<br />
% ls -l /usr/brlcad<br />
total 48<br />
lrwxr-xr-x 1 root wheel 10 12 Apr 09:00 bin -> stable/bin<br />
lrwxr-xr-x 1 root wheel 14 12 Apr 09:00 include -> stable/include<br />
lrwxr-xr-x 1 root wheel 10 12 Apr 09:00 lib -> stable/lib<br />
lrwxr-xr-x 1 root wheel 10 12 Apr 09:00 man -> stable/man<br />
drwxr-xr-x 7 root wheel 238 11 Apr 18:00 rel-7.8.0<br />
lrwxr-xr-x 1 root wheel 12 12 Apr 09:00 share -> stable/share<br />
lrwxr-xr-x 1 root wheel 9 12 Apr 09:00 stable -> rel-7.8.0/mips32</pre><br />
<br />
''Future versions of BRL-CAD may provide this symbolic link operation for you as a configure option. Keep an eye out in the configure --help output.''<br />
<br />
== Setup environment (optional) ==<br />
At this point, everything should be ready for use. If the default prefix of /usr/brlcad was used or if the corresponding symbolic links were created, users should only need to add /usr/brlcad/bin to their PATH in order to find binaries for the package (optionally setting their MANPATH as well):<br />
<br />
For bash:<br />
<br />
<pre>% export PATH=/usr/brlcad/bin:$PATH<br />
% export MANPATH=/usr/brlcad/man:$MANPATH</pre><br />
<br />
For csh/tcsh:<br />
<br />
<pre>% set path=( /usr/brlcad/bin $path )<br />
% setenv MANPATH /usr/brlcd/man:$MANPATH<br />
% rehash</pre><br />
<br />
If users do not want to modify their PATH, they can get by providing the full path to the binaries (e.g. /usr/brlcad/bin/mged). To find BRL-CAD manual pages without setting your MANPATH, use the provided "brlman" binary instead of "man".<br />
<br />
== Test installation ==<br />
If everything went well, there should now be more than 400 command-line applications at your disposal for processing images and geometry. A quick test of functionality (and performance) is to run the BRL-CAD benchmark again, which is installed as the benchmark tool:<br />
<br />
<code>% benchmark</code><br />
<br />
Additionally, you can run the MGED solid modeler:<br />
<br />
<code>% mged</code><br />
<br />
[[Category:Documentation]]</div>69.250.247.75https://brlcad.org/w/index.php?title=FAQ&diff=481FAQ2008-05-24T17:58:24Z<p>69.250.247.75: /* How do I start BRL-CAD? */</p>
<hr />
<div>{{Template:Stub}}<br />
==How do I start BRL-CAD?==<br />
BRL-CAD is a suite of more that 400 tools and utilities. The suite of applications are intentionally designed to perform a succinct task so that they can be chained together, scripted, and expanded upon in order to provide powerful flexibility.<br />
<br />
That said, most users will be interested in using [[mged]] for editing geometry as a first step in getting started with BRL-CAD. Documentation on mged can be found in the share directory where BRL-CAD was installed. There is also extensive mged documentation available on the website under [[Documentation]].<br />
<br />
If you're on Windows, there should be an icon for MGED in your start menu or on your desktop. For any other platform, you should be able to run this in an X11 terminal: '''/usr/brlcad/bin/mged'''<br />
<br />
==How do I get a hard copy of what I'm looking at in MGED?==<br />
The File->Raytrace and File->Render_View->RT_Script menu options in MGED will generate a raster image of MGED's current view. The [[pix-png]] utility can be used to convert from BRL-CAD's .pix raw image file format to the .png file format, and can then be printed or embedded into other documents using other tools.<br />
<br />
Additionally, the other File->Render_View options for generating standard Plot and PostScript output files of the MGED wireframe suitable for printing. The [[pl-fb]] and [[fb-png]] tools can be used to rasterize a Plot file to the .png format.<br />
<br />
Finally, there are a variety of renderers and lighting models available in BRL-CAD that are useful for various purposes. The [[rt]] tool is the primary ray-tracer that is used for shaded view rendering. The [[rtedge]] and [[rthide]] commands are used for hidden-line renderings similar to what you'd want for generating drafting documents. [[rtwizard]] is a graphical 'wizard' tool that can be used to generate a variety of hybrid renderings.</div>69.250.247.75https://brlcad.org/w/index.php?title=FAQ&diff=480FAQ2008-05-24T17:42:26Z<p>69.250.247.75: /* How do I start BRL-CAD? */</p>
<hr />
<div>{{Template:Stub}}<br />
==How do I start BRL-CAD?==<br />
BRL-CAD is a suite of more that 400 tools and utilities. The suite of applications are intentionally designed to perform a succinct task so that they can be chained together, scripted, and expanded upon in order to provide powerful flexibility.<br />
<br />
That said, most users will be interested in using [[mged]] for editing geometry as a first step in getting started with BRL-CAD. Documentation on mged can be found in the share directory where BRL-CAD was installed. There is also extensive mged documentation available on the website under [[Documentation]].<br />
<br />
If you have one of our binary distributions installed, you should be able to run this in a terminal: <br />
'''/usr/brlcad/bin/mged'''<br />
<br />
==How do I get a hard copy of what I'm looking at in MGED?==<br />
The File->Raytrace and File->Render_View->RT_Script menu options in MGED will generate a raster image of MGED's current view. The [[pix-png]] utility can be used to convert from BRL-CAD's .pix raw image file format to the .png file format, and can then be printed or embedded into other documents using other tools.<br />
<br />
Additionally, the other File->Render_View options for generating standard Plot and PostScript output files of the MGED wireframe suitable for printing. The [[pl-fb]] and [[fb-png]] tools can be used to rasterize a Plot file to the .png format.<br />
<br />
Finally, there are a variety of renderers and lighting models available in BRL-CAD that are useful for various purposes. The [[rt]] tool is the primary ray-tracer that is used for shaded view rendering. The [[rtedge]] and [[rthide]] commands are used for hidden-line renderings similar to what you'd want for generating drafting documents. [[rtwizard]] is a graphical 'wizard' tool that can be used to generate a variety of hybrid renderings.</div>69.250.247.75