Conary Blogs
Archives for: August 2008
Early in Conary development, we made a conscious decision to focus on making the normal case easy. Good assumptions simplify. When possible, the tools should do the right thing for the most common case, making it as easy as reasonably possible to specify exceptions to the common case. As we find more patterns of "normal cases", we have been able to automate more and more of those "normal cases".
There is always room for improvement.
We have broadened our perspective. Building individual packages is generally quite easy in Conary. Building an image on rBuilder is not that hard. Doing release management with Conary utilizes two commands. But the whole process, put together, takes too many steps. We have made it so easy to build and maintain custom images (virtual appliances, software appliances, and software stacks for hardware appliances) that it no longer requires relatively esoteric skills—which, oddly enough, makes it clear that the process is still too complex.
Reducing most of the work to a series of commands was really impressive, and yet it's not enough—there are too many commands to run, with different command line arguments; fundamentally, our instructions for how to create a product with rPath's tools have too much verbatim boilerplate. Our highest-level tools expose too many options for different ways of doing things. Don't get me wrong, we don't want to remove the options. We just don't want to force every user to think about each of the options. As James Thurber so aptly put it, "Sixty minutes of thinking of any kind is bound to lead to confusion and unhappiness."
Introducing rBuild
rBuild will provide a single command line program for developing on the rPath platform. After you define a product in rBuilder, you will have one command-line program for packaging, release management, and building images. For normal use, you will not need to run the cvc or rmake at all. To make this possible, rBuild depends on the new product concept in rBuilder—you need to create a product in rBuilder, then you check out the product in rBuild to work on it. The product that you create in rBuilder gives rBuild the information it needs to automate all these processes.
rBuild is alpha-quality software. It has bugs. As alpha-quality software, rBuild is not yet ready to be your first experience with rPath's software products. This is especially true because many cases of unexpected input result in a traceback rather than a nice error message. Experienced Conary packagers and appliance developers can help us turn rBuild into a truly usable software development tool, but there absolutely will be frustrating bumps along the way. Many thanks in advance for your patience! But more than patience, we want to hear your story about using rBuild. Talk to us on the #conary channel, or file bug reports in our issue tracking system.
After rBuild 1.0 is released, the official rPath Application to Appliance guide will be updated to use rBuild instead of cvc and rmake commands.
More warnings: We expect to continue to update the schema for product definitions, and so when we update rBuilder Online you might sometimes need to update rBuild to match. It is likely that newer versions of rBuild will depend on new features in the most recent version of rMake and Conary when they are released. We might come out with multiple versions of rBuild in one day. Expect incompatible interface changes until rBuild 1.0 is released.
Enough Already! Let's Go!
For the moment, I build alpha releases of rBuild in my own rBuilder Online repository. To install rBuild, make sure that you have the most recent versions of Conary and rMake installed, then, run this command:
$ conary update {decorator,rpath-{common,xmllib,product-definition},rbuild}=mkj.rpath.org@rpl:2
Now you are ready to try things out. First, rBuild needs to interview you to find out what you want to do:
$ rbuild config
...
URL to use to contact rBuilder (start with http:// or https://): https://www.rpath.org/rbuilder/
rBuilder contacted ok.
Your rbuilder user name: YOUR_RBUILDER_ONLINE_USER_NAME_HERE
Your rbuilder password: YOUR_RBUILDER_ONLINE_PASSWORD_HERE
Name to display when committing: Your Name Here
Contact - usually email or url: http://your.url/here
rBuild configuration complete. To rerun this configuration test run rbuild config --ask, or simply edit ~/.rbuildrc.
You should now begin working with a product by running 'rbuild init <short name> <version>'
...
Unfortunately, the suggested rbuild init <short name> <version> does not work right now with rBuilder Online, so you will have to use the alternative form of just specifying the label you are building on. (Remember what I said about bugs?)
Here follows an example. Try this process with a product that you have defined in rBuilder Online:
$ rbuild init rbuild.rpath.org@rpl:rbuild-1
Created checkout for rbuild.rpath.org@rpl:rbuild-1 at rbuild-1
$ cd rbuild-1
$ ls -l
total 12
drwxrwxr-x 2 johnsonm johnsonm 4096 2008-08-29 15:21 Development
drwxrwxr-x 2 johnsonm johnsonm 4096 2008-08-29 15:21 QA
drwxrwxr-x 2 johnsonm johnsonm 4096 2008-08-29 15:21 Release
Conveniently, "Development", "QA", and "Release" sort the same way in alphabetical and chronological order. These are the stages that are defined automatically for products created in rBuilder. The general idea is that you build packages in the Development stage, and build groups that work. Then you promote your work to the next stage, where you do QA on the entire group of packages together. When you are satisfied, you promote the things you have made sure are high enough quality to Release.
$ cd Development
$ ls -l
total 0
$ rbuild checkout rbuild
Checked out existing package 'rbuild'
$ cd rbuild
$ ls -l
total 8
-rw-rw-r-- 1 johnsonm johnsonm 426 2008-08-29 15:28 CONARY
-rw-rw-r-- 1 johnsonm johnsonm 559 2008-08-18 06:25 rbuild.recipe
$ rbuild build packages
...
Added Job 12
decorator:source=rbuild.rpath.org@rpl:rbuild-1-devel/2.2.0-3
info-user:source=rbuild.rpath.org@rpl:rbuild-1-devel/1-1
rbuild:source=malcolm.rdu.rpath.com@local:rbuild-1-devel/0.2-5
rpath-common:source=rbuild.rpath.org@rpl:rbuild-1-devel/0.1-4
rpath-product-definition:source=rbuild.rpath.org@rpl:rbuild-1-devel/0.1-6
rpath-xmllib:source=rbuild.rpath.org@rpl:rbuild-1-devel/0.1-5
...
If you are following along with the product on rbuild.rpath.org instead of with your own product, this will require that you are building on a 64-bit system, because the rbuild.rpath.org product has images defined for both 32-bit and 64-bit systems. Because these different flavors of images are defined, rBuild automatically fires off builds for all the different flavors. 64-bit builds will fail on a 32-bit system.
Things to note:
- You do not need to have any ~/.conaryrc or .rmakerc configuration to use rBuild.
- You do not need to specify the packages that you need to build; rBuild uses your group and your checked-out packages to determine what to build.
- You do not need to specify which flavors to build; rBuild determines which flavors to build by looking at the list of images you want to build.
Help!
rBuild documentation is presented as inline help. That help is still incomplete. We need to know where to put more useful information. Please file issue reports in our issue tracking system telling us where the help was insufficient, or suggesting improvements to the help text.
Just to help you get started, here's how you use the inline help:
$ build help
rbuild: Conary-based Product Development Tool
Common Commands
build Build the various components of a product
checkout Check out packages and groups for editing
config Print the rbuild configuration
init Create a directory for for working with a product
promote Promote groups and packages to next stage
rebase Update product to most recent platform version
show Shows details about the result of rbuild operations
status Print status summary relative to the current directory
update Update working directories from repository
watch Watches details about the result of rbuild operations
Information Display
help Display help information
$ rbuild help build
usage: rbuild build <subcommand> [options]
Build commands for building the various components of a product.
Subcommands:
groups Build groups for this stage
images Build images for this stage
packages Build edited packages for this stage
platform Create a platform usable by others from this product
(Use 'rbuild help build <subcommand>' for help on a subcommand)
options:
Command Options:
--no-commit
--no-watch
If this sounds interesting, please join us on the #conary channel and discuss it! Thanks!
rBuilder Online's unscheduled maintenance is now complete. The problems related to newly-created product versions should now be fixed. Please report any problems at http://issues.rpath.com.
Thank you for your interest in rBuilder Online.
We are having some issues with some code that was deployed yesterday evening. Estimated downtime is unknown. We'll update this blog post as we find out more.
The following changes have been made to rBuilder Catalog for EC2™:
Note: Please press the shift key and click your browser's reload button to ensure the latest version of the rBuilder Catalog for EC2™ is being used.
- Catalog load times have decreased by as much 50% in some cases.
- Improvements have been made to the way user selections are handled.
- A number of improvements and bugfixes have been made to playlists.
The complete list of changes in this update can be found at the rBuilder Online wiki page under the section Recent Changes to rBuilder Online.
Do Your Part
Help us make rBuilder Online better. We welcome your feedback on the rBuilder Online forum. If you find any bugs, please file an issue.
Thank you for your interest in rBuilder Online.
UPDATE: the maintenance window has been moved to 5PM-6PM EDT.
rBuilder Online will undergo scheduled maintenance starting Wednesday, August 27th at 17:00 EDT (-0400) and ending at 18:00. During this time, rBuilder Online and all rpath.org repositories will not be available. A message will be posted when the scheduled maintenance period has been completed.
Thank you for your interest in rBuilder Online.
The latest version of Appliance Creator has been enhanced to support the addition of already-existing packages to the appliance. Previously, it was only possible to add a package to the appliance by uploading a binary archive and creating a new package from that archive.
Additionally, the workflow has been modified to accommodate this change to the package selection process.
Note: In some circumstances, the new package selection page can cause Internet Explorer 6 and 7 to hang. rPath is actively working to resolve this issue.
An updated version of the rBuilder Catalog for EC2™ is also available. This version includes support for "is not" and "contains" filters for user-defined playlists.
Note: Please press the shift key and click your browser's reload button to ensure the latest version of the rBuilder Catalog for EC2™ is being used.
The complete list of changes in this update can be found at the rBuilder Online wiki page under the section Recent Changes to rBuilder Online.
Do Your Part
Help us make rBuilder Online better. We welcome your feedback on the rBuilder Online forum. If you find any bugs, please file an issue.
Thank you for your interest in rBuilder Online.
Conary 2.0.23 is a maintenance release.
New Features:- A new commitaction module that logs to a database the results of all commits in to a repository has been added as logaction.py (CNY-2814, CNY-2849)
- Some trove sources now deal better with being passed a trove name of None when using findTroves. (CNY-2923)
- Added --replace-files, --replace-modified-files, replace-config-files, --replace-managed-files to updateall. (CNY-2512)
- Promote now uses the source trove for packages to determine the source trove for components instead of downloading the components themselves. (CNY-1867)
- Promote no longer uses getTroves() to look up clone history; it uses getTroveInfo() instead. This provides a significant performance improvement as well as a significant RAM savings. (CNY-1867)
- Checking for recloning (due to changes in referenced trove sets) now skips components, improving promote performance. (CNY-1867)
- The file contents of dpkg .deb files can now be extracted by r.addArchive() (CNY-2926)
- Conary now provides python: dependencies during incompatible cross-builds. (CNY-2914)
- The Transient policy now follows packaging instead of walking the filesystem, avoiding inconsistencies caused by side effects of other policies. (CNY-2939)
- When bootstrapping a python that is unable to load the pydeps module for python dependency discovery, fall back to the cross-compiling case. (CNY-2940)
- Recipes containing a mirror:// style source can be properly committed to the repository. (CNY-2848)
conary-policy 1.0.21 is a maintenance release.
- A bug causing PHPRequires to fail in rMake has been fixed. (CNP-154)
Conary Policy 1.0.20 is a maintenance release.
- The PHPRequires policy has been added. It identifies PHP files and when possible automatically adds an appropriate requirement based on the most appropriate PHP interpreter found on your system, buildRequires, or installLabelPath. (CNY-145)
rBuilder Online will undergo scheduled maintenance starting Tuesday, August 19th at 16:00 EDT (-0400) and ending at 17:00. During this time, rBuilder Online and all rpath.org repositories will not be available. A message will be posted when the scheduled maintenance period has been completed.
Thank you for your interest in rBuilder Online.
An updated version of the rBuilder Catalog for EC2™ is now available on rBuilder Online.
Note: Please press the shift key and click your browser's reload button to ensure the latest version of the rBuilder Catalog for EC2™ is being used.
Overview
rBuilder Catalog for EC2™ is a tool that simplifies the management of Amazon Machine Images (AMIs) generated by rBuilder Online. Using it, an rBuilder Online user can quickly launch an AMI on Amazon's Elastic Compute Cloud (EC2), access the running AMI's rPath Appliance Platform Agent management interface, and terminate the running AMI when desired.
Refer to http://wiki.rpath.com/wiki/rBuilder_Online:Catalog_EC2 for more information on getting started with rBuilder Catalog for EC2™.
New Features
The rBuilder Catalog for EC2™ will now automatically create a default security group called "catalog-default" if it does not already exist. Access will be granted to ports 80, 443 and 8003 for your IP address, so you can connect to the appliance's rPath Appliance Platform Agent and/or web service.
The shutdown and manage workflows now support the selection of multiple appliances.
When a running appliance is selected, a "Connect" button now appears. Clicking it will start a browser session directed to port 80 on the selected appliance.
User-defined playlists are now supported. To create a playlist, click the "+" button at the bottom of the sidebar. User-defined playlists can be deleted by clicking the "-" button.
The complete list of changes in this update can be found at the rBuilder Online wiki page under the section Recent Changes to rBuilder Online.
Do Your Part
Help us make rBuilder Online better. We welcome your feedback on the rBuilder Online forum. If you find any bugs, please file an issue.
Thank you for your interest in rBuilder Online.
The scheduled maintenance of rBuilder Online has been completed.
What's New: Appliance Creator
rBuilder Online's latest version introduces a preview of Appliance Creator. Appliance Creator can be used to create an appliance based on rPath Linux, using imported packages that are uploaded and built with rBuilder Online's Package Creator feature.
As noted, this is a preview version of Appliance Creator. Future versions will further refine its workflow, and will allow users to select software that had been previously packaged to be included as part of each appliance.
Bug Fixes and Miscellany
In addition to the introduction of Appliance Creator, a number of other changes have been made, including:
- Adding packages to Group Builder now properly works with Firefox 3 (RBL-3066)
- Tar files generated when creating some image types are now compatible with many Windows-based archivers (RBL-3168)
- Versions of special troves used when generating image CDs (e.g. anaconda-custom, anaconda-templates, media-template) are now displayed in the build information page (RBL-2600)
- Updated branding for Microsoft Virtual Server images
The complete list of changes in this update can be found at the rBuilder Online wiki page under the section Recent Changes to rBuilder Online.
Do Your Part
Help us make rBuilder Online better. We welcome your feedback on the rBuilder Online forum. If you find any bugs, please file an issue.
Thank you for your interest in rBuilder Online.
rMake 1.0.23 is a maintenance release.
Bug Fixes:- A bug introduced in the chroot creation process in rmake 1.0.21 has been fixed. (RMK-890)
rBuilder Online will undergo scheduled maintenance starting Tuesday, August 12th at 16:00 EDT (-0400) and ending at 17:00. During this time, rBuilder Online and all rpath.org repositories will not be available. A message will be posted when the scheduled maintenance period has been completed.
Thank you for your interest in rBuilder Online.
rMake 1.0.22 is a maintenance release.
Bug Fixes:
- A missing schema migration that caused rmake to fail to function after an update to 1.0.21 has been fixed (RMK-889)
Conary 2.0.22 is a maintenance release.
Build Changes:- The loadSuperClass and loadInstalled methods now returns the loaded recipe class so that the loaded class can be referenced anonymously. This makes factories more flexible. (CNY-2900)
- The addPatch source action now takes a "filter" keyword argument that provides a command line that can modify the patch; for example, by calling the filterdiff program. (CNY-2874)
- Builds previously failed in some circumstances when Conary discovered no need only for :runtime components listed in buildRequires. This has been fixed, and error reporting improved for similar classes of bugs in the future. (CNY-2904)
- The new boolean conaryrc option downloadFirst has been added to instruct Conary to download all required changesets from the repository before proceeding to update steps. (CNY-2808)
- Conary 2.0.20 introduced a bug adding dependencies to postgres-based repositories; this has been resolved.
- Starting in 2.0.20, dependency resolution started locking the database unnecessarily. This affected rmake dependency resolution, and is now resolved.
- Mirroring code now correctly detects when access control changes in the source repository require the generation of absolute changesets for mirroring. (CNY-2888)
- A permission check error for users that only have trove access entitlements has been fixed. (CNY-2761)
- A problem with the autoLoadRecipes config option has been fixed. (CNY-2909)
- A permission check problem when trove names are used as trove patterns in ACLs has been fixed. (CNY-2913)
conary-policy 1.0.19 is a maintenance release.
- A bug causing NormalizeInitscriptContents to fail if the target of a symlink didn't exist has been fixed. (CNP-129)
- A bug causing PkgConfigRequires to fail if the destdir is a symlink has been fixed (CNP-131).
- RequireChkconfig has been modified to handle new style init scripts. It now warns instead of errors on failure. (CNP-109)
- NormalizeInfoPages handles file magic better to cover corner cases. (CNP-135)
- Setting a different prefix will no longer cause the Strip policy and several Normalize policies to traceback. (CNP-141)
- The NormalizeLibrarySymlinks policy no longer attemps to run ldconfig from inside the package when cross-compiling. (CNP-140)
- The EnforceStaticLibBuildRequirements policy now falls back to looking at shared libraries for cases where configure depends on a library existing, but only a shared library exists and no packaged file is linked against the shared library. (CNP-132)
- The Strip policy no longer traces back if an ELF file is found but strip or eu-strip is not installed. (CNP-143)
- The TagLocale policy has been added to tag locale files with a special path-derived tag of the form locale(localename). (CNP-138)
rMake 1.0.21 is a maintenance release.
Client Changes:- Added buildImage command. (RMK-885)
- In jobs with primary troves, extra troves that should only be built if they had a dependency on primary troves would be built if they had never been built. This has been fixed - these troves are now marked as "built" with no built troves associated with them. (RMK-875)
- Don't emit a warning when building multiple flavors of the same group. (RMK-886)
My old powered subwoofer seems to have given up the ghost. The speaker is OK. The amplifier unit seems to be toast. I found the Keiga KG-5205 which seems like it would be a good replacement. I suspect it would cost less than the similar (but for me overspeced) Keiga KG-3100 which seems to cost either $136 or $142 depending on where you look on the page. Unfortunately, google can't find the KG-5205 for sale for any price right now. It can't even find the product page since Keiga is silly enough to front their whole web site with a flash front (is anyone else reminded of false fronts on buildings?) without even a fallback to a site map to help the robots out.
Anyone who know who might sell these or has suggestions for a relatively inexpensive alternative, please drop a comment. I'm not looking for audiophile gear.
The scheduled maintenance of rBuilder Online has been completed. For more information, visit:
http://wiki.rpath.com/wiki/rBuilder_Online
The "Recent Changes to rBuilder Online" section of this page contains an overview of what's changed.
If you have any questions or comments regarding rBuilder Online, the rPath Forum now contains a dedicated rBuilder Online board:
Thank you for your interest in rBuilder Online.
UPDATE -- The maintenance window have been rescheduled to start Tuesday, August 5th at 21:00 EDT, and will end at 22:00.
rBuilder Online will undergo scheduled maintenance starting Tuesday, August 5th at 16:00 EDT (-0400) and ending at 17:00. During this time, rBuilder Online and all rpath.org repositories will not be available. A message will be posted when the scheduled maintenance period has been completed.
Thank you for your interest in rBuilder Online.