| {arch}/text {arch}/text/text--articles {arch}/text/text--articles/text--articles--242 {arch}/text/text--articles/text--articles--242/nick@zork.net--projects {arch}/text/text--articles/text--articles--242/nick@zork.net--projects/patch-log | {arch}/text {arch}/text/text--articles {arch}/text/text--articles/text--articles--242 {arch}/text/text--articles/text--articles--242/nick@zork.net--projects {arch}/text/text--articles/text--articles--242/nick@zork.net--projects/patch-log |
| {arch}/text {arch}/text/text--articles {arch}/text/text--articles/text--articles--242 {arch}/text/text--articles/text--articles--242/nick@zork.net--projects {arch}/text/text--articles/text--articles--242/nick@zork.net--projects/patch-log | {arch}/text {arch}/text/text--articles {arch}/text/text--articles/text--articles--242 {arch}/text/text--articles/text--articles--242/nick@zork.net--projects {arch}/text/text--articles/text--articles--242/nick@zork.net--projects/patch-log |
| File: developer.txt | |
|---|---|
| patch-22 | patch-23 |
| Line 4 | Line 4 |
| and not useful to the general public. What follows is a FAQ for those who are participating in LNX-BBC GAR development. | and not useful to the general public. What follows is a FAQ for those who are participating in LNX-BBC GAR development. |
| = CVS = == How do I check stuff into CVS? == First you have to make sure you check the tree out with your own account. Your old anonymous checkouts will not be useful to you. Run the following to get a new copy of the tree with your account attached to it. ----8<---- export CVS_RSH=ssh cvs -d:ext:username@cvs.lnx-bbc.org:/var/cvs co gar ----8<---- Optionally, you can check out STABLE. ----8<---- export CVS_RSH=ssh cvs -d:ext:username@cvs.lnx-bbc.org:/var/cvs co -r STABLE gar ----8<---- Be sure to type your username for cvs.lnx-bbc.org in place of "username"! Now when you change something you can type "cvs diff" to see a diff of what you changed, and "cvs ci" to check your changes in. == Whoa! Why did cvs bring up this strange text editor? == That's because your $EDITOR environment variable is set to vi or nano or ae or something. simply set it to your favorite editor like so ----8<---- export EDITOR=emacs ----8<---- and you should be good. == CVS is a crazy system. Are there any good docs on it? == Possibly the best documentation on CVS is available free for download at <http://cvsbook.red-bean.com/>. It was published in dead-tree format by Coriolis OpenPress as _Open Source Development With CVS_ with some added material. The important stuff is up on the aforementioned Web site though. The book is also installed on gargoyle.lnx-bbc.org, so you can shell in and run "pinfo cvsbook" to read it. == I can ssh in, but I get permission denied when trying to do a CVS checkin! == Whoops! Whoever made your account probably forgot to add you to the src group! Ask to be added and try again. == I have all these empty directories lying about. What gives? == Try running "cvs up -Pd". This will prune empty directories and add any new files in the repository. In fact, it's probably best to have the following in your ~/.cvsrc ----8<---- diff -u rdiff -u update -Pd cvs -z9 -q ----8<---- The first line makes all "cvs diff" commands come in the unified format (preferred by this project). The second line does the same for the "rdiff" command. The third line makes all cvs update commands use the aforementioned -Pd switches. The final line makes all cvs commands use maximal compression and low-noise output. == I want to move some changes from HEAD into STABLE. The CVS docs are way too wordy. Give us a hand? == The easiest way is with the "rdiff" function of cvs. To get a complete set of differences, you do: ----8<---- cvs rdiff -u -r STABLE -r HEAD gar ----8<---- (Note that you may need to specify the repository location with "-d" or the CVSROOT environment variable if you're not in a checked out directory) It's a lot of stuff. If you want just the summary of files, versions, and dates, you can use: ----8<---- cvs rdiff -u -r STABLE -r HEAD -s gar ----8<---- This command works even without a local repository, if your CVSROOT env var points to gargoyle, or if you specify a repository with -d. Let's say I just wanted to look at one file: ----8<---- [gargoyle(~)] cvs rdiff -u -r STABLE -r HEAD -s gar/CREDITS File gar/CREDITS changed from revision 1.19 to 1.21 [gargoyle(~)] cvs rdiff -u -r STABLE -r HEAD gar/CREDITS Index: gar/CREDITS diff -u gar/CREDITS:1.19 gar/CREDITS:1.21 --- gar/CREDITS:1.19 Mon Feb 24 13:51:04 2003 +++ gar/CREDITS Fri Mar 28 15:15:42 2003 @@ -21,7 +21,7 @@ Paul "this is research, dammit" Gray Ian "what the...?" Harding Duncan MacKinnon -Nick Moffitt +Nick "makes make make sense" Moffitt Sean "keen with the winchesters" Neakums Niall O Broin "Yosemite" Sam Phillips @@ -66,6 +66,8 @@ Compression: cloop (Rusty Russell and Klaus Knopper) Development: gar (Nick Moffitt) + +Disc Label Design and Artwork: Rev. Patty "icon bitch" Morin And thanks to all the subscribers of the lnx-bbc-devel and lnx-bbc lists for their useful questions and advice, and to all beta testers and reporters ----8<---- Now this can be run through patch: ----8<---- [gargoyle(~/gar)] cvs rdiff -u -r STABLE -r HEAD gar/CREDITS | patch -p1 patching file CREDITS ----8<---- Note that I did -p1 because the patch begins with gar/, and I am in that directory, which is a checkout of STABLE. A subsequent "cvs diff" shows me the same patch that rdiff did before (but with filenames changed). | |
| = Nightly Builds = == So how do these nightly builds work? == | = Nightly Builds = == So how do these nightly builds work? == |
| Line 163 | Line 21 |
| The system first blows away the working dir, then checks out a fresh copy of GAR and builds lnx-bbc. | The system first blows away the working dir, then checks out a fresh copy of GAR and builds lnx-bbc. |
| Once a build succeeds, it pushes the changesets used in the build up to the public arch mirror at http://www.lnx-bbc.org/arch/. This guarantees that when people grab the stable arch branch, it really is code that is known to build! | |
| == Wait, so why are they called nightly builds if they run every two hours? == Historically, they ran at a quarter past noon and a quarter past | == Wait, so why are they called nightly builds if they run every two hours? == Historically, they ran at a quarter past noon and a quarter past |
| midnight. They weren't specifically "nightly" then either. Things change; people don't. | midnight. They weren't specifically "nightly" then either. Seasons change; people stay the same. |
| == Ack! I was looking at a file in the nightly build dir and a new build started, removing everything! == | == Ack! I was looking at a file in the nightly build dir and a new build started, removing everything! == |
| Line 542 | Line 404 |
| PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=nick@zork.net | PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=nick@zork.net |
| */20 * * * * killall cvs &> /dev/null || true; cd \ /var/www/lnx-bbc.org/; cvs -Q up -Pd > /dev/null */15 * * * * make -C /var/www/lnx-bbc.org/ garchive \ GARCHIVEDIR='/var/www/lnx-bbc.org/garchive/$(DISTNAME)/' > /dev/null */5 * * * * make -C /var/www/lnx-bbc.org/ html > /dev/null | */5 * * * * tla update -d /home/nick/lnx-bbc--stable--2.1/ &> /home/nick/tla.log && make -C /home/nick/lnx-bbc--stable--2.1/ html > /dev/null && ln -sf /home/nick/lnx-bbc--stable--2.1/*.{html,txt,png,css} /var/www/lnx-bbc.org/ 5 0 * * * make -C /home/nick/lnx-bbc--stable--2.1/ garchive GARCHIVEDIR='/var/www/lnx-bbc.org/garchive/$(DISTNAME)/' &> /dev/null; cd /var/www/lnx-bbc.org/garchive && for i in *; do cp HEADER.html $i &> /dev/null || true; done |
| ----8<---- | ----8<---- |
| (lines broken and backwhacked to keep page width down) Basically it does a full cvs update every 20 minutes, does a "make garchive" every 15, and a "make html" every 5 minutes. So generally you have to wait 25 minutes at most for your checkin to be reflected on the Web site. | |
| File: faq.txt | |
|---|---|
| patch-22 | patch-23 |
| Line 138 | Line 138 |
| The machine {gar.lnx-bbc.org} was our old development box and build system. | The machine {gar.lnx-bbc.org} was our old development box and build system. |
| GAR is also the name of our software <http://cvs.lnx-bbc.org/cvs/gar/ build toolset>. Common backronyms we've seen include "GAR Are Recursive" and "Gmake Autobuild Runtime". It is a system similar in function (and nearly identical in purpose) to the BSD <http://www.freebsd.org/ports/ ports system>. It is a set of Makefiles that we use to compile all of the software in the BBC and turn them into an ISO9660 CD-ROM image file. | GAR is also the name of our software build toolset. Common backronyms we've seen include "GAR Are Recursive" and "Gmake Autobuild Runtime". It is a system similar in function (and nearly identical in purpose) to the BSD <http://www.freebsd.org/ports/ ports system>. It is a set of Makefiles that we use to compile all of the software in the BBC and turn them into an ISO9660 CD-ROM image file. |
| The term "GAR" <http://everything2.com/index.pl?node=gar has many definitions>, but it is most commonly used by us as an expression of | The term "GAR" <http://everything2.com/index.pl?node=gar has many definitions>, but it is most commonly used by us as an expression of |
| frustration or in the context of <http://cvs.lnx-bbc.org/cvs/gar/ the GAR system>. | frustration or in the context of the GAR system. |
| == Why was GAR written? == | == Why was GAR written? == |
| Line 169 | Line 167 |
| before a trade show or other release deadline. The process of taking a tree of files and directories and making a | before a trade show or other release deadline. The process of taking a tree of files and directories and making a |
| compressed loopback bootable iso from it was pretty well automated, but there was no good way of getting the tree into the proper state. GAR downloads, checksums, patches, configures, builds, and installs packages using only a tree of makefiles and patches. This allows it to be <http://cvs.lnx-bbc.org/cvs/gar/ stored in CVS>, and the size of the <http://cvs.lnx-bbc.org/cvs/gar/gar.tar.gz?tarball=1 checked-out copy> is only a few megabytes overall. | compressed loopback bootable iso from it was pretty well automated, but there was no good way of getting the tree into the proper state. GAR downloads, checksums, patches, configures, builds, and installs packages using only a tree of makefiles and patches. This allows it to be stored in arch, and the size of the checked-out copy is only a few megabytes overall. |
| == So why GAR? Why not <name-of-favorite-build-system>? == | == So why GAR? Why not <name-of-favorite-build-system>? == |
| File: layout.css | |
|---|---|
| patch-22 | patch-23 |
| Line 17 | Line 17 |
| border-style:double; border-width:medium; padding-right:1em; | border-style:double; border-width:medium; padding-right:1em; |
| padding-left:1em; | |
| border-color:black; clear: both; text-align: center; | border-color:black; clear: both; text-align: center; |
| Line 25 | Line 26 |
| h2 { font-size: x-large; padding-left:6pt; | h2 { font-size: x-large; padding-left:6pt; |
| padding-right:6pt; | |
| border-style:double; border-width:medium; border-color:black; | border-style:double; border-width:medium; border-color:black; |
| Line 219 | Line 221 |
| position: absolute; top: 1em; left: 250px; | position: absolute; top: 1em; left: 250px; |
| right: 0; | width: -250px; |
| padding-right: 3px; padding-top: 0px; float: right; | padding-right: 3px; padding-top: 0px; float: right; |
| File: lists.txt | |
|---|---|
| patch-22 | patch-23 |
| Line 26 | Line 26 |
| newsgroup>. <http://zork.net/mailman/listinfo/lnx-bbc-cvs lnx-bbc-cvs>: | newsgroup>. <http://zork.net/mailman/listinfo/lnx-bbc-cvs lnx-bbc-cvs>: |
| This list receives the changelog for each CVS checkin that occurs | This list receives the changelog for each arch checkin that occurs |
| for the project. It can be high-volume, so check out those archives before subscribing. Also available as a <news://news.gmane.org/gmane.linux.bbc.cvs | for the project. It can be high-volume, so check out those archives before subscribing. Also available as a <news://news.gmane.org/gmane.linux.bbc.cvs |
| File: tron.awk | |
|---|---|
| patch-22 | patch-23 |
| Line 77 | Line 77 |
| # Note that this table is ignored by the div layout if you have # CSS. It exists only to support non-CSS browsers. | # Note that this table is ignored by the div layout if you have # CSS. It exists only to support non-CSS browsers. |
| mainstart = "<table valign=\"top\" border=\"0\" width=\"100%\"><tr valign=\"top\" height=\"15\"><td valign=\"top\" height=\"15\"> </td><td rowspan=\"2\">" | mainstart = "<table valign=\"top\" border=\"0\" width=\"100%\"><tr valign=\"top\" height=\"15\"><td valign=\"top\" height=\"15\"> </td><td rowspan=\"2\" width=\"100%\">" |
| mainstart = mainstart " <div class=\"mainbody\">" # notice the table data in these as well. | mainstart = mainstart " <div class=\"mainbody\">" # notice the table data in these as well. |