Project

General

Profile

TOC PREV NEXT
Fermilab CD logo Complete Guide and Reference Manual for UPS and UPD

Chapter Contents

Chapter 20: Checklist for Building and Distributing Products
   20.1 Pre-build Checklist
   20.2 Build the Product
   20.3 Test the Product
   20.4 Distribute to fnkits as "test"
   20.5 Distribute to fnkits as "current"

  Chapter 20: Checklist for Building and Distributing Products

  This chapter summarizes the steps for preparing to build a product, building it and distributing it.

  20.1 Pre-build Checklist

  1. Create product root directory structure. Here is a comprehensive list of product elements and their suggested subdirectories (most products don't require all of them):
    • README (top-level)files (top-level or ups )
    • INSTALL_NOTE file ( ups )
    • executables ( bin )
    • table file and other installation-independent files/scripts ( ups )
    • source code and build instructions ( src )
    • test scripts ( test )
    • examples ( examples )
    • libraries ( lib )
    • include files ( include )
    • For shell scripts or pre-built binary products, put the executable file(s) in the ${UPS_PROD_DIR}/bin directory.
      p<>.   For products requiring build, create the file and include instructions for compiling, linking, testing and all other necessary operations, as well as for copying the final binaries into ${UPS_PROD_DIR}/bin . Insert the product source code into ${UPS_PROD_DIR}/src .

  20.2 Build the Product

  1. Verify that dependencies required for build are present.
  2. Build the product.
  3. Set permissions to a+x for scripts and other executables, and to a+r for readable files (if not already done).

  20.3 Test the Product

  1. Run regression tests.
  2. Add it to fnkits (possibly as -d for development). If you're not registered to add products to fnkits . (Send email to compdiv@fnal to request authorization.)
# put it in kits, with no chain (or maybe with -d for development?)
   upd addproduct myprod v1_x -f Flavor -r /path/ -M ups -m myprod.table
  1. Make a scratch products area on another system, and install from KITS into that area.
# install on some test machine
   ssh other-machine
   setup upd
   mkprd /tmp/prodarea
   upd install -z /tmp/prodarea/db myprod v1_x -f Flavor
  1. Run regression tests on that machine.
# test it there
   setup myprod v1_x -f Flavor
   run-whatever-test

   # clean it back out
   rm -rf /tmp/prodarea

This ensures the product is installable and works elsewhere than where it was built, which is important.

  20.4 Distribute to fnkits as "test"

  1. Since the product is already in fnkits, use the modproduct command.
# now chain it as test
   upd modproduct -t myprod v1_x -f Flavor
  1. Let people know about the product.
mail -s "myprod v1_x released as test" some_list@listserv.fnal.gov
   ...
  1. (Optional) Make a tar file of your product.

  20.5 Distribute to fnkits as "current"

  1. Wait suitable time (amount of time depends on product).
  2. Fix problems found during test phase.
  3. Rebuild product.
  4. Commit changes to code repository.
  5. Put final release into fnkits as "current".
  6. Reinstall as "current" on fnalu , as appropriate.
  7. Check all the chains on fnkits (and fnalu ) to make sure that older versions, flavors, etc. are no longer chained to "current".
  8. Post news to fnal.announce.products , fnal.announce.unix (if it is a UNIX product), and fnal.sys.fnalu.announce (if installed on fnalu ).
  9. Send email to <product>- announcing current phase.
  10. Contact https://fermi.service-now.com/ to inform them about the new product or version. Include information on the kinds of questions to expect, if possible, and where to direct users for help.

 

TOC PREV NEXT

Last revised May 2014

TOC PREV NEXT
Fermilab CD logo Complete Guide and Reference Manual for UPS and UPD

Chapter Contents

Chapter 20: Checklist for Building and Distributing Products
   20.1 Pre-build Checklist
   20.2 Build the Product
   20.3 Test the Product
   20.4 Distribute to fnkits as "test"
   20.5 Distribute to fnkits as "current"

  Chapter 20: Checklist for Building and Distributing Products

  This chapter summarizes the steps for preparing to build a product, building it and distributing it.

  20.1 Pre-build Checklist

  1. Create product root directory structure. Here is a comprehensive list of product elements and their suggested subdirectories (most products don't require all of them):
    • README (top-level)files (top-level or ups )
    • INSTALL_NOTE file ( ups )
    • executables ( bin )
    • table file and other installation-independent files/scripts ( ups )
    • source code and build instructions ( src )
    • test scripts ( test )
    • examples ( examples )
    • libraries ( lib )
    • include files ( include )
    • For shell scripts or pre-built binary products, put the executable file(s) in the ${UPS_PROD_DIR}/bin directory.
      p<>.   For products requiring build, create the file and include instructions for compiling, linking, testing and all other necessary operations, as well as for copying the final binaries into ${UPS_PROD_DIR}/bin . Insert the product source code into ${UPS_PROD_DIR}/src .

  20.2 Build the Product

  1. Verify that dependencies required for build are present.
  2. Build the product.
  3. Set permissions to a+x for scripts and other executables, and to a+r for readable files (if not already done).

  20.3 Test the Product

  1. Run regression tests.
  2. Add it to fnkits (possibly as -d for development). If you're not registered to add products to fnkits . (Send email to compdiv@fnal to request authorization.)
# put it in kits, with no chain (or maybe with -d for development?)
   upd addproduct myprod v1_x -f Flavor -r /path/ -M ups -m myprod.table
  1. Make a scratch products area on another system, and install from KITS into that area.
# install on some test machine
   ssh other-machine
   setup upd
   mkprd /tmp/prodarea
   upd install -z /tmp/prodarea/db myprod v1_x -f Flavor
  1. Run regression tests on that machine.
# test it there
   setup myprod v1_x -f Flavor
   run-whatever-test

   # clean it back out
   rm -rf /tmp/prodarea

This ensures the product is installable and works elsewhere than where it was built, which is important.

  20.4 Distribute to fnkits as "test"

  1. Since the product is already in fnkits, use the modproduct command.
# now chain it as test
   upd modproduct -t myprod v1_x -f Flavor
  1. Let people know about the product.
mail -s "myprod v1_x released as test" some_list@listserv.fnal.gov
   ...
  1. (Optional) Make a tar file of your product.

  20.5 Distribute to fnkits as "current"

  1. Wait suitable time (amount of time depends on product).
  2. Fix problems found during test phase.
  3. Rebuild product.
  4. Commit changes to code repository.
  5. Put final release into fnkits as "current".
  6. Reinstall as "current" on fnalu , as appropriate.
  7. Check all the chains on fnkits (and fnalu ) to make sure that older versions, flavors, etc. are no longer chained to "current".
  8. Post news to fnal.announce.products , fnal.announce.unix (if it is a UNIX product), and fnal.sys.fnalu.announce (if installed on fnalu ).
  9. Send email to <product>- announcing current phase.
  10. Contact https://fermi.service-now.com/ to inform them about the new product or version. Include information on the kinds of questions to expect, if possible, and where to direct users for help.

 

TOC PREV NEXT

Last revised May 2014