#!/usr/bin/env python3 # -*- coding: utf-8 -*- # # Copyright (C) 2017-2020 The Project X-Ray Authors. # # Use of this source code is governed by a ISC-style # license that can be found in the LICENSE file or at # https://opensource.org/licenses/ISC # # SPDX-License-Identifier: ISC import os from prjxray.util import get_part_information, get_part_resources, get_fabric_for_part def get_environment_variables(): """ This function returns a dict of environment settings for a given part. It requires a basic setup of the prjxray environment that contains information about the databse directory location, the FPGA part, etc. One of the settings must be sourced, to set up the basic environment. """ environment = dict() # Get base environment variables and resources' paths part = os.environ['XRAY_PART'] database = os.environ['XRAY_DATABASE'] database_dir = os.environ['XRAY_DATABASE_DIR'] xray_root = os.environ['XRAY_DIR'] db_root = os.path.join(database_dir, database) res_path = os.path.join(xray_root, 'settings', database) # Get device information part_info = get_part_information(db_root, part) fabric = get_fabric_for_part(db_root, part) resources = get_part_resources(res_path, os.environ['XRAY_PART']) environment['XRAY_DEVICE'] = part_info['device'] environment['XRAY_PACKAGE'] = part_info['package'] environment['XRAY_SPEED_GRADE'] = part_info['speedgrade'] environment['XRAY_FABRIC'] = fabric for number, pin in resources['pins'].items(): environment['XRAY_PIN_{:02d}'.format(number)] = pin return environment def main(): # Only dump the environment when the resource.yaml file for the family # exists to prevent errors during the creation on the stdout. # SKIP_ENV in the environment turns off the environment dump for updating # all parts and resources, which will create the resource.yaml file. if 'SKIP_ENV' in os.environ: return environment = get_environment_variables() for key, value in environment.items(): print("export {}={}".format(key, value)) if __name__ == "__main__": main()