Now that we've seen the design philosophy of RPM, let's look at the nuts and bolts of RPM's build process. Building a package is similar to compiling code - there are inputs, an engine that does the dirty work, and outputs.