blob: bc6ccfffa71526fee7ed6f4bd0f02c0b2b3dcc48 [file] [log] [blame]
Felipe Vicens65a69822019-09-25 14:19:33 +02001#!/usr/bin/env python3
2# -*- coding: utf-8 -*-
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
12# implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15
16import subprocess
17import sys
18import os
Mike Marchetti94b645e2017-08-04 14:33:54 -040019from setuptools import setup, find_packages
Felipe Vicens65a69822019-09-25 14:19:33 +020020from setuptools.command.install import install
21
22
23class Install_osm_im(install):
24 """Generation of .py files from yang models"""
25 model_dir = "models/yang"
26 im_dir = "osm_im"
27
28 def pipinstall(self, package):
29 """pip install for executable dependencies"""
30 subprocess.call([sys.executable, "-m", "pip", "install", package])
31
32 def run(self):
garciadeblasdaa27732024-08-07 01:03:54 +020033 self.pipinstall('pyang==2.6.1')
34 self.pipinstall('pyangbind==0.8.6')
beierlmc1987d82023-06-20 21:31:53 +020035 import pyangbind
36 print("Using dir {}/{} for python artifacts".format(os.getcwd(), self.im_dir))
37 path = "{}/{}".format(os.getcwd(), self.im_dir)
38
garciaale76f6a622020-11-19 17:57:42 -030039 protoc_command = ["make", "models"]
40 if subprocess.call(protoc_command) != 0:
41 sys.exit(-1)
sousaedu048e5e02021-07-29 14:55:35 +020042
Felipe Vicens65a69822019-09-25 14:19:33 +020043 # To ensure generated files are copied to the python installation folder
sousaedu048e5e02021-07-29 14:55:35 +020044 install_path = "{}{}".format(self.install_lib, self.im_dir)
45 self.copy_tree(self.im_dir, install_path)
46 if os.path.isfile("{}/etsi-nfv-nsd.py".format(install_path)):
47 self.move_file(
48 "{}/etsi-nfv-nsd.py".format(install_path), "{}/etsi_nfv_nsd.py".format(install_path)
49 )
50 if os.path.isfile("{}/etsi-nfv-vnfd.py".format(install_path)):
51 self.move_file(
52 "{}/etsi-nfv-vnfd.py".format(install_path), "{}/etsi_nfv_vnfd.py".format(install_path)
53 )
54
Felipe Vicens65a69822019-09-25 14:19:33 +020055 install.run(self)
56
Mike Marchetti94b645e2017-08-04 14:33:54 -040057
58setup(
59 name='osm_im',
garciadeblas825b76d2017-08-30 15:03:32 +020060 description='OSM Information Model',
Felipe Vicens65a69822019-09-25 14:19:33 +020061 long_description=open('README.rst').read(),
Mike Marchetti09a27102018-09-24 15:05:51 -040062 version_command=('git describe --tags --long --dirty --match v*', 'pep440-git-full'),
beierlm5b3f4b62021-02-17 07:22:20 -050063 author='OSM Support',
64 author_email='osmsupport@etsi.org',
Mike Marchetti94b645e2017-08-04 14:33:54 -040065 packages=find_packages(),
66 include_package_data=True,
Mike Marchetti94b645e2017-08-04 14:33:54 -040067 setup_requires=['setuptools-version-command'],
68 test_suite='nose.collector',
Felipe Vicens65a69822019-09-25 14:19:33 +020069 url='https://osm.etsi.org/gitweb/?p=osm/IM.git;a=summary',
70 license='Apache 2.0',
71 cmdclass={'install': Install_osm_im},
Mike Marchetti94b645e2017-08-04 14:33:54 -040072)