diff --git a/.gitignore b/.gitignore index 5e24190c..602f954c 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ dependmodules.x # Local module manifest. .manifest.mk +RELEASE/ diff --git a/REPO/.gitignore b/REPO/.gitignore index 1477bd1f..a0deba49 100644 --- a/REPO/.gitignore +++ b/REPO/.gitignore @@ -1 +1,6 @@ extracts +*.deb +Packages +Packages.gz + + diff --git a/REPO/packages/.gitignore b/REPO/packages/.gitignore deleted file mode 100644 index a1f17ae9..00000000 --- a/REPO/packages/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.deb -Packages -Packages.gz diff --git a/REPO/Makefile b/REPO/wheezy/Makefile similarity index 100% rename from REPO/Makefile rename to REPO/wheezy/Makefile diff --git a/REPO/packages/all/Makefile b/REPO/wheezy/packages/all/Makefile similarity index 100% rename from REPO/packages/all/Makefile rename to REPO/wheezy/packages/all/Makefile diff --git a/REPO/packages/amd64/Makefile b/REPO/wheezy/packages/amd64/Makefile similarity index 100% rename from REPO/packages/amd64/Makefile rename to REPO/wheezy/packages/amd64/Makefile diff --git a/REPO/packages/powerpc/Makefile b/REPO/wheezy/packages/powerpc/Makefile similarity index 100% rename from REPO/packages/powerpc/Makefile rename to REPO/wheezy/packages/powerpc/Makefile diff --git a/builds/.gitignore b/builds/.gitignore new file mode 100644 index 00000000..35e70f99 --- /dev/null +++ b/builds/.gitignore @@ -0,0 +1,2 @@ +*.swi +*.md5sum diff --git a/builds/Makefile b/builds/Makefile new file mode 100644 index 00000000..003238cf --- /dev/null +++ b/builds/Makefile @@ -0,0 +1 @@ +include $(ONL)/make/pkg.mk \ No newline at end of file diff --git a/builds/amd64/Makefile b/builds/amd64/Makefile new file mode 100644 index 00000000..003238cf --- /dev/null +++ b/builds/amd64/Makefile @@ -0,0 +1 @@ +include $(ONL)/make/pkg.mk \ No newline at end of file diff --git a/packages/base/amd64/rootfs/.gitignore b/builds/amd64/rootfs/.gitignore similarity index 100% rename from packages/base/amd64/rootfs/.gitignore rename to builds/amd64/rootfs/.gitignore diff --git a/packages/base/amd64/rootfs/Makefile b/builds/amd64/rootfs/Makefile similarity index 100% rename from packages/base/amd64/rootfs/Makefile rename to builds/amd64/rootfs/Makefile diff --git a/builds/amd64/rootfs/PKG.yml b/builds/amd64/rootfs/PKG.yml new file mode 100644 index 00000000..8afda98f --- /dev/null +++ b/builds/amd64/rootfs/PKG.yml @@ -0,0 +1 @@ +!include $ONL/builds/any/rootfs/APKG.yml ARCH=amd64 diff --git a/packages/base/amd64/rootfs/builds/.gitignore b/builds/amd64/rootfs/builds/.gitignore similarity index 100% rename from packages/base/amd64/rootfs/builds/.gitignore rename to builds/amd64/rootfs/builds/.gitignore diff --git a/packages/base/amd64/rootfs/builds/Makefile b/builds/amd64/rootfs/builds/Makefile similarity index 83% rename from packages/base/amd64/rootfs/builds/Makefile rename to builds/amd64/rootfs/builds/Makefile index aa896dda..c4dbc057 100644 --- a/packages/base/amd64/rootfs/builds/Makefile +++ b/builds/amd64/rootfs/builds/Makefile @@ -6,7 +6,7 @@ include $(ONL)/make/config.amd64.mk # export PLATFORM_LIST=$(shell onlpm --list-platforms --arch amd64 --csv ) -RFS_CONFIG := $(ONL)/packages/base/any/rootfs/standard/standard.yml +RFS_CONFIG := $(ONL)/builds/any/rootfs/standard/standard.yml RFS_DIR := rootfs-amd64.d RFS_CPIO := rootfs-amd64.cpio.gz RFS_SQUASH := rootfs-amd64.sqsh diff --git a/builds/amd64/swi/Makefile b/builds/amd64/swi/Makefile new file mode 100644 index 00000000..003238cf --- /dev/null +++ b/builds/amd64/swi/Makefile @@ -0,0 +1 @@ +include $(ONL)/make/pkg.mk \ No newline at end of file diff --git a/builds/amd64/swi/PKG.yml b/builds/amd64/swi/PKG.yml new file mode 100644 index 00000000..ef9b0f97 --- /dev/null +++ b/builds/amd64/swi/PKG.yml @@ -0,0 +1,2 @@ +!include $ONL/builds/any/swi/APKG.yml ARCH=amd64 + diff --git a/builds/swi/amd64/Makefile b/builds/amd64/swi/builds/Makefile similarity index 100% rename from builds/swi/amd64/Makefile rename to builds/amd64/swi/builds/Makefile diff --git a/packages/base/any/rootfs/APKG.yml b/builds/any/rootfs/APKG.yml similarity index 92% rename from packages/base/any/rootfs/APKG.yml rename to builds/any/rootfs/APKG.yml index 03277efb..114d10c2 100644 --- a/packages/base/any/rootfs/APKG.yml +++ b/builds/any/rootfs/APKG.yml @@ -3,13 +3,12 @@ prerequisites: common: arch: $ARCH - version: 1.0.0 + version: $FNAME_RELEASE_ID copyright: Copyright 2013, 2014, 2015 Big Switch Networks maintainer: support@bigswitch.com packages: - name: onl-rootfs - version: 1.0.0 summary: Open Network Linux Root Filesystem files: diff --git a/packages/base/any/rootfs/common/amd64-packages.yml b/builds/any/rootfs/common/amd64-packages.yml similarity index 100% rename from packages/base/any/rootfs/common/amd64-packages.yml rename to builds/any/rootfs/common/amd64-packages.yml diff --git a/packages/base/any/rootfs/common/common-packages.yml b/builds/any/rootfs/common/common-packages.yml similarity index 100% rename from packages/base/any/rootfs/common/common-packages.yml rename to builds/any/rootfs/common/common-packages.yml diff --git a/packages/base/any/rootfs/common/overlay/etc/adjtime b/builds/any/rootfs/common/overlay/etc/adjtime similarity index 100% rename from packages/base/any/rootfs/common/overlay/etc/adjtime rename to builds/any/rootfs/common/overlay/etc/adjtime diff --git a/packages/base/any/rootfs/common/overlay/etc/filesystems b/builds/any/rootfs/common/overlay/etc/filesystems similarity index 100% rename from packages/base/any/rootfs/common/overlay/etc/filesystems rename to builds/any/rootfs/common/overlay/etc/filesystems diff --git a/packages/base/any/rootfs/common/overlay/etc/inetd.conf b/builds/any/rootfs/common/overlay/etc/inetd.conf similarity index 100% rename from packages/base/any/rootfs/common/overlay/etc/inetd.conf rename to builds/any/rootfs/common/overlay/etc/inetd.conf diff --git a/packages/base/any/rootfs/common/overlay/etc/init.d/initdev b/builds/any/rootfs/common/overlay/etc/init.d/initdev similarity index 100% rename from packages/base/any/rootfs/common/overlay/etc/init.d/initdev rename to builds/any/rootfs/common/overlay/etc/init.d/initdev diff --git a/packages/base/any/rootfs/common/overlay/etc/profile.d/onl-platform-current.sh b/builds/any/rootfs/common/overlay/etc/profile.d/onl-platform-current.sh similarity index 100% rename from packages/base/any/rootfs/common/overlay/etc/profile.d/onl-platform-current.sh rename to builds/any/rootfs/common/overlay/etc/profile.d/onl-platform-current.sh diff --git a/packages/base/any/rootfs/common/overlay/etc/rssh.conf b/builds/any/rootfs/common/overlay/etc/rssh.conf similarity index 100% rename from packages/base/any/rootfs/common/overlay/etc/rssh.conf rename to builds/any/rootfs/common/overlay/etc/rssh.conf diff --git a/packages/base/any/rootfs/common/overlay/etc/udev/rules.d/60-block.rules b/builds/any/rootfs/common/overlay/etc/udev/rules.d/60-block.rules similarity index 100% rename from packages/base/any/rootfs/common/overlay/etc/udev/rules.d/60-block.rules rename to builds/any/rootfs/common/overlay/etc/udev/rules.d/60-block.rules diff --git a/packages/base/any/rootfs/common/overlay/etc/udev/rules.d/60-net.rules b/builds/any/rootfs/common/overlay/etc/udev/rules.d/60-net.rules similarity index 100% rename from packages/base/any/rootfs/common/overlay/etc/udev/rules.d/60-net.rules rename to builds/any/rootfs/common/overlay/etc/udev/rules.d/60-net.rules diff --git a/packages/base/any/rootfs/common/overlay/sbin/initblockdev b/builds/any/rootfs/common/overlay/sbin/initblockdev similarity index 100% rename from packages/base/any/rootfs/common/overlay/sbin/initblockdev rename to builds/any/rootfs/common/overlay/sbin/initblockdev diff --git a/packages/base/any/rootfs/common/overlay/sbin/pgetty b/builds/any/rootfs/common/overlay/sbin/pgetty similarity index 100% rename from packages/base/any/rootfs/common/overlay/sbin/pgetty rename to builds/any/rootfs/common/overlay/sbin/pgetty diff --git a/packages/base/any/rootfs/common/overlay/sbin/watchdir b/builds/any/rootfs/common/overlay/sbin/watchdir similarity index 100% rename from packages/base/any/rootfs/common/overlay/sbin/watchdir rename to builds/any/rootfs/common/overlay/sbin/watchdir diff --git a/packages/base/any/rootfs/common/powerpc-packages.yml b/builds/any/rootfs/common/powerpc-packages.yml similarity index 100% rename from packages/base/any/rootfs/common/powerpc-packages.yml rename to builds/any/rootfs/common/powerpc-packages.yml diff --git a/packages/base/any/rootfs/standard/standard.yml b/builds/any/rootfs/standard/standard.yml similarity index 85% rename from packages/base/any/rootfs/standard/standard.yml rename to builds/any/rootfs/standard/standard.yml index b3a63767..a8f185c7 100644 --- a/packages/base/any/rootfs/standard/standard.yml +++ b/builds/any/rootfs/standard/standard.yml @@ -8,8 +8,8 @@ # ############################################################ Packages: &Packages - - !include $ONL/packages/base/any/rootfs/common/common-packages.yml - - !include $ONL/packages/base/any/rootfs/common/${ARCH}-packages.yml + - !include $ONL/builds/any/rootfs/common/common-packages.yml + - !include $ONL/builds/any/rootfs/common/${ARCH}-packages.yml - !script $ONL/tools/onl-platform-pkgs.py ${PLATFORM_LIST} Multistrap: @@ -30,16 +30,16 @@ Multistrap: omitdebsrc: true Local-All: - source: ${ONL}/REPO/packages/all + source: ${ONL}/REPO/${DEBIAN_SUITE}/packages/all omitdebsrc: true Local-Arch: - source: ${ONL}/REPO/packages/${ARCH} + source: ${ONL}/REPO/${DEBIAN_SUITE}/packages/${ARCH} omitdebsrc: true Configure: overlays: - - ${ONL}/packages/base/any/rootfs/common/overlay + - ${ONL}/builds/any/rootfs/common/overlay update-rc.d: - 'initdev defaults' diff --git a/builds/any/swi/APKG.yml b/builds/any/swi/APKG.yml new file mode 100644 index 00000000..73267f4a --- /dev/null +++ b/builds/any/swi/APKG.yml @@ -0,0 +1,35 @@ + +prerequisites: + broken: true + packages: [ "onl-rootfs:$ARCH" ] + +common: + arch: $ARCH + version: $FNAME_RELEASE_ID + copyright: Copyright 2013, 2014, 2015 Big Switch Networks + maintainer: support@bigswitch.com + +packages: + - name: onl-swi + summary: Open Network Linux Switch Image (All $ARCH) Platforms) + + files: + builds/*.swi : $$PKG_INSTALL/ + builds/*.md5sum : $$PKG_INSTALL/ + + changelog: Change changes changes., + + +release: + - builds/*.swi : $ARCH/ + - builds/*.md5sum : $ARCH/ + + + + + + + + + + diff --git a/builds/powerpc/Makefile b/builds/powerpc/Makefile new file mode 100644 index 00000000..003238cf --- /dev/null +++ b/builds/powerpc/Makefile @@ -0,0 +1 @@ +include $(ONL)/make/pkg.mk \ No newline at end of file diff --git a/packages/base/powerpc/rootfs/Makefile b/builds/powerpc/rootfs/Makefile similarity index 100% rename from packages/base/powerpc/rootfs/Makefile rename to builds/powerpc/rootfs/Makefile diff --git a/builds/powerpc/rootfs/PKG.yml b/builds/powerpc/rootfs/PKG.yml new file mode 100644 index 00000000..c256419f --- /dev/null +++ b/builds/powerpc/rootfs/PKG.yml @@ -0,0 +1 @@ +!include $ONL/builds/any/rootfs/APKG.yml ARCH=powerpc diff --git a/packages/base/powerpc/rootfs/builds/.gitignore b/builds/powerpc/rootfs/builds/.gitignore similarity index 100% rename from packages/base/powerpc/rootfs/builds/.gitignore rename to builds/powerpc/rootfs/builds/.gitignore diff --git a/packages/base/powerpc/rootfs/builds/Makefile b/builds/powerpc/rootfs/builds/Makefile similarity index 83% rename from packages/base/powerpc/rootfs/builds/Makefile rename to builds/powerpc/rootfs/builds/Makefile index 77e9b471..db5e6ad8 100644 --- a/packages/base/powerpc/rootfs/builds/Makefile +++ b/builds/powerpc/rootfs/builds/Makefile @@ -6,7 +6,7 @@ include $(ONL)/make/config.powerpc.mk # export PLATFORM_LIST=$(shell onlpm --list-platforms --arch powerpc --csv ) -RFS_CONFIG := $(ONL)/packages/base/any/rootfs/standard/standard.yml +RFS_CONFIG := $(ONL)/builds/any/rootfs/standard/standard.yml RFS_DIR := rootfs-powerpc.d RFS_CPIO := rootfs-powerpc.cpio.gz RFS_SQUASH := rootfs-powerpc.sqsh diff --git a/builds/powerpc/swi/Makefile b/builds/powerpc/swi/Makefile new file mode 100644 index 00000000..003238cf --- /dev/null +++ b/builds/powerpc/swi/Makefile @@ -0,0 +1 @@ +include $(ONL)/make/pkg.mk \ No newline at end of file diff --git a/builds/powerpc/swi/PKG.yml b/builds/powerpc/swi/PKG.yml new file mode 100644 index 00000000..3aac1ca1 --- /dev/null +++ b/builds/powerpc/swi/PKG.yml @@ -0,0 +1,2 @@ +!include $ONL/builds/any/swi/APKG.yml ARCH=powerpc + diff --git a/builds/swi/powerpc/Makefile b/builds/powerpc/swi/builds/Makefile similarity index 100% rename from builds/swi/powerpc/Makefile rename to builds/powerpc/swi/builds/Makefile diff --git a/builds/swi/.gitignore b/builds/swi/.gitignore deleted file mode 100644 index e231f9df..00000000 --- a/builds/swi/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.swi -*.swi.md5sum diff --git a/make/swi.mk b/make/swi.mk index b5b16a43..c3e59bb6 100644 --- a/make/swi.mk +++ b/make/swi.mk @@ -17,6 +17,7 @@ FILENAMER := $(ONL)/tools/filenamer.py endif swi: FORCE + $(ONL_V_at) rm -rf *.swi* $(ONL_V_at) $(ONLPM) $(LINK_OPTIONS) $(ONL_V_at) zip -n rootfs-$(ARCH).sqsh - rootfs-$(ARCH).sqsh manifest.json > $@ $(ONL_V_at) mv $@ `$(FILENAMER) --type swi --manifest manifest.json $@` diff --git a/packages/base/amd64/rootfs/PKG.yml b/packages/base/amd64/rootfs/PKG.yml deleted file mode 100644 index f7a80d0b..00000000 --- a/packages/base/amd64/rootfs/PKG.yml +++ /dev/null @@ -1 +0,0 @@ -!include $ONL/packages/base/any/rootfs/APKG.yml ARCH=amd64 diff --git a/packages/base/powerpc/rootfs/PKG.yml b/packages/base/powerpc/rootfs/PKG.yml deleted file mode 100644 index 4289d348..00000000 --- a/packages/base/powerpc/rootfs/PKG.yml +++ /dev/null @@ -1,2 +0,0 @@ -!include $ONL/packages/base/any/rootfs/APKG.yml ARCH=powerpc - diff --git a/packages/platforms/accton/powerpc-accton-as4600-54t/platform-config/r0/info b/packages/platforms/accton/powerpc-accton-as4600-54t/platform-config/r0/info deleted file mode 100644 index 5033d297..00000000 --- a/packages/platforms/accton/powerpc-accton-as4600-54t/platform-config/r0/info +++ /dev/null @@ -1,18 +0,0 @@ -** Package Group: /home/jeff/ws/branches/ONL-NEXT-GEN/packages/platforms/accton/powerpc-accton-as4600-54t/platform-config/r0/PKG.yml -packages: -- arch: powerpc - changelog: Changes - copyright: Copyright 2013, 2014, 2015 Big Switch Networks - depends: onl-platform-config-accton - files: - src/lib: /lib/platform-config/powerpc-accton-as4600-54t-r0/onl - src/python: /usr/lib/python2.7/dist-packages/onl/platform/ - maintainer: support@bigswitch.com - name: onl-platform-config-powerpc-accton-as4600-54t-r0 - summary: ONL Platform Configuration Package for the powerpc-accton-as4600-54t-r0 - version: 1.0.0 -prerequisites: - packages: - - onl-vendor-config-accton:all - - diff --git a/setup.env b/setup.env index 43ecfa57..6eddb4a8 100755 --- a/setup.env +++ b/setup.env @@ -10,7 +10,7 @@ export ONL=$( cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd) # The ONL package dir is here: -export ONLPM_OPTION_PACKAGEDIRS="$ONL/packages" +export ONLPM_OPTION_PACKAGEDIRS="$ONL/packages:$ONL/builds" # The ONL repo dir is here: export ONLPM_OPTION_REPO="$ONL/REPO" @@ -22,16 +22,20 @@ export PATH="$ONL/tools/scripts:$ONL/tools:$PATH" # Default parallel build settings export MAKEFLAGS="-j64" -# These submodules are required for almost everything. -$ONL/tools/submodules.py $ONL sm/infra -$ONL/tools/submodules.py $ONL sm/bigcode - # Version files $ONL/tools/make-versions.py --import-file=$ONL/tools/onlvi --class-name=OnlVersionImplementation --output-dir $ONL/make +# Make version values available in the package environment +export ONLPM_OPTION_INCLUDE_ENV_JSON="$ONL/make/version-onl.json" + # # buildroot download mirror. We suggest you setup a local repository containing these contents for faster local builds. # export BUILDROOTMIRROR=${BUILDROOTMIRROR:-"http://buildroot.hw.bigswitch.com/dl"} +# These submodules are required for almost everything. +$ONL/tools/submodules.py $ONL sm/infra +$ONL/tools/submodules.py $ONL sm/bigcode + + diff --git a/tools/onlpm.py b/tools/onlpm.py index b120297d..4a8b08bb 100755 --- a/tools/onlpm.py +++ b/tools/onlpm.py @@ -19,6 +19,10 @@ import onlyaml import onlu from string import Template import re +import json +import lsb_release + +g_dist_codename = lsb_release.get_distro_information().get('CODENAME') logger = onlu.init_logging('onlpm') @@ -200,58 +204,12 @@ class OnlPackage(object): return True - - def filepath(self, filename): - """Return the file path for a given package file.""" - p = None - if os.path.isabs(filename): - p = filename - else: - p = os.path.join(self.dir, filename) - logger.debug("package file: %s" % p) - return p - - def _validate_files(self): """Validate the existence of the required input files for the current package.""" - - files = [] - if type(self.pkg['files']) is dict: - for (s,d) in self.pkg['files'].iteritems(): - files.append((s,d)) - elif type(self.pkg['files']) is list: - for e in self.pkg['files']: - if type(e) is dict: - for (s,d) in e.iteritems(): - files.append((s,d)) - elif type(e) in [ list, tuple ]: - if len(e) != 2: - raise OnlPackageError("Too many filenames: '%s'" % (e)) - else: - files.append((e[0], e[1])) - else: - raise OnlPackageError("File entry '%s' is invalid." % (e)) - - # - # Make sure all source files exist. - # - for f in files: - fp = self.filepath(f[0]) - if not os.path.exists(fp): - raise OnlPackageError("Source file or directory '%s' does not exist." % fp) - - # - # Perform destination-file substitutions. - # - flist = [] - for f in files: - s = Template(f[1]) - dst = s.substitute(dict(PKG=self.pkg['name'], PKG_INSTALL='/usr/share/onl/packages/%s/%s' % (self.pkg['arch'], self.pkg['name']))) - flist.append((f[0], dst)) - - self.pkg['files'] = flist - - + self.pkg['files'] = onlu.validate_src_dst_file_tuples(self.dir, + self.pkg['files'], + dict(PKG=self.pkg['name'], PKG_INSTALL='/usr/share/onl/packages/%s/%s' % (self.pkg['arch'], self.pkg['name'])), + OnlPackageError) def _validate(self): """Validate the package contents.""" @@ -320,8 +278,6 @@ class OnlPackage(object): if dst.startswith('/'): dst = dst[1:] - src = self.filepath(src) - if os.path.isdir(src): # # Copy entire src directory to target directory @@ -571,6 +527,20 @@ class OnlPackageGroup(object): for p in self.packages: products.append(p.build(dir_=dir_)) + + if 'release' in self._pkgs: + release_list = onlu.validate_src_dst_file_tuples(self._pkgs['__directory'], + self._pkgs['release'], + dict(), + OnlPackageError) + for f in release_list: + # Todo -- customize + dst = os.path.join(os.getenv('ONL'), 'RELEASE', g_dist_codename, f[1]) + if not os.path.exists(dst): + os.makedirs(dst) + logger.info("Releasing %s -> %s" % (os.path.basename(f[0]), dst)) + shutil.copy(f[0], dst) + return products def clean(self, dir_=None): @@ -595,7 +565,7 @@ class OnlPackageRepo(object): root : The root directory that should be used for this repository.""" - self.root = root + root = os.path.join(root, g_dist_codename) if not os.path.exists(root): os.makedirs(root) @@ -1048,8 +1018,15 @@ if __name__ == '__main__': ap.add_argument("--skip-missing", action='store_true') ap.add_argument("--try-arches", nargs='+', metavar='ARCH') ap.add_argument("--in-repo", nargs='+', metavar='PACKAGE') + ap.add_argument("--include-env-json", default=os.environ.get('ONLPM_OPTION_INCLUDE_ENV_JSON', None)) ops = ap.parse_args() + if ops.include_env_json: + for j in ops.include_env_json.split(':'): + data = json.load(open(j)) + for (k, v) in data.iteritems(): + os.environ[k] = v + # # The packagedirs and repo options can be inherited from the environment # to make it easier to customize the settings for a given project. diff --git a/tools/onlu.py b/tools/onlu.py index a3c33c04..74b5e1df 100644 --- a/tools/onlu.py +++ b/tools/onlu.py @@ -10,6 +10,8 @@ from collections import Iterable import sys import os import fcntl +import glob +from string import Template logger = None @@ -156,3 +158,55 @@ class Lock(object): def __del__(self): self.handle.close() + +def filepath(absdir, relpath, eklass): + """Return the absolute path for the given absdir/repath file.""" + p = None + if os.path.isabs(relpath): + p = relpath + else: + p = os.path.join(absdir, relpath) + + # Globs that result in a single file are allowed: + g = glob.glob(p) + if len(g) is 0: + raise eklass("'%s' did not match any files." % p) + elif len(g) > 1: + raise eklass("'%s' matched too many files %s" % (p, g)) + else: + p = g[0] + + return p + +def validate_src_dst_file_tuples(absdir, data, dstsubs, eklass): + files = [] + if type(data) is dict: + for (s,d) in data.iteritems(): + files.append((s,d)) + elif type(data) is list: + for e in data: + if type(e) is dict: + for (s,d) in e.iteritems(): + files.append((s,d)) + elif type(e) in [ list, tuple ]: + if len(e) != 2: + raise eklass("Too many filenames: '%s'" % (e)) + else: + files.append((e[0], e[1])) + else: + raise eklass("File entry '%s' is invalid." % (e)) + + # + # Validate/process source files. + # Process dst paths. + # + flist = [] + for f in files: + src = filepath(absdir, f[0], eklass) + if not os.path.exists(src): + raise eklass("Source file or directory '%s' does not exist." % src) + t = Template(f[1]) + dst = t.substitute(dstsubs) + flist.append((src, dst)) + + return flist diff --git a/tools/onlvi.py b/tools/onlvi.py index 811ff4d1..d71be362 100644 --- a/tools/onlvi.py +++ b/tools/onlvi.py @@ -50,3 +50,5 @@ class OnlVersionImplementation(object): def V_RELEASE_ID(self, data): return "%s,%s" % (self.V_VERSION_ID(data), self.V_BUILD_ID(data)) + def V_FNAME_RELEASE_ID(self, data): + return "%s-%s" % (self.V_VERSION_ID(data), self.V_FNAME_BUILD_ID(data))