def gen_read_files(self, f): self.p(cfg.header, f, "set -e", "set -eo pipefail") self.p(cfg.clear_lst, f) for hdd in self.hdds: if self.ag.productpath.startswith("http"): self.p(cfg.read_files_curl, f, "ISOMASK", hdd) else: awkpartfrom = """| awk '{ $1=$2=$3=$4=""; print substr($0,5); }' """ awkpartto = awkpartfrom if not hdd.startswith(".*"): awkpartto = "" if " " in self.archs: self.p( cfg.read_files_hdd, f, "FOLDER", self.iso_folder.get(hdd, ""), "ISOMASK", hdd, "| head -n 1", "", awkpartfrom, awkpartto, ) else: self.p( cfg.read_files_hdd, f, "FOLDER", self.iso_folder.get(hdd, self.hdd_folder.get(hdd, "")), "ISOMASK", hdd, awkpartfrom, awkpartto, ) if not self.isos and not self.hdds: for asset in self.assets: self.p(cfg.read_files_hdd, f, "FOLDER", self.asset_folders.get(asset, ""), "ISOMASK", asset) if self.iso_5: self.p(cfg.read_files_iso, f, "FOLDER", self.iso_folder.get(self.iso_5, ""), "SRCISO", self.iso_5) elif self.isos: # if isos don't belong to custom folder - just read them all with single command if not self.iso_folder: # self.p(cfg.read_files_isos, f, "FOLDER", self.folder) self.p(cfg.read_files_isos, f) else: for iso in self.isos: if "*" in iso: self.p( cfg.read_files_iso, f, "FOLDER", self.iso_folder.get(iso, ""), "SRCISO", "", "Media1?.iso$", iso, ) else: self.p(cfg.read_files_iso, f, "FOLDER", self.iso_folder.get(iso, ""), "SRCISO", iso) if self.repolink: self.p(cfg.read_files_repo_link, f) if self.repolink and self.build_id_from_iso: self.p(cfg.read_files_repo_link2, f) if self.repolink and not self.isos and not self.iso_5 and not self.hdds and not self.assets: self.p(cfg.read_files_repo_link3, f) if self.repos: self.p(cfg.read_files_repo, f) if self.build_id_from_iso: self.p( cfg.read_files_repo, f, "PRODUCTREPOPATH/", "PRODUCTREPOPATH/../iso/", "files_repo.lst", "files_iso_buildid.lst", "Media1(.license)?$", "Media1?.iso$", ) if any( repo.attrib.get(cfg.media2_name(), "") for repo in self.repos): self.p( cfg.read_files_repo, f, "Media1", "Media2", "REPOORS", "|".join([ m.attrib["name"] if "name" in m.attrib else m.tag for m in filter( lambda x: x.attrib.get(cfg.media2_name(), ""), self.repos) ]), ) if any( repo.attrib.get(cfg.media3_name(), "") for repo in self.repos): self.p( cfg.read_files_repo, f, "Media1", "Media3", "REPOORS", "|".join([ m.attrib["name"] if "name" in m.attrib else m.tag for m in filter( lambda x: x.attrib.get(cfg.media3_name(), ""), self.repos) ]), ) for repodir in self.repodirs: gen = repodir.attrib.get("gen", "") if gen: self.gen_repo(repodir, gen, f) else: archs = repodir.attrib.get("archs", "ARCHORS") txt = "PRODUCTREPOPATH" if self.version_from_media: txt = "PRODUCTREPOPATH/" self.p( cfg.read_files_repo, f, txt, self.ag.productpath + "/" + self.folder + "/*" + repodir.attrib["folder"] + "*", "REPOORS", "", "files_repo.lst", "files_repo_{}.lst".format( os.path.basename( repodir.attrib["folder"]).lstrip("*")), "ARCHORS", archs.replace(" ", "|").replace("armv7hl", "armv7hl|armv7l"), ) # let's sync media.1/media to be able verify build_id if "ToTest" in self.ag.envdir or self.version_from_media: archs = self.archs if not archs: archs = self.ag.archs wild = "*" done = "" if archs: wild = "*" + archs + "*" if " " in archs and self.repodirs: self.p("for arch in {}; do".format(archs), f) wild = "*$arch*" done = "done" if "Leap" in self.ag.envdir or "Jump" in self.ag.envdir or self.version_from_media: for repodir in self.repodirs: self.p( cfg.read_files_repo_media, f, "PRODUCTREPOPATH", self.ag.productpath + "/" + self.folder + "/*" + repodir.attrib["folder"] + wild, "Media1.lst", "Media1_{}.lst".format( os.path.basename(repodir.attrib["folder"]).lstrip( "*") + repodir.get("archs", "")), ) elif "Factory" in self.ag.envdir: for repodir in self.repodirs: if not repodir.attrib.get("gen", ""): self.p( cfg.read_files_repo_media + cfg.read_files_repo_media_convert, f, "PRODUCTREPOPATH", self.ag.productpath + "/" + self.folder + "/*" + repodir.attrib["folder"] + wild, "Media1.lst", "", "destlst", "Media1_{}.lst".format( os.path.basename( repodir.attrib["folder"]).lstrip("*")), "media.1/media", "media.1/products", ) if done: self.p(done, f) if self.assets and self.assets_flavor: for k, v in self.asset_folders.items(): self.p( """rsync -4 --list-only $rsync_pwd_option PRODUCTPATH/{}/*{} | awk '{{ $1=$2=$3=$4=""; print substr($0,5); }}' >> __envsub/files_asset.lst""" .format(v, k), f, )
def gen_read_files(self,f): self.p(cfg.header, f, "set -e", "set -eo pipefail") self.p(cfg.clear_lst, f) for hdd in self.hdds: if self.ag.productpath.startswith('http'): self.p(cfg.read_files_curl, f, "ISOMASK", hdd) else: awkpartfrom = '''| awk '{ $1=$2=$3=$4=""; print substr($0,5); }' ''' awkpartto = awkpartfrom if not hdd.startswith('.*'): awkpartto = '' if ' ' in self.archs: self.p(cfg.read_files_hdd, f, "FOLDER", self.iso_folder.get(hdd,""), "ISOMASK", hdd, '| head -n 1', '', awkpartfrom, awkpartto) else: self.p(cfg.read_files_hdd, f, "FOLDER", self.iso_folder.get(hdd,self.hdd_folder.get(hdd,"")), "ISOMASK", hdd, awkpartfrom, awkpartto) if not self.isos: for asset in self.assets: self.p(cfg.read_files_hdd, f, "FOLDER", "", "ISOMASK", asset) if self.iso_5: self.p(cfg.read_files_iso, f, "FOLDER", self.iso_folder.get(self.iso_5,""), "SRCISO", self.iso_5) elif self.isos: # if isos don't belong to custom folder - just read them all with single command if not self.iso_folder: # self.p(cfg.read_files_isos, f, "FOLDER", self.folder) self.p(cfg.read_files_isos, f) else: for iso in self.isos: self.p(cfg.read_files_iso, f, "FOLDER", self.iso_folder.get(iso,""), "SRCISO", iso) if self.repolink: self.p(cfg.read_files_repo_link, f) if self.repolink and self.build_id_from_iso: self.p(cfg.read_files_repo_link2, f) if self.repolink and not self.isos and not self.iso_5 and not self.hdds and not self.assets: self.p(cfg.read_files_repo_link3, f) if self.repos: self.p(cfg.read_files_repo, f) if self.build_id_from_iso: self.p(cfg.read_files_repo, f, "PRODUCTREPOPATH/", "PRODUCTREPOPATH/../iso/", "files_repo.lst", "files_iso_buildid.lst","Media1(.license)?$","Media1?.iso$") if any(repo.attrib.get(cfg.media2_name(),"") for repo in self.repos): self.p(cfg.read_files_repo, f, "Media1", "Media2", "REPOORS", '|'.join([m.attrib["name"] if "name" in m.attrib else m.tag for m in filter(lambda x: x.attrib.get(cfg.media2_name(),""), self.repos)])) if any(repo.attrib.get(cfg.media3_name(),"") for repo in self.repos): self.p(cfg.read_files_repo, f, "Media1", "Media3", "REPOORS", '|'.join([m.attrib["name"] if "name" in m.attrib else m.tag for m in filter(lambda x: x.attrib.get(cfg.media3_name(),""), self.repos)])) for repodir in self.repodirs: gen = repodir.attrib.get("gen", "") if gen: self.gen_repo(repodir, gen, f) else: archs = repodir.attrib.get("archs", "ARCHORS") self.p(cfg.read_files_repo, f, "PRODUCTREPOPATH", self.ag.productpath + "/" + self.folder + "/*" + repodir.attrib["folder"] + "*", "REPOORS", "", "files_repo.lst", "files_repo_{}.lst".format(os.path.basename(repodir.attrib["folder"]).lstrip('*')), "ARCHORS", archs.replace(' ','|')) # let's sync media.1/media to be able verify build_id if 'ToTest' in self.ag.envdir: archs = self.archs if not archs: archs = self.ag.archs wild = '*' done = '' if archs: wild = '*'+archs+'*' if ' ' in archs and self.repodirs: self.p("for arch in {}; do".format(archs), f) wild = '*$arch*' done = 'done' if 'Leap' in self.ag.envdir: for repodir in self.repodirs: self.p(cfg.read_files_repo_media, f, "PRODUCTREPOPATH", self.ag.productpath + "/" + self.folder + "/*" + repodir.attrib["folder"] + wild, 'Media1.lst', 'Media1_{}.lst'.format(os.path.basename(repodir.attrib["folder"]).lstrip('*') + repodir.get('archs',''))) elif 'Factory' in self.ag.envdir: for repodir in self.repodirs: if not repodir.attrib.get('gen', ''): self.p(cfg.read_files_repo_media + cfg.read_files_repo_media_convert, f, "PRODUCTREPOPATH", self.ag.productpath + "/" + self.folder + "/*" + repodir.attrib["folder"] + wild, 'Media1.lst', '', 'destlst', 'Media1_{}.lst'.format(os.path.basename(repodir.attrib["folder"]).lstrip('*')), 'media.1/media', 'media.1/products') if done: self.p(done, f) if self.assets and self.assets_flavor: for k, v in self.asset_folders.items(): self.p('''rsync -4 --list-only $rsync_pwd_option PRODUCTPATH/{}/*{} | awk '{{ $1=$2=$3=$4=""; print substr($0,5); }}' >> __envsub/files_asset.lst'''.format(v, k), f)