Packaging involves bundling a suite of software binary modules and metadata representing application (or middleware services) components, where a component can be monolithic (standalone) or an assembly of subcomponents. Composing an application from a set of components with syntactically consistent interface signatures simply ensures they can be connected together. To function correctly, however, collaborating components must also have compatible semantics and invocation protocols, which are hard to express via interface signatures alone. For example, if a component developer has provided different implementations of the same functionality, it is necessary to be able to assemble components that are semantically and binary compatible with each other. We are addressing this challenge by developing model-driven middleware tools for packaging. Currently we have two tools available called PICML and CADML. After the adoption of the OMG Deployment and Configuration specification, the functionality of CADML had to be divided into several different tools.