ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CMSDIST/bootstrap.file
Revision: 1.77
Committed: Wed Mar 2 19:01:10 2011 UTC (14 years, 2 months ago) by fwyzard
Branch: MAIN
CVS Tags: CMSSW_4_4_5_patch2, CMSSW_4_4_5_patch1, CMSSW_4_4_5, sm120813-44X, CMSSW_4_2_8_SLHChcal6, ecbForCMSSW_4_2_8_SLHChcal6-slc5_amd64_gcc434, CMSSW_4_2_8_SLHChcal5, ecbForCMSSW_4_2_8_SLHChcal5-slc5_amd64_gcc434, CMSSW_4_2_8_SLHCstd2_patch2, CMSSW_4_2_8_SLHCtk3_patch2, CMSSW_4_2_8_SLHChcal2_patch3, daForCMSSW_4_2_8_SLHChcal2_patch3-slc5_amd64_gcc434, ecbForCMSSW_4_2_8_SLHCstd2_patch2-slc5_amd64_gcc434, ecbForCMSSW_4_2_8_SLHCtk3_patch2-slc5_amd64_gcc434, CMSSW_4_2_8_SLHCstd2_patch1, CMSSW_4_2_8_SLHCtk3_patch1, CMSSW_4_2_8_SLHChcal4_patch4, ecbForCMSSW_4_2_8_SLHCtk3_patch1-slc5_amd64_gcc434, ecbForCMSSW_4_2_8_SLHCstd2_patch1-slc5_amd64_gcc434, ecbForCMSSW_4_2_8_SLHChcal4_patch4-slc5_amd64_gcc434, ecbForCMSSW_4_2_8_SLHChcal2_patch3-slc5_amd64_gcc434, CMSSW_4_2_8_SLHChcal4_patch3, daForCMSSW_4_2_8_SLHChcal4_patch3-slc5_amd64_gcc434, ecbForCMSSW_4_2_8_SLHChcal4_patch3-slc5_amd64_gcc434, CMSSW_4_2_8_SLHChcal4_patch2, daForCMSSW_4_2_8_SLHChcal4_patch2-slc5_amd64_gcc434, CMSSW_4_2_8_SLHChcal4_patch1, daForCMSSW_4_2_8_SLHChcal4_patch1-slc5_amd64_gcc434, ecbForCMSSW_4_2_8_SLHChcal4_patch1-slc5_amd64_gcc434, CMSSW_4_2_8_lowpupatch1, daForCMSSW_4_2_8_lpupatch1-slc5_amd64_gcc434, daForCMSSW_4_2_8_lowpupatch1-slc5_amd64_gcc434, CMSSW_4_2_8_patch7, CMSSW_4_1_8_patch10, daForCMSSW_4_1_8_patch10-slc5_amd64_gcc434, CMSSW_4_2_8_SLHCtk3, CMSSW_4_2_8_SLHChcal4, ecbForCMSSW_4_2_8_SLHChcal4-slc5_amd64_gcc434b, ecbForCMSSW_4_2_8_SLHCtk3-slc5_amd64_gcc434, CMSSW_4_2_9_HLT1_bphpatch4, daForCMSSW_4_2_9_HLT1_bphpatch4-slc5_amd64_gcc434, CMSSW_4_2_8_SLHCstd2, ecbForCMSSW_4_2_8_SLHCstd2-slc5_amd64_gcc434b, ecbForCMSSW_4_2_8_SLHCstd2-slc5_amd64_gcc434, ecbForCMSSW_4_2_8_SLHCstd_patch1-slc5_amd64_gcc434, CMSSW_4_2_9_HLT1_bphpatch3, daForCMSSW_4_2_9_HLT1_bphpatch3-slc5_amd64_gcc434, CMSSW_4_2_8_SLHCtk_patch2, CMSSW_4_2_8_SLHChcal2_patch2, CMSSW_4_2_8_SLHC2_patch2, ecbForCMSSW_4_2_8_SLHCtk_patch2-slc5_amd64_gcc434d, ecbForCMSSW_4_2_8_SLHCtk_patch2-slc5_amd64_gcc434c, ecbForCMSSW_4_2_8_SLHCtk_patch2-slc5_amd64_gcc434b, ecbForCMSSW_4_2_8_SLHC2_patch2-slc5_amd64_gcc434, ecbForCMSSW_4_2_8_SLHCtk_patch2-slc5_amd64_gcc434, ecbForCMSSW_4_2_8_SLHChcal2_patch2-slc5_amd64_gcc434, ecbForCMSSW_4_2_8_SLHChcal4-slc5_amd64_gcc434, CMSSW_4_2_8_SLHCtk2, daForCMSSW_4_2_8_SLHCtk2-slc5_amd64_gcc434, CMSSW_4_2_8_SLHChcal3, CMSSW_4_2_8_SLHCstd, daForCMSSW_4_2_8_SLHChcal3-slc5_amd64_gcc434, daForCMSSW_4_2_8_SLHCstd-slc5_amd64_gcc434, davidlt_20120419_1945-CMSSW_4_2_8_SLHChcal3-gcc434, davidlt_20120419_1841-CMSSW_4_2_8_SLHCstd-gcc434, davidlt_20120419_1841-slc5_amd64_gcc434b, ecbForCMSSW_4_2_8_SLHCtk2-slc5_amd64_gcc434, ecbForCMSSW_4_2_8_SLHChcal3-slc5_amd64_gcc434, ecbForCMSSW_4_2_8_SLHCstd-slc5_amd64_gcc434b, ecbForCMSSW_4_2_8_SLHCstd-slc5_amd64_gcc434, CMSSW_4_2_8_SLHC2_patch1, CMSSW_4_2_8_SLHCtk_patch1, CMSSW_4_2_8_SLHChcal2_patch1, daForCMSSW_4_2_8_SLHC2_patch1-slc5_amd64_gcc434, daForCMSSW_4_2_8_SLHChcal2_patch1-slc5_amd64_gcc434, daForCMSSW_4_2_8_SLHCtk_patch1-slc5_amd64_gcc434, CMSSW_4_2_9_HLT1_bphpatch2, daForCMSSW_4_2_9_HLT1_bphpatch2-slc5_amd64_gcc434, ecbForCMSSW_4_2_8_SLHC2_patch1-slc5_amd64_gcc434, ecbForCMSSW_4_2_8_SLHChcal2_patch1-slc5_amd64_gcc434, ecbFor428slhctkp1, CMSSW_4_2_9_HLT1_bphpatch1, daForCMSSW_4_2_9_HLT1_bphpatch1-slc5_amd64_gcc434, davidlt_20120404_1419-42X-HLT1-bph1, CMSSW_4_1_8_patch9, CMSSW_4_4_4-ports, CMSSW_4_4_4, sm20120309, sm20120309-ports, TW20120302a, sm20120228-44X-ports, sm20120228-44X, sm120220-ports, sm120220, CMSSW_4_4_3_patch1-ports, CMSSW_4_4_3_patch1, vs20120215-50X, vs20120215-50X-ports, vs20120215-44X, vs20120215-44X-ports, da20120214-50X-ports, da20120214-50X, CMSSW_5_0_1_patch3, daForCMSSW_5_0_1_patch3b-slc5_amd64_gcc434, daForCMSSW_5_0_1_patch3-slc5_amd64_gcc434, ecbForCMSSW_4_2_8_SLHChcal2-slc5_amd64_gcc434, CMSSW_4_1_8_patch8, CMSSW_5_0_1_patch2, daForCMSSW_5_0_1_patch2c-slc5_amd64_gcc434, daForCMSSW_5_0_1_patch2b-slc5_amd64_gcc434, daForCMSSW_5_0_1_patch2-slc5_amd64_gcc434, da20120206-50X, da20120206-50X-ports, da20120205-44X-ports, da20120205-44X, da20120205-50X-ports, da20120205-50X, CMSSW_4_2_8_SLHCtk, CMSSW_5_0_1_patch1, vskarupeForCMSSW_4_2_8_SLHCtkd, vskarupeForCMSSW_4_2_8_SLHCtkc, da20120201-42X-ports, da20120201-42X, vskarupeForCMSSW_4_2_8_SLHCtkb, vskarupeForCMSSW_4_2_8_SLHCtk, CMSSW_5_0_0_patch2, CMSSW_4_2_8_p7rootfix, ecbFor428slhcstd, daFor428p7rootfix-ports, daFor428p7rootfix, CMSSW_5_0_1-ports, CMSSW_5_0_1, da20120129-50X-ports, da20120129-50X, ecbFor428slhctk, ebFor428slhc1p1, CMSSW_4_4_3-ports, CMSSW_4_4_3, sm120124-ports, da20120123-50X-ports, da20120123-50X, da20120123-44X-ports, da20120123-44X, CMSSW_5_0_0_patch1, CMSSW_4_4_2_p10JEmalloc, da20120112-50X-ports, da20120112-50X, da20120110-50X-ports, da20120110-50X, CMSSW_4_1_8_patch7, da20120108-52X-ports, da20120108-52X, da20120106-52X-ports, da20120106-52X, CMSSW_5_0_0_g4emtest, CMSSW_4_4_2_patch10-ports, CMSSW_4_4_2_patch10, CMSSW_5_0_0-ports, azFor442patch10gcc451, azFor442patch10, da20111220-50X-ports, da20111220-50X, da20111219-50X-ports, da20111219-50X, sjgFor510pre1, sjgFor500-ports, CMSSW_5_0_0, sjgFor500, az20111214-50X-ports, az20111214-50X, CMSSW_4_2_8_SLHChcal, CMSSW_4_4_2_patch9-ports, CMSSW_4_4_2_patch9, vsFor442patch9gcc451, vsFor442patch9, ecbFor428slhchcal, vs20111213-50X-ports, vs20111213-50X, fwFor500pre7-online, CMSSW_4_4_2_patch8-ports, CMSSW_4_4_2_patch8, CMSSW_5_0_0_pre7pythia424, sjgFor500pre7p424b, sjgFor500pre7p424, CMSSW_4_1_8_patch6, CMSSW_5_0_0_pre7, sjgFor500pre7-ports, sjgFor500pre7, da20111205-50X-ports, da20111205-50X, sjg20111204b-50X, sjg20111204-50X, da20111202-50X-ports, da20111202-50X, vs20111201-50X-ports, vs20111201c-50X, vs20111201temp-50X, vs20111201b-50X, CMSSW_4_2_4_g94p03c, vs20111201-50X, da20111201c-50X-ports, da20111201b-50X-ports, da20111201b-50X, da20111201-50X, vs20111130-42X-ports, vs20111130-42X, vs20111130-44X-ports, vs20111130-44X, da20111130-50X-ports, da20111130-50X, CMSSW_4_2_8_SLHC1, CMSSW_4_2_8_SLHC2, CMSSW_5_0_0_pre6g494, da20111128-50X-ports, da20111128-50X, sjgFor500pre6gcc494, az20111126-50X-ports, az20111126-50X, sm20111126-50X-ports, sm20111126-50X, az20111125-50X-ports, az20111125-50X, az20111124-50X-ports, az20111124-50X, az20111123-50X-ports, az20111123-50X, CMSSW_4_4_2_patch7-ports, CMSSW_4_4_2_patch7, azFor442patch7gcc451, azFor442patch7gcc434, CMSSW_4_1_8_patch5, azFor418patch5, ecbFor428slhc1, CMSSW_5_0_0_pre6, CMSSW_5_0_0_pre6-ports, ecbFor428slhc2, sjgFor500pre6-ports, sjgFor500pre6, sm20111121-50X, sm20111121-50X-ports, az20111121-50X-ports, CMSSW_4_4_2_patch6-ports, CMSSW_4_4_2_patch6, az20111118b-50X-ports, az20111118-50X-ports, azFor442patch6gcc451, azFor442patch6gcc434, az20111117b-50X-ports, az20111117b-50X, az20111117-50X-ports, az20111117-50X, az20111116-50X-ports, az20111116-50X, CMSSW_4_4_2_onlpatch2_ONLINE, az20111115b-50X-ports, az20111115-50X-ports, az20111115-50X, CMSSW_4_1_8_patch4, az20111110-42X-ports, CMSSW_5_0_0_pre5_root532rc1, azFor500pre5r532rc1, az20111111b-50X, az20111111-50X, CMSSW_4_4_2_patch5-ports, CMSSW_4_4_2_patch5, azFor442patch5gcc451, azFor442patch5gcc434, CMSSW_4_4_2_patch4-ports, CMSSW_4_4_2_patch4, azFor442patch4gcc451, azFor442patch4gcc434, az20111110-42X, az20111109b-44X, az20111109b-44X-ports, az20111109-44X-ports, az20111109-44X, CMSSW_4_4_2_patch3-ports, CMSSW_4_4_2_patch3, azFor442patch3gcc451, azFor442patch3gcc434, az20111108-50X-ports, az20111108-50X, CMSSW_4_2_3_SLHC4_patch1, CMSSW_4_4_2_patch2-ports, CMSSW_4_4_2_patch2, CMSSW_5_0_0_pre5-ports, CMSSW_5_0_0_pre5, sjgFor500pre5-ports, sjgFor500pre5, CMSSW_4_4_2_patch1-ports, CMSSW_4_4_2_patch1, azFor442patch1gcc451, azFor442patch1gcc434, CMSSW_4_1_8_patch3, bld_1320341101_PHEDEX-combined-agents_slc5_amd64_gcc434, fwFor500pre4-online, az20111102b-50X-ports, az20111102b-50X, az20111102-50X, bld_1320248863_PHEDEX-combined-agents_slc5_amd64_gcc434, CMSSW_4_4_2_onlpatch1_ONLINE, CMSSW_4_4_2_ONLINE, az20111031-42X-ports, az20111031-42X, az20111031c-50X-ports, az20111031c-50X, az20111031b-50X, az20111031-50X, ebFor423slhc4p1, CMSSW_4_4_2-ports, CMSSW_4_4_2, azFor442gcc451, azFor442gcc434, CMSSW_5_0_0_pre4-ports, CMSSW_5_0_0_pre4, az20111027b-50X-ports, az20111027b-50X, az20111027-50X-ports, az20111027-50X, sjgFor500pre4-ports, sjgFor500pre4, az20111026-50X-ports, az20111026-50X, az20111025-50X-ports, az20111025-50X, sm20111025-50X-ports, sm20111025-50X, CMSSW_4_2_9_HLT3_onlpatch4_ONLINE, az20111024-50X-ports, az20111024-50X, az20111022-50X, sjg111021b-50X-ports, sjg111021d-50X, sjg111021c-50X, sjg111021-50X-ports, sjg111021b-50X, sjg111021-50X, CMSSW_4_2_9_HLT3_onlpatch3_ONLINE, CMSSW_4_4_0_patch4-ports, CMSSW_4_4_0_patch4, azFor440patch4gcc451, azFor440patch4gcc434, CMSSW_5_0_0_pre3, CMSSW_5_0_0_pre3-ports, CMSSW_4_1_8_patch2, sjgFor500pre3-ports, sjgFor500pre3, az20111014-50X-ports, az20111014-50X, CMSSW_4_4_1_ONLINE, CMSSW_4_2_9_HLT3_hltpatch3, CMSSW_4_4_1-ports, CMSSW_4_4_1, az20111012-50X-ports, az20111012-50X, azFor441gcc451, azFor441gcc434, az20111011b-50X-ports, az20111011b-50X, az20111011a-50X-ports, az20111011a-50X, az20111011-50X, TW20111010c, CMSSW_4_2_9_HLT3_onlpatch2_ONLINE, TW20111010b, TW20111010a, CMSSW_5_0_0_pre2, CMSSW_5_0_0_pre2-ports, sjgFor500pre2-ports, sjgFor500pre2, CMSSW_4_4_0_patch3-ports, CMSSW_4_4_0_patch3, CMSSW_4_2_8_patch6, CMSSW_4_2_8_patch6-ports, azFor440patch3gcc451, azFor440patch3gcc434, az20111007-50X-ports, az20111007-50X, CMSSW_4_4_0_patch2-ports, CMSSW_4_4_0_patch2, azFor440patch2gcc451, azFor440patch2gcc434, builder_2011-10-04_16-25-49_das, bld_1317721310_stagemanager-agent_slc5_amd64_gcc434, CMSSW_4_2_4_g94p02, CMSSW_4_2_4_g93p01, CMSSW_4_2_9_HLT3_hltpatch1, CMSSW_4_2_9_HLT3_hltpatch2, CMSSW_4_2_9_HLT3_onlpatch1_ONLINE, CMSSW_4_2_9_HLT3_ONLINE, CMSSW_4_4_0_patch1-ports, CMSSW_4_4_0_patch1, azFor440patch1gcc451a, azFor440patch1gcc434a, azFor440patch1gcc451, azFor440patch1gcc434, CMSSW_4_2_8_patch5-ports, CMSSW_4_2_8_patch5, builder_2011-09-30_15-50-42_PHEDEX-combined-agents, CMSSW_5_0_0_pre1-ports, CMSSW_4_2_9_HLT3-ports, CMSSW_4_2_9_HLT3, sjgFor500pre1-ports, az20110929-50X-ports, builder_2011-09-29_13-07-19_cmsweb, builder_2011-09-29_12-57-04_cmsweb, HG1109e, builder_2011-09-29_09-05-43_crab-server3, builder_2011-09-29_09-05-42_asyncstageout, builder_2011-09-29_05-49-40_wmagent, az20110928a-50X-ports, az20110928a-50X, builder_2011-09-28_19-05-55_PHEDEX-combined-agents, builder_2011-09-28_16-45-33_das, builder_2011-09-28_16-05-45_das, TW20110928b, builder_2011-09-28_12-04-32_stagemanager-agent, builder_2011-09-28_12-04-32_stagemanager, az20110928-50X-ports, TW20110928a, az20110928-50X, builder_2011-09-28_11-09-39_stagemanager-agent, builder_2011-09-27_17-51-30_reqmon, builder_2011-09-26_18-50-48_stagemanager-agent, builder_2011-09-26_18-50-48_stagemanager, az20110926-50X-ports, HG1109d, CMSSW_5_0_0_pre1, sjgFor500pre1b, sjgFor500pre1, builder_2011-09-23_12-46-40_cmsweb, builder_2011-09-23_12-37-00_cmsweb, builder_2011-09-23_12-09-06_wmagent, az20110922c-50X, CMSSW_4_4_0-ports, CMSSW_4_4_0, az20110922c-50X-ports, azFor440gcc451, azFor440gcc434, az20110922b-50X-ports, az20110922b-50X, CMSSW_4_2_9_HLT2_hltpatch1, az20110922a-50X-ports, az20110922a-50X, az20110922-50X, builder_2011-09-22_12-03-59_asyncstageout, builder_2011-09-22_11-25-57_crab-server3, builder_2011-09-22_11-24-38_asyncstageout, builder_2011-09-22_09-46-05_cmsweb, builder_2011-09-22_09-36-11_cmsweb, builder_2011-09-22_05-26-44_wmagent, builder_2011-09-21_18-06-30_asyncstageout, builder_2011-09-21_15-26-46_wmagent, builder_2011-09-21_12-53-09_crab-server3, builder_2011-09-21_12-53-09_asyncstageout, builder_2011-09-21_12-47-08_crab-server3, builder_2011-09-21_12-45-23_asyncstageout, CMSSW_4_2_9_HLT2_onlpatch1_ONLINE, CMSSW_4_2_9_HLT2_ONLINE, az20110921-44X-ports, az20110921-44X, CMSSW_4_2_9_HLT2, CMSSW_4_2_9_HLT2-ports, builder_2011-09-20_21-03-55_regsvc, az20110920-50X-ports, az20110920-50X, builder_2011-09-19_17-53-10_cmsweb, builder_2011-09-19_12-05-14_workqueue, az20110918-50X-ports, az20110918-50X, az20110916c-50X-ports, az20110916c-50X, az20110916b-50X, az20110916a-50X, az20110916-50X, CMSSW_4_2_8_patch4-ports, CMSSW_4_2_8_patch4, builder_2011-09-15_17-45-48_PHEDEX-combined-agents, CMSSW_4_2_9_HLT1_patch1-ports, CMSSW_4_2_9_HLT1_patch1, HG1109c-osx, az20110914-44X-ports, az20110914-44X, builder_2011-09-14_13-06-06_cmsweb, HG1109c-bootstrap, builder_2011-09-13_22-04-02_filemover, TW20110913b, TW20110913a, az20110913-44X-ports, az20110913-44X, builder_2011-09-13_12-46-32_cmsweb, HG1109c, LT20110913a, builder_2011-09-13_10-10-02_cmsweb, az20110912-50X-ports, az20110912-50X, LT20110912a, CMSSW_4_2_9_HLT1_ONLINE, az20110912-44X-ports, az20110912-44X, TW20110911a, sm20110912-50X-ports, sm20110912-50X, CMSSW_4_4_0_pre10_ONLINE, fwFor440pre10online, CMSSW_4_4_0_pre10-ports, CMSSW_4_4_0_pre10, azFor440pre10gcc451, azFor440pre10gcc434, TW20110909d, TW20110909c, builder_2011-09-09_17-05-31_dbs3-client, az20110909b-44X-ports, az20110909b-44X, TW20110909b, az20110909a-44X-ports, az20110909a-44X, az20110909-44X-ports, az20110909-44X, TW20110909a, az20110908-50X-ports, az20110908-50X, builder_2011-09-08_22-46-50_reqmgr, az20110907c-50X, az20110907c-50X-ports, CMSSW_4_1_8_patch1, HG1109b, builder_2011-09-07_19-00-35_cmsweb, az20110907b-50X, sjgFor418p1a, sjgFor418p1, az20110906b-44X, az20110906a-44X, sm20110907-50X-ports, sm20110907-50X, builder_2011-09-06_22-45-07_globalmonitor, builder_2011-09-06_16-09-09_stagemanager-agent, builder_2011-09-06_15-53-16_stagemanager-agent, az20110906a-50X-ports, az20110906-44X-ports, az20110906-44X, az20110906-50X-ports, az20110904-50X-ports, az20110904-50X, az20110902b-50X-ports, az20110902b-50X, az20110902a-50X, az20110902-50X-ports, az20110902-50X, CMSSW_4_2_8_patch3-ports, CMSSW_4_2_8_patch3, azFor428patch3gcc451, azFor428patch3gcc434, builder_2011-09-01_12-14-12_wmagent, az20110831-50X-ports, az20110831-50X, ebFor423slhc2p1, HG1109a, CMSSW_4_4_0_pre9, CMSSW_4_4_0_pre9-ports, builder_2011-08-29_19-08-40_cmsweb, azFor440pre9gcc451, azFor440pre9gcc434, az20110827-50X-ports, az20110827-50X, builder_2011-08-27_00-05-05_asyncstageout, CMSSW_4_2_9_HLT1_hltpatch1-ports, CMSSW_4_2_9_HLT1_hltpatch1, builder_2011-08-26_19-05-27_crab-server3, az20110826b-50X-ports, az20110826b-50X, az20110826a-50X, az20110826-50X, CMSSW_4_2_7_hinpatch1_ONLINE, az20110825-50X-ports, az20110825-50X, CMSSW_4_1_8_FWLITE, CMSSW_4_1_8, azFor418gcc434, az20110823-50X-ports, az20110823-50X, CMSSW_4_2_8_patch2-ports, CMSSW_4_2_8_patch2, az20110821-44X-ports, az20110821-44X, CMSSW_4_2_9_HLT1-ports, CMSSW_4_2_9_HLT1, az20110818a-50X-ports, az20110818a-50X, az20110818-50X-ports, az20110818-50X, CMSSW_4_2_9_HLT-ports, CMSSW_4_2_9_HLT, sm20110816-42X, sm20110816-42X-ports, builder_2011-08-16_12-09-37_cmsweb, HG1108b, CMSSW_4_4_0_pre8-ports, CMSSW_4_4_0_pre8, azFor440pre8gcc451, azFor440pre8gcc434, sjg110813b-50X-ports, sjg110813b-50X, sjg110813a-50X-ports, sjg110813a-50X, builder_2011-08-12_22-56-45_cmsweb, CMSSW_4_2_7_onlpatch3_ONLINE, CMSSW_4_2_7_hltpatch3, CMSSW_4_1_7_patch3, az20110809b-50X-ports, az20110809b-50X, az20110809a-50X, az20110809a-44X-ports, az20110809a-44X, az20110809-50X-ports, az20110809-50X, az20110809-44X-ports, az20110809-44X, TW20110808a, CMSSW_4_2_8_patch1-ports, CMSSW_4_2_8_patch1, CMSSW_4_4_0_pre7_g494p02-ports, CMSSW_4_4_0_pre7_g494p02, azFor440p7g494p02-g451, azFor440p7g494p02, az20110804-44X-ports, az20110804-44X, builder_2011-08-04_18-42-50_stagemanager-agent, builder_2011-08-04_17-25-36_das, builder_2011-08-04_13-25-47_cmsweb, sjg110804-50X-ports, sjg110804-50X, sjg110803-50X-ports, sjg110803-50X, builder_2011-08-02_16-19-02_wmagent, az20110802-42X-ports, az20110802-42X, CMSSW_4_1_7_patch2, CMSSW_4_4_0_pre7-ports, CMSSW_4_4_0_pre7, azFor440pre7gcc451, azFor440pre7gcc434, az20110801-44X, az20110801-44X-ports, CMSSW_4_4_0_pre6-ports, CMSSW_4_4_0_pre6, azFor440pre6gcc451, azFor440pre6gcc434, TW20110729a, az20110729-44X-ports, az20110729-44X, CMSSW_4_2_8-ports, CMSSW_4_2_8, CMSSW_4_2_7_onlpatch2_ONLINE, CMSSW_4_2_7_hltpatch2, azFor428gcc451, azFor428gcc434, TW20110728d, TW20110728c, TW20110728b, TW20110728a, builder_2011-07-28_00-46-23_cmsweb, DBS_2_1_6-pre1, builder_2011-07-27_18-04-14_reqmgr, HG1108a, az20110726a-44X-ports, az20110726a-44X, az20110726-44X-ports, az20110726-44X, az20110725c-44X-ports, az20110725c-44X, az20110725b-44X-ports, az20110725b-44X, az20110725a-44X-ports, az20110725-44X-ports, az20110725a-44X, az20110725-44X, az20110723a-44X-ports, az20110723a-44X, az20110723-44X, CMSSW_4_2_7_hltpatch1, az20110720-42X-ports, az20110720-42X, CMSSW_4_2_7_patch2, CMSSW_4_2_7_patch2-ports, azFor427patch2gcc451, azFor427patch2gcc434, CMSSW_4_4_0_pre5-ports, CMSSW_4_4_0_pre5, azFor440pre5gcc451, azFor440pre5gcc434, az20110718-42X-ports, az20110718-42X, az20110715a-44X-ports, az20110715a-44X, az20110715-44X, CMSSW_4_2_7_patch1, CMSSW_4_2_7_patch1-ports, azFor427patch1g451, azFor427patch1, az20110714a-44X-ports, az20110714a-44X, az20110714-44X-ports, az20110714-44X, CMSSW_4_2_7_onlpatch1_ONLINE, CMSSW_4_2_7_ONLINE, CMSSW_4_2_7-ports_FWLITE, CMSSW_4_2_7-ports, CMSSW_4_2_7_FWLITE, CMSSW_4_2_7, azFor427g451, azFor427g434, az20110713a-44X-ports, az20110713a-44X, az20110713-44X, ebFor423slhc4, CMSSW_4_1_7_patch1, az20110712c-44X-ports, az20110712c-44X, az20110712b-44X-ports, az20110712a-44X, az20110712-42X-ports, az20110712-42X, ge20110712-44X-ports, az20110712-44X-ports, az20110712-44X, CMSSW_4_2_6_onlpatch1_ONLINE, az20110711-43X-ports, az20110711-43X, ge20110711-44X, ge20110711-44X-ports, ge20110710b-44X, ge20110710b-44X-ports, ge20110710-44X, ge20110710-44X-ports, HG1108a-osx, HG1108a-bootstrap, ge20110709b-44X-ports, ge20110709-44X-ports, ge20110708-44X-ports, CMSSW_4_4_0_pre4-ports_FWLITE, CMSSW_4_4_0_pre4-ports, CMSSW_4_4_0_pre4_FWLITE, CMSSW_4_4_0_pre4, azFor440p4g451, azFor440p4g434, CMSSW_4_3_0_dqmpatch2-ports, CMSSW_4_3_0_dqmpatch2, sjgFor430dqmp2-ports, sjgFor430dqmp2, CMSSW_4_2_6_ONLINE, CMSSW_4_2_6-ports_FWLITE, CMSSW_4_2_6-ports, CMSSW_4_2_6_FWLITE, CMSSW_4_2_6, az20110706-44X-ports, az20110706-44X, azFor426gcc451, azFor426gcc434, az20110705-42X-ports, az20110705-42X, az20110701-44X-ports, az20110701-44X, CMSSW_4_4_0_pre3-ports, CMSSW_4_4_0_pre3, azFor440pre3gcc451, azFor440pre3gcc434, CMSSW_4_3_0_dqmpatch1-ports, CMSSW_4_3_0_dqmpatch1, az20110629-44X-ports, az20110629-44X, sjgFor430dqmp1, sjgFor430dqmp1-ports, sjfFor430dqmp1-ports, sjfFor430dqmp1, az20110627a-44X-ports, az20110627-44X-ports, az20110627-44X, CMSSW_4_3_0-ports, CMSSW_4_3_0, sjgFor430-ports, sjgFor430, CMSSW_4_4_0_pre2_FWLITE, CMSSW_4_4_0_pre2, CMSSW_4_4_0_pre2-ports_FWLITE, CMSSW_4_4_0_pre2-ports, azFor440pre2gcc451, azFor440pre2gcc434, CMSSW_4_2_5_hltpatch1, CMSSW_4_2_5_onlpatch1_ONLINE, CMSSW_4_2_5_ONLINE, fwFor425online, sm20110622a-44X-ports, sm20110622a-43X-ports, sm20110622a-43X, sm20110622a-44X, CMSSW_4_2_4_hltpatch1, sm20110622-43X-ports, sm20110622-43X, sm20110622-44X-ports, sm20110622-44X, CMSSW_4_2_5, CMSSW_4_2_5-ports, CMSSW_4_1_7, sm20110621-42X-ports, sm20110621-42X, sjgFor425b-ports, sjgFor425b, sjg110620a, sm20110620-42X-ports, sm20110620-42X, sjgFor425-ports, sjgFor425, sm20110620-44X, sm20110620-44X-ports, fw20110617-41X, sm20110616-44X-ports, sm20110616-44X, CMSSW_4_4_0_pre1-ports, CMSSW_4_4_0_pre1, az20110615-43X-ports, az20110615-43X, azFor20110615-43X, azFor20110615-43X-ports, azFor440pre1gcc451, azFor440pre1, sm20110615-43X-ports, sm20110615-43X, sm20110615-42X-ports, sm20110615-42X, sjgFor430pre6dqmIO-ports, sjgFor430pre6dqmIO, sm20110614b-44X-ports, sm20110614b-44X, sm20110614a-44X-ports, sm20110614a-44X, sm20110614-44X-ports, sm20110614-44X, sm20110607a-44X, sm20110607a-44X-ports, CMSSW_4_3_0_pre7, CMSSW_4_3_0_pre7-ports, sjgFor430pre6dp1, sjgFor430pre6dp1-ports, sjgFor430pre7, sjgFor430pre7-ports, sm20110610-44X-ports, sm20110610-44X, sm20110609-43X-ports, sm20110609-43X, CMSSW_4_2_4_patch1-ports, CMSSW_4_2_4_patch1, sm20110608-44X-ports, sm20110608-44X, fwFor424online3, fwFor424online2, sm20110607-44X, sm20110607-44X-ports, sm20110606a-ports, CMSSW_4_2_4_onlpatch1_ONLINE, CMSSW_4_2_4_ONLINE, fwFor424online, sm20110606a, CMSSW_4_2_3_SLHC3, sm20110606, CMSSW_4_2_4-ports_FWLITE, CMSSW_4_2_4-ports, CMSSW_4_2_4_FWLITE, CMSSW_4_2_4, azFor424fgcc451, azFor424fgcc434, azFor424g434, ebFor423slhc3, az20110601-for42X-ports, az20110601-for42X, azFor424agcc451, azFor424agcc434, CMSSW_4_2_3_SLHC2, azFor424gcc451, for423SLHC2, azFor424gcc434, CMSSW_4_1_6_patch1, CMSSW_4_1_6, CMSSW_4_2_3_patch5-ports, CMSSW_4_2_3_patch5, azFor423patch5gcc451, azFor423patch5gcc434, azFor423patch4agcc434, CMSSW_4_2_3_patch4-ports, CMSSW_4_2_3_patch4, azFor423patch4gcc451, azFor423patch4gcc434, CMSSW_4_3_0_pre6, CMSSW_4_3_0_pre6-ports, sjgFor430pre6-ports, sjgFor430pre6, sm20110528-for42X-ports, sm20110528-for42X, sm20110528-for43X, sm20110528-for43X-ports, sm20110527-for43X-ports, CMSSW_4_2_3_patch3-ports, CMSSW_4_2_3_patch3, azFor423patch3gcc451, azFor423patch3gcc434, sm20110523a-for43X-ports, sm20110523a-for43X, sm20110523-for43X, sm20110523-for43X-ports, CMSSW_4_2_3_onlpatch4_ONLINE, sm20110516-for43X-ports, sm20110516-for43X, CMSSW_4_2_3_patch2-ports, CMSSW_4_2_3_patch2, azFor423patch2gcc451, azFor423patch2gcc434, sjg110514a-for43x-ports, sjg110514a-for43x, sm20110514a-for43X-ports, sm20110514a-for43X, ge20110514-for43X-ports, sm20110514-for43X, sm20110514-for43X-ports, CMSSW_4_2_3_onlpatch3_ONLINE, sjg110513a-for43X-ports, sjg110513a-for43X, CMSSW_4_2_3_onlpatch2_ONLINE, azFor423onlpatch2, CMSSW_4_3_0_pre5-ports, CMSSW_4_3_0_pre5, sjgFor430pre5, sjgFor430pre5-ports, CMSSW_4_2_3_patch1, CMSSW_4_2_3_patch1-ports, azFor423patch1gcc451, azFor423patch1gcc434, CMSSW_4_2_3_SLHC_pre1, ebFor423slhcPre1, CMSSW_4_2_3_onlpatch1_ONLINE, CMSSW_4_2_3_ONLINE, fwFor423online, sm20110509a-for43X, sm20110509a-for43X-ports, sm20110509-for43X, CMSSW_4_2_2_patch2, CMSSW_4_2_2_patch2-ports, fwFor416, fwFor416sherpa123, CMSSW_4_2_3, CMSSW_4_2_3_FWLITE, CMSSW_4_2_3-ports_FWLITE, CMSSW_4_2_3-ports, azFor423gcc434_fwlite, azFor423g451, azFor423gcc451, azFor423gcc434, sm20110505-for42X-ports, sm20110505-for42X, sm20110504-for43X, sm20110504-for43X-ports, sm20110504-for42X-ports, sm20110504-for42X, sm20100504-ports, sm20100504, CMSSW_4_3_0_pre4-ports_FWLITE, CMSSW_4_3_0_pre4_FWLITE, CMSSW_4_3_0_pre4-ports, CMSSW_4_3_0_pre4, CMSSW_4_2_2_patch1-ports, CMSSW_4_2_2_patch1, azFor430pre4gcc451, azFor430pre4gcc434, CMSSW_4_2_1_patch2-ports, CMSSW_4_2_1_patch2, azFor421patch2gcc451, azFor421patch2gcc434, CMSSW_4_2_2_SLHC_pre1, pe20110427a-for43X-ports, pe20110427a-for43X, pe20110426a-for43X-ports, pe20110426a-for43X, ebFor422slhcPre1, CMSSW_4_2_2-ports_FWLITE, CMSSW_4_2_2_FWLITE, CMSSW_4_2_2-ports, CMSSW_4_2_2, azFor422gcc451, azFor422gcc434, azFor422g451, azFor422g434, CMSSW_4_2_1_patch1-ports, CMSSW_4_2_1_patch1, CMSSW_4_1_4_patch3, azFor421patch1gcc451a, azFor421patch1gcc434a, CMSSW_4_1_5, CMSSW_4_1_4_patch2, azFor421patch1gcc451, azFor421patch1gcc434, azFor421patch1g451, azFor421patch1g434, pe20110420b-for43X-ports, pe20110420b-for43X, pe20110420a-for43X, sjg110420a-ports, sjg110420a, pe20110419a-for43X-ports, pe20110419a-for43X, pe20110418a-for43X-ports, pe20110418a-for43X, CMSSW_4_3_0_pre3, CMSSW_4_3_0_pre3-ports, sjgFor430pre3-ports, sjgFor430pre3, sjg110417a-for43X-ports, sjg110417a-for43X, sm20110415-for43X, sm20110415-for43X-ports, CMSSW_4_2_1-ports_FWLITE, CMSSW_4_2_1-ports, CMSSW_4_2_1_FWLITE, CMSSW_4_2_1, azFor421g451, azFor421g434, CMSSW_4_1_4_onlpatch1_ONLINE, CMSSW_4_1_4_ONLINE, fwFor414p2, pe20110413a-for43X-ports, pe20110413a-for43X, fwFor414online, sm110412-for43X, pe20110412a-for43X, pe20110411a-for43X, CMSSW_4_1_4_patch1, sm110408, CMSSW_4_2_0-ports_FWLITE, CMSSW_4_2_0_FWLITE, CMSSW_4_3_0_pre2, CMSSW_4_2_0-ports, CMSSW_4_2_0, azFor420g451-fwlite, azFor420g434-fwlite, azFor420p434-fwlite, azFor420gcc451, azFor420gcc434, azFor420g451, azFor420g434, CMSSW_4_3_0_pre2-ports, CMSSW_4_1_4, sjgFor430pre2-ports, sjgFor430pre2, pe20110331b-for43X-ports, pe20110331b-for43X, pe20110331a-for43X-ports, pe20110331a-for43X, fwFor413op1, ge20110430-for43X-ports, CMSSW_4_1_3_patch3, CMSSW_4_1_2_patch2, pe20110328a-for43X-ports, pe20110328a-for43X, CMSSW_4_2_0_pre8_FWLITE, sjgFor430pre1-fwlite, CMSSW_4_3_0_pre1-ports, CMSSW_4_3_0_pre1, azFor420p8_fwlite, sjgFor430pre1-ports, pe20110324b-for43X-ports, pe20110324b-for43X, fwFor413xdaq11b6online, CMSSW_4_1_3_ONLINE, sjgFor430pre1, fwFor413p2, pe20110324a-for43X-ports, pe20110324a-for43X, CMSSW_4_2_0_pre8-ports, CMSSW_4_2_0_pre8, azFor420p8g451, azFor420p8g434, CMSSW_4_1_3_patch1, fwFor412op1, fwFor413online, pe20110318b-for4XY-ports, CMSSW_4_1_3, pe20110318a-for4XY-ports, fwFor413, pe20110317a-for4XY-ports, pe20110317a-for4XY, pe20110315a-for4XY-ports, pe20110315a-for4XY, pe20110310a-for4XY-ports, pe20110310a-for4XY, CMSSW_4_1_1_onlpatch2_ONLINE, CMSSW_4_1_2_ONLINE, CMSSW_4_1_1_onlpatch1_ONLINE, CMSSW_4_1_1_ONLINE, fwFor411online
Changes since 1.76: +3 -3 lines
Log Message:
use max-age=0 instead of no-cache for curl/wget

