Rebuilding Parts of a Bundle

After the bundle building of the previous section, the ./BUILD directory contains a lot more files and subdirectories. In addition to the source packages and source directories, the directory now contains a couple of files related to the bundle itself. It is better to use this set of directories to rebuild packages because using the bundle tarfile will unpack everything again and wipe out any changes made in these directories. The new package directories can be used to rebuild patched packages as shown in the following operation on the package globus_io:

  1. Determine what flavors of globus_io are installed.

    bash$ gpt-query 'globus_io-*-rtl'
    2 packages were found in /home/mbletzin/install/globus that matched your query:
    
    packages found that matched your query 
    	globus_io-gcc32-rtl pkg version: 3.3.0
    	globus_io-gcc32dbg-rtl pkg version: 3.3.0
    
  2. Remove all of the globus_io packages. You will need to use the -force flag. In most cases this step is not necessary. You can use the -force flag with gpt-build to overwrite an installed packages. However, using gpt-uninstall makes sure that all of the installed files are removed.

    bash$ gpt-uninstall -verbose globus_io
    The following packages fulfill dependencies to other installed 
    packages and so will not be removed
    	globus_io-gcc32-dev is needed by the following packages:
    		globus_ftp_control-gcc32-dev
    	globus_io-gcc32-rtl is needed by the following packages:
    		globus_ftp_control-gcc32-rtl
    	globus_io-gcc32dbg-dev is needed by the following packages:
    		globus_ftp_control-gcc32dbg-dev
    	globus_io-gcc32dbg-rtl is needed by the following packages:
    		globus_ftp_control-gcc32dbg-rtl
    
    ERROR: No packages were removed
    bash$ gpt-uninstall -force globus_io
    bash$ 
    
  3. After making the changes, rebuild the package with the installed flavors:

    bash$ cd BUILD/globus_io-3.3
    bash$ gpt-build gcc32 gcc32dbg
    gpt-build ====> CHECKING BUILD DEPENDENCIES FOR globus_io
    gpt-build ====> Changing to /home/mbletzin/work/doc-bundles/BUILD/globus_io-3.3
    gpt-build ====> BUILDING FLAVOR gcc32
    gpt-build ====> Changing to /home/mbletzin/install/globus/etc
    gpt-build ====> REMOVING empty package globus_io-gcc32-pgm
    gpt-build ====> REMOVING empty package globus_io-gcc32-pgm_static
    gpt-build ====> Changing to /home/mbletzin/work/doc-bundles/BUILD/globus_io-3.3
    gpt-build ====> BUILDING FLAVOR gcc32dbg
    gpt-build ====> Changing to /home/mbletzin/install/globus/etc
    gpt-build ====> REMOVING empty package globus_io-gcc32dbg-pgm
    gpt-build ====> REMOVING empty package globus_io-gcc32dbg-pgm_static
    gpt-build ====> REMOVING empty package globus_io-noflavor-data
    gpt-build ====> REMOVING empty package globus_io-noflavor-doc
    

Rebuilding multiple packages in a bundle is trickier because the packages need to be fed into gpt-build in dependency order. The file packaging_list lists the package names in dependency order so this list can be used to order the package source directories. For those of you who are too lazy to write your own, you can use this script.