The use of " below means $dir will be parsed twice, and if $dir expands to a path containing spaces, the source command will fail.

package ifneeded iwidgets $::iwidgets::version "
  package req Itk
  source [file join $dir colors.itcl]
  source [file join $dir roman.itcl]
...
"