File Contents

# User Rev Content
1 eulisse 1.29 #!/bin/bash
2 fwyzard 1.77 # Revision: $Revision: 1.76 $
3 eulisse 1.69
4     set -e
5 eulisse 1.1
6     if [ X"$(id -u)" = X0 ]; then
7     echo "*** CMS SOFTWARE INSTALLATION ABORTED ***" 1>&2
8     echo "CMS software cannot be installed as the super-user." 1>&2
9     echo "(We recommend reading any standard unix security guide.)" 1>&2
10     exit 1
11     fi
12    
13 eulisse 1.57 if [ "X`printf hasprintf 2>/dev/null`" = Xhasprintf ]; then
14     echo_n() { printf "%s" ${1+"$@"}; }
15     elif [ "X`echo -n`" = "X-n" ]; then
16     echo_n() { echo ${1+"$@"}"\c"; }
17 eulisse 1.52 else
18 eulisse 1.57 echo_n() { echo -n ${1+"$@"}; }
19 eulisse 1.52 fi
20    
21 eulisse 1.57 cleanup_and_exit () {
22     exitcode=$1
23     exitmessage=$2
24     [ "X$exitmessage" = X ] || { echo && echo $exitmessage 1>&2; }
25     [ "X$debug" = Xtrue ] && exit $exitcode
26     [ "X$tempdir" = X ] || [ -d $tempdir ] && rm -rf $tempdir
27     [ "X$DOWNLOAD_DIR" = X ] || [ -d $DOWNLOAD_DIR ] && rm -rf $DOWNLOAD_DIR
28     [ "X$importTmp" = X ] || [ -d $importTmp ] && rm -rf $importTmp
29     exit $exitcode
30     }
31    
32     download_method=
33 fwyzard 1.77 download_curl () { curl -f -H "Cache-Control: max-age=0" -q -s "$1" -o "$2.tmp" && mv "$2.tmp" "$2"; }
34     download_wget () { (wget --no-check-certificate --header="Cache-Control: max-age=0" -q -O "$2.tmp" "$1" 2>/dev/null || wget -q -O "$2.tmp" "$1") && mv "$2.tmp" "$2"; }
35 eulisse 1.57 download_none () { cleanup_and_exit 1 "No curl or wget, cannot fetch $1"
36     }
37    
38     # Figure out how to download stuff
39     if [ -z "$download_method" ]; then
40     if [ `wget --version 2>/dev/null | wc -l` != 0 ]; then
41     download_method=wget
42     elif [ `curl --version 2>/dev/null | wc -l` != 0 ]; then
43     download_method=curl
44     else
45     download_method=none
46     fi
47     fi
48    
49     # Safely create a user-specific temp directory.
50 eulisse 1.65 # We look for TMPDIR since /tmp might not be user
51     # writeable.
52     # Notice that -p option does not work on MacOSX and
53     # ${${TMPDIR:-/tmp}} is zsh only.
54     if [ "X$TMPDIR" = X ]
55     then
56     tempdir=`mktemp -d /tmp/tmpXXXXX`
57     else
58     tempdir=`mktemp -d $TMPDIR/tmpXXXXX`
59     fi
60 eulisse 1.57
61     # We have our own version of find-provides for bootstrap, so that we don't
62     # depend on a "system" rpm installation. This is particularly handy in the case
63     # of macosx and other unsupported distributions which don't use rpm as a
64     # package manager (e.g. ubuntu).
65     rpmFindProvides=$tempdir/my-find-provides
66     cat > $rpmFindProvides <<\EOF_FIND_PROVIDES
67     #!/bin/bash
68    
69     # This script reads filenames from STDIN and outputs any relevant provides
70     # information that needs to be included in the package.
71    
72     filelist=`sed "s/['\"]/\\\&/g"`
73    
74     solist=$(echo $filelist | grep "\\.so" | grep -v "^/lib/ld.so" | \
75     xargs file -L 2>/dev/null | grep "ELF.*shared object" | cut -d: -f1)
76     pythonlist=
77     tcllist=
78    
79     #
80     # --- Alpha does not mark 64bit dependencies
81     case `uname -m` in
82     alpha*) mark64="" ;;
83     *) mark64="()(64bit)" ;;
84     esac
85    
86     #
87     # --- Library sonames and weak symbol versions (from glibc).
88     for f in $solist; do
89     soname=$(objdump -p $f | awk '/SONAME/ {print $2}')
90    
91     lib64=`if file -L $f 2>/dev/null | \
92     grep "ELF 64-bit" >/dev/null; then echo "$mark64"; fi`
93     if [ "$soname" != "" ]; then
94     if [ ! -L $f ]; then
95     echo $soname$lib64
96     objdump -p $f | awk '
97     BEGIN { START=0 ; }
98     /Version definitions:/ { START=1; }
99     /^[0-9]/ && (START==1) { print $4; }
100     /^$/ { START=0; }
101     ' | \
102     grep -v $soname | \
103     while read symbol ; do
104     echo "$soname($symbol)`echo $lib64 | sed 's/()//'`"
105     done
106     fi
107     else
108     echo ${f##*/}$lib64
109     fi
110     done | sort -u
111    
112     #
113     # --- Perl modules.
114     [ -x /usr/lib/rpm/perl.prov ] &&
115     echo $filelist | tr '[:blank:]' \\n | grep '\.pm$' | /usr/lib/rpm/perl.prov | sort -u
116    
117     #
118     # --- Python modules.
119     [ -x /usr/lib/rpm/python.prov -a -n "$pythonlist" ] &&
120     echo $pythonlist | tr '[:blank:]' \\n | /usr/lib/rpm/python.prov | sort -u
121    
122     #
123     # --- Tcl modules.
124     [ -x /usr/lib/rpm/tcl.prov -a -n "$tcllist" ] &&
125     echo $tcllist | tr '[:blank:]' \\n | /usr/lib/rpm/tcl.prov | sort -u
126    
127     exit 0
128     EOF_FIND_PROVIDES
129    
130 eulisse 1.69 mkdir -p $tempdir/lib/perl5/site_perl/RPM/Header/PurePerl
131     mkdir -p $tempdir/bin
132    
133     cat << \EOF_RPM_HEADER_PUREPERL_PM > $tempdir/lib/perl5/site_perl/RPM/Header/PurePerl.pm
134     @RPM_HEADER_PUREPERL_PM@
135     EOF_RPM_HEADER_PUREPERL_PM
136    
137     cat << \EOF_RPM_HEADER_PUREPERL_TAGSTABLE_PM > $tempdir/lib/perl5/site_perl/RPM/Header/PurePerl/Tagtable.pm
138     @RPM_HEADER_PUREPERL_TAGSTABLE_PM@
139     EOF_RPM_HEADER_PUREPERL_TAGSTABLE_PM
140    
141     export PERL5LIB=$tempdir/lib/perl5/site_perl
142    
143     cat << \EOF_RPM_HEADER_PL > $tempdir/bin/rpmHeader.pl
144     #!/usr/bin/env perl
145     die "Missing package name." if ($#ARGV == -1);
146     my $fp = $ARGV[0];
147    
148     use RPM::Header::PurePerl;
149    
150     tie %HDR, "RPM::Header::PurePerl", $fp or die "An error occurred: $RPM::err";
151    
152     if ($#ARGV == 1)
153     {
154     $l = $HDR{$ARGV[1]};
155     print join("\n", @$l);
156     print "\n";
157     exit;
158     }
159    
160     while ( ($k,$v) = each %HDR) {
161     $l = $HDR{$k};
162     if ($ARGV == 0)
163     {
164     print "$k:";
165     print join(",", @$l);
166     print "\n";
167     }
168     }
169     EOF_RPM_HEADER_PL
170    
171 eulisse 1.57 source() { . ${1+"$@"}; }
172    
173 eulisse 1.69 chmod u+x $rpmFindProvides $tempdir/bin/rpmHeader.pl
174 eulisse 1.57
175 eulisse 1.1 server=cmsrep.cern.ch
176 eulisse 1.68 server_main_dir=cmssw
177     repository=cms
178 eulisse 1.1 groups="lcg cms external"
179 eulisse 1.67 unsupportedDistribution=false
180 eulisse 1.1
181     rootdir=$(pwd)
182 eulisse 1.4 testInstance=false
183 eulisse 1.1
184     while [ $# -gt 0 ]; do
185     case $1 in
186     setup )
187     command=setup
188     shift ;;
189     reseed )
190     command=reseed
191     shift;;
192 eulisse 1.57 -path|-p )
193     [ $# -gt 0 ] || cleanup_and_exit 1 "Option \`$1' requires an argument"
194     if [ "$(echo $2 | cut -b 1)" = "/" ]; then
195     rootdir="$2"
196     else
197 ratnik 1.56 rootdir="$PWD/$2"
198 eulisse 1.1 fi
199     shift; shift ;;
200     -server )
201 eulisse 1.57 [ $# -gt 1 ] || cleanup_and_exit 1 "Option \`$1' requires an argument"
202 eulisse 1.4 server=$2
203     testInstance=true
204     shift; shift ;;
205 eulisse 1.1 -server-path )
206 eulisse 1.57 [ $# -gt 1 ] || cleanup_and_exit 1 "Option \`$1' requires an argument"
207 eulisse 1.68 $hasRepository || cleanup_and_exit 1 "Cannot specify -repository and -server-path at the same time"
208     server_main_dir=`echo $2 | sed -e 's|/$||' | sed -e "s|\(.*\)/[^/]*$|\1|"`
209     repository=`echo $2 | sed -e 's|/$||' | sed -e "s|.*/\([^/]*\)$|\1|"`
210 eulisse 1.1 echo "server_main_dir $server_main_dir"
211     echo "repository $repository"
212 eulisse 1.4 testInstance=true
213 eulisse 1.68 hasServerPath=true
214 eulisse 1.1 shift; shift ;;
215 eulisse 1.57 -repository|-r )
216     [ $# -gt 1 ] || cleanup_and_exit 1 "Option \`$1' requires an argument"
217 eulisse 1.68 $hasServerPath || cleanup_and_exit 1 "Cannot specify -repository and -server-path at the same time"
218     repository=$2
219     hasRepository=true
220 eulisse 1.26 testInstance=true
221     shift; shift ;;
222 eulisse 1.57 -groups|-g )
223     [ $# -gt 1 ] || cleanup_and_exit 1 "Option \`$1' requires at lease one argument"
224 eulisse 1.4 shift
225     groups=""
226 eulisse 1.57 while [ $# -gt 0 ]
227 eulisse 1.4 do
228 eulisse 1.57 [ "X$(echo $1 | cut -b1)" = X- ] && break
229     [ "X$1" = Xsetup ] && break
230     [ "X$1" = Xreseed ] && break
231 eulisse 1.4 groups="$groups $1"
232     shift
233     done
234     testInstance=true
235     ;;
236 eulisse 1.57 -architecture|-arch|-a )
237     [ $# -gt 1 ] || cleanup_and_exit 1 "Option \`$1' requires at lease one argument"
238     cmsplatf="$2"
239     shift; shift ;;
240 eulisse 1.1 -unsupported_distribution_hack )
241     unsupportedDistribution=true; shift
242     ;;
243 eulisse 1.57 -verbose|-v )
244     verbose=true; shift
245     doReturn="\n"
246     ;;
247     -debug )
248     debug=true; shift
249     doReturn="\n"
250     ;;
251     -assume-yes|-y )
252     assumeYes=true; shift
253     ;;
254     -only-once )
255     onlyOnce=true; shift
256     ;;
257     -additional-pkgs )
258     while [ $# -gt 0 ]
259     do
260     [ "X$(echo $1 | cut -b1)" = X- ] && break
261     [ "X$1" = Xsetup ] && break
262     [ "X$1" = Xreseed ] && break
263     additionalPkgs="$additionalPkgs $1"
264     shift
265     done
266     ;;
267     -help|-h )
268 eulisse 1.1 cat << \EOF_HELP
269     bootstrap.sh
270    
271     A script to bootstrap a CMS software area.
272    
273     Syntax:
274     bootstrap.sh setup [-path <cms-path>] [-server <server>] [-server-path <download-path>]
275    
276     -path <cms-path> : location of where the installation must be done (default $PWD).
277     -server <server> : repositories are to be found on server <server> (default cmsrep.cern.ch).
278     -server-path <download-path> : package structure is found on <download-path> on server (default cms/cpt/Software/download/apt).
279 eulisse 1.4 -repository <repository> : use private apt repository cms.<username> (default: public repository)
280     -groups <groups-list> : list of the channels we want to subscribe to (default: "cms external lcg virtual").
281 eulisse 1.1 EOF_HELP
282 eulisse 1.57 cleanup_and_exit 1
283 eulisse 1.1 ;;
284     * )
285 eulisse 1.57 cleanup_and_exit 1 "bootstrap.sh: argument $1 not supported"
286     ;;
287 eulisse 1.1 esac
288     done
289    
290 eulisse 1.70 # Get cmsos from the web.
291     cmsos=$server/$server_main_dir/$repository/cmsos
292     [ "X$verbose" = Xtrue ] && echo_n "Downloading cmsos file..."
293     download_${download_method} $cmsos $tempdir/cmsos
294     [ -f $tempdir/cmsos ] || cleanup_and_exit 1 "FATAL: Unable to download cmsos: $cmsos"
295     source $tempdir/cmsos
296    
297 eulisse 1.68 # Use cmsos to guess the platform if it is not set on command line.
298     if [ "X$cmsplatf" = X ]
299     then
300     cmsplatf=`cmsos`_`defaultCompiler`
301     fi
302    
303 eulisse 1.74 case $cmsplatf in
304     osx*)
305     cpio_opts="--insecure";;
306     esac
307    
308 eulisse 1.57 rpmdb=$cmsplatf/var/lib/rpm
309     rpmlock=$rootdir/$cmsplatf/var/lib/rpm/__db.0
310     importTmp=$rootdir/$cmsplatf/tmp/system-import
311    
312     [ "X$verbose" = Xtrue ] && echo "Using $download_method to download files."
313     [ "X$verbose" = Xtrue ] && echo "RPM db in $cmsplatf/var/lib/rpm."
314    
315     # Get the architecture driver from the web
316     driver=$server/$server_main_dir/$repository/$cmsplatf-driver.txt
317     [ "X$verbose" = Xtrue ] && echo_n "Downloading driver file..."
318     download_${download_method} $driver $tempdir/$cmsplatf-driver.txt
319     [ -f $tempdir/$cmsplatf-driver.txt ] || cleanup_and_exit 1 "FATAL: Unable to download platform driver: $driver"
320     eval `cat $tempdir/$cmsplatf-driver.txt`
321     [ "X$verbose" = Xtrue ] && echo "Done."
322 eulisse 1.42
323    
324 eulisse 1.1 perlHarvester () {
325 eulisse 1.57 [ "X$verbose" = Xtrue ] && echo && echo "...Harvesting for perl modules" 1>&2
326     for x in `perl -e'print join "\n", @INC'`
327 eulisse 1.1 do
328 eulisse 1.57 find -L $x 2>/dev/null \
329 eulisse 1.1 | grep -v -e '\(^[.]/\|[/]$\)' \
330     | grep -e '\([.]pm$\|[.]pl$\|[.]pod$\)' \
331 eulisse 1.57 | sed -e "s|$x/||;s|[.]pm||;s|[.]pod||;s|/|::|g;s|^\(.*\)|Provides: perl(\1)|"
332 eulisse 1.1 done
333     }
334    
335     generateSeedSpec () {
336     # Seed system info
337 eulisse 1.57 # GL asound odbc java libtcl libtk
338     [ "X$verbose" = Xtrue ] && echo && echo "...Seeding RPM database from selected system RPMs." 1>&2
339    
340 eulisse 1.73 # Decide which seeds to use. Notice that in case
341     # rhXYZ_WWW_ does not exists we try to use
342     # rhX_WWW_ platformSeeds before dropping to
343     # the (optional) platformSeeds.
344 eulisse 1.71 requiredSeeds=$(eval echo $`cmsos`_platformSeeds)
345     if [ "X$requiredSeeds" = X ]
346     then
347 eulisse 1.73 requiredSeeds=$(eval echo $`cmsos | sed -e 's|\([0-9]\)[0-9]*|\1|'`_platformSeeds)
348     fi
349    
350     if [ "X$requiredSeeds" = X ]
351     then
352 eulisse 1.71 seed="$platformSeeds"
353     else
354     seed="$requiredSeeds"
355     unsupportedDistribution=false
356     fi
357 eulisse 1.57
358 eulisse 1.67 if $unsupportedDistribution
359 eulisse 1.57 then
360     echo "WARNING: you are running on an unsupported distribution."
361     echo "This might lead to unknown problems."
362     seed="$seed $unsupportedSeeds"
363     fi
364 eulisse 1.71
365 eulisse 1.57
366     rm -rf $importTmp
367     mkdir -p $importTmp
368     cd $importTmp
369 eulisse 1.1 mkdir -p SOURCES BUILD SPEC RPMS SRPMS tmp
370     : > SOURCES/none
371     # FIXME: It might be better to use rootdir rather than PWD
372     (echo "%define _sourcedir $PWD/SOURCES"
373     echo "%define _builddir $PWD/BUILD"
374     echo "%define _specdir $PWD/SPEC"
375     echo "%define _rpmdir $PWD/RPMS"
376     echo "%define _srcrpmdir $PWD/SRPMS"
377     echo "%define _tmppath $PWD/tmp"
378     echo "%define _topdir $PWD"
379     echo "%define _rpmfilename system-base-import.rpm"
380     echo;
381     echo "Name: system-base-import"
382     echo "Version: 1.0"
383     echo "Release: `date +%s`"
384     echo "Summary: Base system seed"
385     echo "License: Unknown"
386     echo "Group: Hacks"
387     echo "Packager: install.sh"
388     echo "Source: none"
389 eulisse 1.57 for provide in $additionalProvides
390     do
391     echo "Provides: $provide"
392     done
393 eulisse 1.1
394 eulisse 1.69 if $unsupportedDistribution
395 eulisse 1.1 then
396 eulisse 1.19 # Guess perl
397 andreasp 1.62 echo "Provides: perl = `perl -MConfig -e 'print $Config{api_revision}.\".\".($Config{api_version}*1000).$Config{api_subversion};'`"
398 eulisse 1.57 for provide in $unsupportedProvides
399     do
400     echo "Provides: $provide"
401     done
402 eulisse 1.1 fi
403    
404 eulisse 1.57 case $cmsplatf in
405     osx* )
406 eulisse 1.75 ls /System/Library/Frameworks | sed 's!.framework!!;s!^!Provides: !'
407     find /usr/bin | sed 's!^!Provides: !'
408     find /bin | sed 's!^!Provides: !'
409 eulisse 1.69 /bin/ls -1 /usr/lib/*.dylib | awk -F"/" '{print $4}' | sed 's!^!Provides: !' || true
410     /bin/ls -1 /usr/lib/*/*.dylib | awk -F"/" '{print $5}' | sed 's!^!Provides: !' || true
411     /bin/ls -1 /usr/X11R6/lib/*.dylib | awk -F"/" '{print $5}' | sed 's!^!Provides: !' || true
412 eulisse 1.57 ;;
413     esac
414    
415 eulisse 1.18 if [ "$(which dpkg 2>&1 | grep 'no dpkg' )" = "" ]
416 eulisse 1.1 then
417 eulisse 1.57 [ "X$verbose" = Xtrue ] && echo && echo "...dpkg found in $(which dpkg), using it to seed the database." >&2
418 eulisse 1.1 for p in $seed; do
419 eulisse 1.18 if [ "$(dpkg -L $p 2>&1 | grep 'is not installed')" = "" ]; then
420 eulisse 1.1 dpkg -L $p 2>/dev/null | sed -e "s|^|Provides:|"
421 eulisse 1.69 dpkg -L $p 2>/dev/null | $rpmFindProvides | sed -e "s|^|Provides:|" || true
422 eulisse 1.1 fi
423     done
424     perlHarvester
425     fi
426 eulisse 1.69
427 eulisse 1.18 if which rpm 2>&1 >/dev/null && [ "$(rpm -qa 2>&1 | grep 'use alien')" = "" ]
428 eulisse 1.1 then
429 eulisse 1.69 [ "X$verbose" = Xtrue ] && echo && echo "...rpm found in $(which rpm), using it to seed the database." >&2
430 eulisse 1.72 for p in $requiredSeeds; do
431     rpm -q $p >/dev/null || { echo "Required package $p is missing." ; exit 1; }
432     done
433 eulisse 1.1 for p in $seed; do
434 eulisse 1.71 rpm -q $p --provides | sed 's!<*=.*!!; s!^!Provides: !' || true
435     rpm -q $p --list | fgrep .so | fgrep -v -e /lib/. -e /lib64/. | sed 's!^.*/!Provides: !' || true
436     rpm -q $p --list | fgrep /bin/ | sed 's!^!Provides: !' || true
437 eulisse 1.1 done
438     fi
439     echo; echo "%description"; echo "Seeds RPM repository from the base system."
440     echo; echo "%prep"; echo "%build"; echo "%install"; echo "%files";
441 eulisse 1.69 ) > system-base-import.spec
442     if [ "X$?" = X0 ]; then : ; else
443     echo "There was an error generating the platform seed"
444     exit 1
445     fi
446    
447 eulisse 1.57 perl -p -i -e 's|^Provides:[\s]*$||' system-base-import.spec
448 eulisse 1.1 cd $was
449     }
450    
451     seed ()
452     {
453 eulisse 1.12 rcfile=$1
454 eulisse 1.57 cd $importTmp
455 eulisse 1.70 (source $rootdir/bootstraptmp/BOOTSTRAP/inst/$cmsplatf/external/rpm/$rpm_version/etc/profile.d/init.sh
456 andreasp 1.66 rpmbuild -ba --rcfile $rcfile system-base-import.spec >/dev/null 2>&1
457 eulisse 1.57 [ "X$verbose" = Xtrue ] && echo && echo "...Seeding database in in $rootdir/$rpmdb"
458     rpm --define "_rpmlock_path $rpmlock" -U -r $rootdir --rcfile $rcfile --dbpath $rootdir/$rpmdb RPMS/system-base-import.rpm
459     ) || cleanup_and_exit $? "Error while seeding rpm database with system packages."
460 eulisse 1.1 cd $was
461     }
462    
463     setup() {
464 eulisse 1.13 # FIXME: this is the ugliest trick ever found in a shell script.
465     # The problem is that rpm sometimes applies the value of --root
466     # to dbpath, some other times it does not.
467     # At some point this should be really fixed in the rpm sources,
468     # but for the time being we keep it as it is.
469 eulisse 1.57 [ "$rootdir" = "" ] && cleanup_and_exit 1 "Installation path not specified."
470 eulisse 1.31
471     rootdir=`echo $rootdir | perl -p -e 's|/$||'`
472 eulisse 1.57 mkdir -p $rootdir
473 eulisse 1.31 eval `echo $rootdir | awk -F \/ '{print "fakelink=$rootdir/"$2}'`
474     if [ ! -e $fakelink ]
475     then
476 eulisse 1.57 #echo $rootdir | awk -F \/ '{print "ln -s /"$2" $rootdir/"$2}'
477 eulisse 1.31 command=`echo $rootdir | awk -F \/ '{print "ln -s /"$2" $rootdir/"$2}'`
478     eval $command
479     fi
480 eulisse 1.13
481 eulisse 1.1 # Fetch the required RPMS for RPM and APT from the server and install them using rpmcpio
482 eulisse 1.61 export DOWNLOAD_DIR=$rootdir/bootstraptmp/BOOTSTRAP
483 eulisse 1.1 mkdir -p $DOWNLOAD_DIR
484     cd $DOWNLOAD_DIR
485 eulisse 1.57 downloadPath=$server/$server_main_dir/$repository/RPMS/$cmsplatf
486     # Get the architecture driver from the web
487     driver=$server/$server_main_dir/$repository/$cmsplatf-driver.txt
488     echo_n "Downloading driver file..."
489     download_${download_method} $driver $tempdir/$cmsplatf-driver.txt
490     [ -f $tempdir/$cmsplatf-driver.txt ] || cleanup_and_exit 1 "Unable to download platform driver: $driver"
491     eval `cat $tempdir/$cmsplatf-driver.txt`
492     echo "Done."
493    
494     echo_n "Downloading bootstrap core packages..."
495     for pkg in $packageList
496     do
497     download_${download_method} $downloadPath/$pkg $pkg
498     [ -f $pkg ] || cleanup_and_exit 1 "Error downloading $pkg. Exiting."
499     done
500     echo "Done."
501 eulisse 1.41
502 eulisse 1.1 was=`pwd`
503     cd $rootdir
504 eulisse 1.57 forceOption=""
505 ratnik 1.39 if [ -d $rootdir/$rpmdb ]
506 eulisse 1.1 then
507 eulisse 1.57 [ "X$onlyOnce" = Xtrue ] && cleanup_and_exit 0 "Area already initialised. Skipping bootstrap and exiting."
508     if [ "X$assumeYes" = Xtrue ]
509     then
510     forceOption=--force
511     else
512     read -e -p "Warning, $rootdir already set up. Do you want to reconfigure it? [ y / N ] " override
513     case $(echo $override | tr [A-Z] [a-z]) in
514     y|ye|yes)
515     forceOption=--force
516     ;;
517     *)
518     cleanup_and_exit 0 "No changes made. Exiting... "
519     ;;
520     esac
521     fi
522 eulisse 1.1 else
523     mkdir -p $rootdir/$rpmdb
524     fi
525 eulisse 1.57
526 eulisse 1.1 # Extract the packages via rpm, source the init.sh
527 eulisse 1.57 # Some packages might actually not be there (gcc on darwin, for example, .
528     # where we use the system one).
529 eulisse 1.10 cd $DOWNLOAD_DIR
530 eulisse 1.57 # http://linuxmafia.com/pub/linux/utilities-general/rpm2cpio
531     cat > myrpm2cpio <<\EOF_RPM2CPIO
532     #!/usr/bin/env perl
533    
534     # Why does the world need another rpm2cpio? Because the existing one
535     # won't build unless you have half a ton of things that aren't really
536     # required for it, since it uses the same library used to extract RPMs.
537     # In particular, it won't build on the HPsUX box I'm on.
538    
539     #
540     # Expanded quick-reference help by Rick Moen (not the original author
541     # of this script).
542     #
543    
544     # add a path if desired
545     $gzip = "gzip";
546    
547     sub printhelp {
548     print "\n";
549     print "rpm2cpio, perl version by orabidoo <odar\@pobox.com>\n";
550     print "\n";
551     print "use: rpm2cpio [file.rpm]\n";
552     print "\n";
553     exit 0;
554     }
555    
556     if ($#ARGV == -1) {
557     printhelp if -t STDIN;
558     $f = "STDIN";
559     } elsif ($#ARGV == 0) {
560     open(F, "< $ARGV[0]") or die "Can't read file $ARGV[0]\n";
561     $f = 'F';
562     } else {
563     printhelp;
564     }
565    
566     printhelp if -t STDOUT;
567    
568     # gobble the file up
569     undef $/;
570     $|=1;
571     $rpm = <$f>;
572     close ($f);
573    
574     ($magic, $major, $minor, $crap) = unpack("NCC C90", $rpm);
575    
576     die "Not an RPM\n" if $magic != 0xedabeedb;
577     die "Not a version 3 or 4 RPM\n" if $major != 3 and $major != 4;
578    
579     $rpm = substr($rpm, 96);
580    
581     while ($rpm ne '') {
582     $rpm =~ s/^\c@*//s;
583     ($magic, $crap, $sections, $bytes) = unpack("N4", $rpm);
584     $smagic = unpack("n", $rpm);
585     last if $smagic eq 0x1f8b;
586     die "Error: header not recognized\n" if $magic != 0x8eade801;
587     $rpm = substr($rpm, 16*(1+$sections) + $bytes);
588     }
589    
590     die "bogus RPM\n" if $rpm eq '';
591    
592     open(ZCAT, "|gzip -cd") || die "can't pipe to gzip\n";
593    
594     print ZCAT $rpm;
595     close ZCAT;
596     EOF_RPM2CPIO
597    
598     echo_n "Unpacking core packages..."
599 eulisse 1.69 # Unfortunately cpio unpacks its files including the original build path.
600     # We therefore need some symlink tricks to make sure that everything
601     # ends up in the same installation directory.
602     # We also use the rpmHeader.pl script to get the pre and post install
603     # script and we execute them by hand.
604     # This should really mimic what rpm does and removes the needs for
605     # `instroot` to be defined in the bootstrap driver.
606     mkdir $tempdir/scriptlets
607     mkdir -p $PWD/inst
608 eulisse 1.57 for pkg in $packageList
609     do
610 eulisse 1.69 pkgInstRoot=`$tempdir/bin/rpmHeader.pl $DOWNLOAD_DIR/$pkg PREFIXES | tail -1`
611     mkdir -p `dirname .$pkgInstRoot`
612     ln -sf $PWD/inst .$pkgInstRoot
613     $tempdir/bin/rpmHeader.pl $DOWNLOAD_DIR/$pkg PREIN | grep -v "^Unknown" | sed -e "s|[$]RPM_INSTALL_PREFIX|$PWD/inst|g" > $tempdir/scriptlets/$pkg.pre.sh
614     sh -ex $tempdir/scriptlets/$pkg.pre.sh
615 eulisse 1.74 perl ./myrpm2cpio $DOWNLOAD_DIR/$pkg | cpio $cpio_opts -id || cleanup_and_exit 1 "Unable to unpack $DOWNLOAD_DIR/$pkg"
616 eulisse 1.69 $tempdir/bin/rpmHeader.pl $DOWNLOAD_DIR/$pkg POSTIN | grep -v "^Unknown" | sed -e "s|[$]RPM_INSTALL_PREFIX|$PWD/inst|g" > $tempdir/scriptlets/$pkg.post.sh
617     sh -ex $tempdir/scriptlets/$pkg.post.sh
618 eulisse 1.57 done
619     echo "Done."
620 ratnik 1.33
621 eulisse 1.1 # Generate the seed spec using the old rpm:
622 eulisse 1.57 echo_n "Harvesting system for locally available software..."
623 eulisse 1.5 generateSeedSpec
624 eulisse 1.69
625 eulisse 1.1 # Now move to use the new RPM by sourcing its init.sh
626 eulisse 1.69 source $DOWNLOAD_DIR/inst/$cmsplatf/external/rpm/$rpm_version/etc/profile.d/init.sh
627 eulisse 1.10 cd $rootdir
628 eulisse 1.57 echo "Done."
629 eulisse 1.69
630 eulisse 1.1 # Initialise the rpmdb using the new rpm.
631 eulisse 1.57 echo_n "Initializing local rpm database..."
632     rpm --define "_rpmlock_path $rpmlock" -r $rootdir --dbpath $rootdir/$rpmdb --initdb || cleanup_and_exit 1 "Unable to initialize $rootdir/$rpmdb. Exiting."
633 eulisse 1.69
634 eulisse 1.1 # Build the seed spec and install it, in order to seed the newly generated db.
635 eulisse 1.69 rpmOptions="-r $rootdir --dbpath $rootdir/$rpmdb --rcfile $DOWNLOAD_DIR/inst/$cmsplatf/external/rpm/$rpm_version/lib/rpm/rpmrc --nodeps --prefix $rootdir --ignoreos --ignorearch"
636     seed $DOWNLOAD_DIR/inst/$cmsplatf/external/rpm/$rpm_version/lib/rpm/rpmrc
637 eulisse 1.57 echo "Done."
638 eulisse 1.22
639 eulisse 1.1 # Install the packages, this time using rpm.
640 eulisse 1.57 echo_n "Installing packages in the local rpm database..."
641     for pkg in $packageList
642     do
643     rpm -U $forceOption --define "_rpmlock_path $rpmlock" $rpmOptions $DOWNLOAD_DIR/$pkg || cleanup_and_exit 1 "Error while installing $pkg. Exiting."
644     done
645     echo "Done"
646 eulisse 1.1
647 eulisse 1.4 # If we want to use a test instance, we need to adjust the sources.list accordingly.
648 eulisse 1.69 if $testInstance
649 eulisse 1.4 then
650 eulisse 1.68 perl -p -i -e "s|^([^#][^;].*) http://cmsrep.cern.ch cms/cpt/Software/download/cms/|#\$1 http://cmsrep.cern.ch cmssw/cms/|;
651 eulisse 1.57 s|#;||;
652 eulisse 1.27 s|\@GROUPS\@|$groups|;
653     s|\@SERVER\@|$server|;
654 eulisse 1.69 s|\@SERVER_PATH\@|$server_main_dir/|;
655 eulisse 1.57 s|\@REPOSITORY\@|$repository|" $rootdir/$cmsplatf/external/apt/$apt_version/etc/sources.list
656 eulisse 1.4 fi
657 eulisse 1.1
658 eulisse 1.69 # Source the apt environment and upgrade what is already there.
659 eulisse 1.57 echo_n "Initializing apt-get environment."
660     source $rootdir/$cmsplatf/external/apt/$apt_version/etc/profile.d/init.sh
661 dlange 1.58 apt-get update >$tempdir/apt-get-update.log 2>&1 || cleanup_and_exit 1 "There was a problem while running apt-get update. "
662 eulisse 1.57
663     echo "Done"
664     echo_n "Installing default packages."
665     defaultPackages="$additionalPkgs $defaultPkgs"
666 dlange 1.59 [ "X$defaultPackages" = X ] || apt-get -y install $defaultPackages >$tempdir/apt-get-install.log 2>&1 || cleanup_and_exit 1 "There was \
667 dlange 1.58 a problem while installing the default packages "
668    
669    
670 eulisse 1.57 echo "Done"
671    
672     echo "Bootstrap environment to be found in: "
673     echo "### $rootdir/$cmsplatf/external/apt/$apt_version/etc/profile.d/init.sh"
674    
675 eulisse 1.1 cd $was
676     }
677    
678     ##########################################################
679     case $command in
680     setup )
681 eulisse 1.57 setup
682     ;;
683 eulisse 1.1 reseed )
684 eulisse 1.23 generateSeedSpec
685 andreasp 1.66 seed $rootdir/$cmsplatf/external/rpm/$rpm_version/lib/rpm/rpmrc
686 eulisse 1.23 ;;
687 eulisse 1.1 esac
688    
689 eulisse 1.57 cleanup_and_exit 0 "Everything completed correctly."