Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Mellanox] Adjust Makefile for SDK/python-sdk-api to support both python2 and python3 #7848

Merged
merged 2 commits into from
Jun 15, 2021

Conversation

stephenxs
Copy link
Collaborator

@stephenxs stephenxs commented Jun 11, 2021

Why I did it

Adjust the Makefile for SDK/python-SDK-API to support both python2 and python3

Signed-off-by: Stephen Sun stephens@nvidia.com

How I did it

How to verify it

Build the image and check whether python2 and python3 are both supported by SDK API.

Which release branch to backport (provide reason below if selected)

  • 201811
  • 201911
  • 202006
  • 202012

Description for the changelog

A picture of a cute animal (not mandatory but encouraged)

… python2 and python3

- SDK team won't migrate examples to python3 for now but the examples are widely used in SONiC.
  This means we can not phase out python2 until all the examples have been migrated to python3.
- As a result, we need to compile SDK with both python2 and python3 support.

Signed-off-by: Stephen Sun <stephens@nvidia.com>
Signed-off-by: Stephen Sun <stephens@nvidia.com>
@stephenxs
Copy link
Collaborator Author

vs test failed due to the following error.
The sonic-utilities is quite old. There is a PR Azure/sonci-utilities#7848 that advances the submodule. Can we have the PR 7848 merged and then check this one?
Meanwhile, I saw there is a PR Azure#7712 related to DPB that was recently merged. I'm not sure whether it's related to this error.
@lguohan Can you help on this? thanks.

2021-06-11T06:37:45.0010852Z =================================== FAILURES ===================================
2021-06-11T06:37:45.0011458Z _______________ TestConfigDPB.test_config_breakout_various_modes _______________
2021-06-11T06:37:45.0011742Z 
2021-06-11T06:37:45.0012158Z self = <tests.config_dpb_test.TestConfigDPB object at 0x7faa21155dd8>
2021-06-11T06:37:45.0012666Z sonic_db = <utilities_common.db.Db object at 0x7faa218414e0>
2021-06-11T06:37:45.0012912Z 
2021-06-11T06:37:45.0013743Z     @pytest.mark.usefixtures('mock_func')
2021-06-11T06:37:45.0014277Z     def test_config_breakout_various_modes(self, sonic_db):
2021-06-11T06:37:45.0015055Z         '''
2021-06-11T06:37:45.0015453Z         Test different combination of breakout port.
2021-06-11T06:37:45.0016242Z         @Param: sonic_db [PyFixture], db.cfgdb -> Config DB.
2021-06-11T06:37:45.0016491Z     
2021-06-11T06:37:45.0016706Z         How this function works:
2021-06-11T06:37:45.0016989Z         mock_func creates a mock for load_ConfigMgmt, which inturn create one
2021-06-11T06:37:45.0017328Z         mocked object of ConfigMgmtDPB, each time when config breakout command
2021-06-11T06:37:45.0017868Z         is executed, same object of ConfigMgmtDPB will be returned.
2021-06-11T06:37:45.0018414Z         The object will also have data tree loaded and updated with each breakout
2021-06-11T06:37:45.0019187Z         command, so we can run breakout command in continution assuming
2021-06-11T06:37:45.0019703Z         config changes are happening to DB.
2021-06-11T06:37:45.0020088Z     
2021-06-11T06:37:45.0020501Z         writeConfigDB in ConfigMgmtDPB writes in new object of DB, so those
2021-06-11T06:37:45.0021107Z         changes will be lost, i.e. not reflected in db.cfgdb. So we mock
2021-06-11T06:37:45.0021600Z         writeConfigDB() or not, does not matter.
2021-06-11T06:37:45.0021996Z     
2021-06-11T06:37:45.0022398Z         config/main.py part will use db (sonic_db) while configDb update,
2021-06-11T06:37:45.0022932Z         so brk_cfg_table updates will be seen in db.
2021-06-11T06:37:45.0023668Z         '''
2021-06-11T06:37:45.0024250Z     
2021-06-11T06:37:45.0024671Z         db = sonic_db
2021-06-11T06:37:45.0025060Z         runner = CliRunner()
2021-06-11T06:37:45.0025539Z         obj = {'config_db':db.cfgdb}
2021-06-11T06:37:45.0025842Z     
2021-06-11T06:37:45.0026436Z         '''
2021-06-11T06:37:45.0026829Z             INNER FUNCTIONS
2021-06-11T06:37:45.0027503Z         '''
2021-06-11T06:37:45.0028465Z         # Ethernet8: start from 4x25G-->2x50G with -f -l
2021-06-11T06:37:45.0029055Z         def config_dpb_port8_4x25G_2x50G_f_l():
2021-06-11T06:37:45.0029781Z     
2021-06-11T06:37:45.0030132Z             # Input Data
2021-06-11T06:37:45.0030948Z             interface = 'Ethernet8'
2021-06-11T06:37:45.0032013Z             curMode = '4x25G[10G]'
2021-06-11T06:37:45.0032769Z             newMode = '2x50G'
2021-06-11T06:37:45.0033028Z     
2021-06-11T06:37:45.0034110Z             print("Mocked Child ports data-> {}".format([get_child_ports_mock(interface, curMode), get_child_ports_mock(interface, newMode)]))
2021-06-11T06:37:45.0034456Z     
2021-06-11T06:37:45.0034684Z             config.get_child_ports = mock.MagicMock(
2021-06-11T06:37:45.0035298Z                 side_effect = [get_child_ports_mock(interface, curMode), get_child_ports_mock(interface, newMode)])
2021-06-11T06:37:45.0035969Z     
2021-06-11T06:37:45.0036440Z             result = runner.invoke(config.config.commands["interface"].\
2021-06-11T06:37:45.0037806Z                 commands["breakout"], ['{}'.format(interface), '{}'.format(newMode), '-v', '-f',\
2021-06-11T06:37:45.0038900Z                  '-l', '-y'], obj=obj)
2021-06-11T06:37:45.0039310Z     
2021-06-11T06:37:45.0039731Z             print(result.exit_code, result.output)
2021-06-11T06:37:45.0040206Z             assert result.exit_code == 0
2021-06-11T06:37:45.0041174Z             assert 'Breakout process got successfully completed.' in result.output
2021-06-11T06:37:45.0041861Z     
2021-06-11T06:37:45.0042446Z             brk_cfg_table = db.cfgdb.get_table('BREAKOUT_CFG')
2021-06-11T06:37:45.0043282Z             assert brk_cfg_table["Ethernet8"]["brkout_mode"] == '{}'.format(newMode)
2021-06-11T06:37:45.0043601Z             return
2021-06-11T06:37:45.0043898Z     
2021-06-11T06:37:45.0044762Z         # Ethernet8: move from 2x50G-->1x100G without force, list deps
2021-06-11T06:37:45.0045575Z         def config_dpb_port8_2x50G_1x100G():
2021-06-11T06:37:45.0046513Z     
2021-06-11T06:37:45.0046935Z             # Input Data
2021-06-11T06:37:45.0047670Z             interface = 'Ethernet8'
2021-06-11T06:37:45.0048430Z             curMode = '2x50G'
2021-06-11T06:37:45.0049176Z             newMode = '1x100G[40G]'
2021-06-11T06:37:45.0049571Z     
2021-06-11T06:37:45.0050657Z             print("Mocked Child ports data-> {}".format([get_child_ports_mock(interface, curMode), get_child_ports_mock(interface, newMode)]))
2021-06-11T06:37:45.0051266Z     
2021-06-11T06:37:45.0051873Z             config.get_child_ports = mock.MagicMock(
2021-06-11T06:37:45.0052489Z                 side_effect = [get_child_ports_mock(interface, curMode), get_child_ports_mock(interface, newMode)])
2021-06-11T06:37:45.0053065Z     
2021-06-11T06:37:45.0053515Z             result = runner.invoke(config.config.commands["interface"].\
2021-06-11T06:37:45.0054846Z                 commands["breakout"], ['{}'.format(interface), '{}'.format(newMode), '-v','-y'], obj=obj)
2021-06-11T06:37:45.0055371Z     
2021-06-11T06:37:45.0055779Z             print(result.exit_code, result.output)
2021-06-11T06:37:45.0058119Z             assert result.exit_code == 0
2021-06-11T06:37:45.0059453Z             assert 'Dependecies Exist.' in result.output
2021-06-11T06:37:45.0061271Z             assert 'Printing dependecies' in result.output
2021-06-11T06:37:45.0062159Z             assert 'NO-NSW-PACL-V4' in result.output
2021-06-11T06:37:45.0062651Z     
2021-06-11T06:37:45.0063841Z             brk_cfg_table = db.cfgdb.get_table('BREAKOUT_CFG')
2021-06-11T06:37:45.0065143Z             assert brk_cfg_table["Ethernet8"]["brkout_mode"] == '{}'.format(curMode)
2021-06-11T06:37:45.0071197Z             return
2021-06-11T06:37:45.0071614Z     
2021-06-11T06:37:45.0072619Z         # Ethernet8: move from 2x50G-->1x100G with force, where deps exists
2021-06-11T06:37:45.0073333Z         def config_dpb_port8_2x50G_1x100G_f():
2021-06-11T06:37:45.0074320Z     
2021-06-11T06:37:45.0074938Z             # Input Data
2021-06-11T06:37:45.0075930Z             interface = 'Ethernet8'
2021-06-11T06:37:45.0076785Z             curMode = '2x50G'
2021-06-11T06:37:45.0077715Z             newMode = '1x100G[40G]'
2021-06-11T06:37:45.0078495Z     
2021-06-11T06:37:45.0079969Z             print("Mocked Child ports data-> {}".format([get_child_ports_mock(interface, curMode), get_child_ports_mock(interface, newMode)]))
2021-06-11T06:37:45.0081181Z     
2021-06-11T06:37:45.0081655Z             config.get_child_ports = mock.MagicMock(
2021-06-11T06:37:45.0083087Z                 side_effect = [get_child_ports_mock(interface, curMode), get_child_ports_mock(interface, newMode)])
2021-06-11T06:37:45.0084902Z     
2021-06-11T06:37:45.0085424Z             result = runner.invoke(config.config.commands["interface"].\
2021-06-11T06:37:45.0087583Z                 commands["breakout"], ['{}'.format(interface), '{}'.format(newMode), '-v', '-f',\
2021-06-11T06:37:45.0089051Z                  '-y'], obj=obj)
2021-06-11T06:37:45.0089497Z     
2021-06-11T06:37:45.0089969Z             print(result.exit_code, result.output)
2021-06-11T06:37:45.0090991Z             assert result.exit_code == 0
2021-06-11T06:37:45.0092194Z             assert 'Breakout process got successfully completed.' in result.output
2021-06-11T06:37:45.0092733Z     
2021-06-11T06:37:45.0093642Z             brk_cfg_table = db.cfgdb.get_table('BREAKOUT_CFG')
2021-06-11T06:37:45.0094973Z             assert brk_cfg_table["Ethernet8"]["brkout_mode"] == '{}'.format(newMode)
2021-06-11T06:37:45.0095524Z             return
2021-06-11T06:37:45.0095841Z     
2021-06-11T06:37:45.0096850Z         # Ethernet8: move from 1x100G-->4x25G without force, no deps
2021-06-11T06:37:45.0097464Z         def config_dpb_port8_1x100G_4x25G():
2021-06-11T06:37:45.0097900Z     
2021-06-11T06:37:45.0098259Z             # Input Data
2021-06-11T06:37:45.0099217Z             interface = 'Ethernet8'
2021-06-11T06:37:45.0100171Z             curMode = '1x100G[40G]'
2021-06-11T06:37:45.0100923Z             newMode = '4x25G[10G]'
2021-06-11T06:37:45.0101345Z     
2021-06-11T06:37:45.0102376Z             print("Mocked Child ports data-> {}".format([get_child_ports_mock(interface, curMode), get_child_ports_mock(interface, newMode)]))
2021-06-11T06:37:45.0103017Z     
2021-06-11T06:37:45.0103570Z             config.get_child_ports = mock.MagicMock(
2021-06-11T06:37:45.0104380Z                 side_effect = [get_child_ports_mock(interface, curMode), get_child_ports_mock(interface, newMode)])
2021-06-11T06:37:45.0105503Z     
2021-06-11T06:37:45.0105854Z     
2021-06-11T06:37:45.0106381Z             result = runner.invoke(config.config.commands["interface"].\
2021-06-11T06:37:45.0107612Z                 commands["breakout"], ['{}'.format(interface), '{}'.format(newMode), '-v',\
2021-06-11T06:37:45.0108420Z                  '-y'], obj=obj)
2021-06-11T06:37:45.0108816Z     
2021-06-11T06:37:45.0109075Z             print(result.exit_code, result.output)
2021-06-11T06:37:45.0109417Z             assert result.exit_code == 0
2021-06-11T06:37:45.0110543Z             assert 'Breakout process got successfully completed.' in result.output
2021-06-11T06:37:45.0110923Z     
2021-06-11T06:37:45.0111399Z             brk_cfg_table = db.cfgdb.get_table('BREAKOUT_CFG')
2021-06-11T06:37:45.0112017Z             assert brk_cfg_table["Ethernet8"]["brkout_mode"] == '{}'.format(newMode)
2021-06-11T06:37:45.0112337Z             return
2021-06-11T06:37:45.0112553Z     
2021-06-11T06:37:45.0113014Z         # Ethernet8: move from 4x25G-->1x100G with force, no deps
2021-06-11T06:37:45.0113562Z         def config_dpb_port8_4x25G_1x100G_f():
2021-06-11T06:37:45.0114175Z     
2021-06-11T06:37:45.0114403Z             # Input Data
2021-06-11T06:37:45.0115104Z             interface = 'Ethernet8'
2021-06-11T06:37:45.0115562Z             curMode = '4x25G[10G]'
2021-06-11T06:37:45.0116006Z             newMode = '1x100G[40G]'
2021-06-11T06:37:45.0116245Z     
2021-06-11T06:37:45.0117258Z             print("Mocked Child ports data-> {}".format([get_child_ports_mock(interface, curMode), get_child_ports_mock(interface, newMode)]))
2021-06-11T06:37:45.0117969Z     
2021-06-11T06:37:45.0118237Z             config.get_child_ports = mock.MagicMock(
2021-06-11T06:37:45.0118788Z                 side_effect = [get_child_ports_mock(interface, curMode), get_child_ports_mock(interface, newMode)])
2021-06-11T06:37:45.0119480Z     
2021-06-11T06:37:45.0119925Z             result = runner.invoke(config.config.commands["interface"].\
2021-06-11T06:37:45.0120605Z                 commands["breakout"], ['{}'.format(interface), '{}'.format(newMode), '-v', '-f',\
2021-06-11T06:37:45.0121257Z                  '-y'], obj=obj)
2021-06-11T06:37:45.0121495Z     
2021-06-11T06:37:45.0121738Z             print(result.exit_code, result.output)
2021-06-11T06:37:45.0122017Z             assert result.exit_code == 0
2021-06-11T06:37:45.0122551Z             assert 'Breakout process got successfully completed.' in result.output
2021-06-11T06:37:45.0122836Z     
2021-06-11T06:37:45.0123273Z             brk_cfg_table = db.cfgdb.get_table('BREAKOUT_CFG')
2021-06-11T06:37:45.0123826Z             assert brk_cfg_table["Ethernet8"]["brkout_mode"] == '{}'.format(newMode)
2021-06-11T06:37:45.0124324Z             return
2021-06-11T06:37:45.0124525Z     
2021-06-11T06:37:45.0125006Z         # Ethernet8: move from 1x100G-->1x50G(2)+2x25G(2) with -f -l,
2021-06-11T06:37:45.0125384Z         def config_dpb_port8_1x100G_1x50G_2x25G_f_l():
2021-06-11T06:37:45.0125669Z     
2021-06-11T06:37:45.0125874Z             # Input Data
2021-06-11T06:37:45.0126278Z             interface = 'Ethernet8'
2021-06-11T06:37:45.0126878Z             curMode = '1x100G[40G]'
2021-06-11T06:37:45.0127826Z             newMode = '1x50G(2)+2x25G(2)'
2021-06-11T06:37:45.0128074Z     
2021-06-11T06:37:45.0128642Z             print("Mocked Child ports data-> {}".format([get_child_ports_mock(interface, curMode), get_child_ports_mock(interface, newMode)]))
2021-06-11T06:37:45.0129010Z     
2021-06-11T06:37:45.0129237Z             config.get_child_ports = mock.MagicMock(
2021-06-11T06:37:45.0129625Z                 side_effect = [get_child_ports_mock(interface, curMode), get_child_ports_mock(interface, newMode)])
2021-06-11T06:37:45.0129930Z     
2021-06-11T06:37:45.0130373Z             result = runner.invoke(config.config.commands["interface"].\
2021-06-11T06:37:45.0130951Z                 commands["breakout"], ['{}'.format(interface), '{}'.format(newMode), '-v',\
2021-06-11T06:37:45.0131652Z                 '-f', '-l', '-y'], obj=obj)
2021-06-11T06:37:45.0131894Z     
2021-06-11T06:37:45.0132132Z             print(result.exit_code, result.output)
2021-06-11T06:37:45.0132437Z             assert result.exit_code == 0
2021-06-11T06:37:45.0132971Z             assert 'Breakout process got successfully completed.' in result.output
2021-06-11T06:37:45.0133285Z     
2021-06-11T06:37:45.0133718Z             brk_cfg_table = db.cfgdb.get_table('BREAKOUT_CFG')
2021-06-11T06:37:45.0134307Z             assert brk_cfg_table["Ethernet8"]["brkout_mode"] == '{}'.format(newMode)
2021-06-11T06:37:45.0134623Z             return
2021-06-11T06:37:45.0135031Z     
2021-06-11T06:37:45.0135687Z         # Ethernet4: breakout from 4x25G to 2x50G with -f -l
2021-06-11T06:37:45.0136119Z         def config_dpb_port4_4x25G_2x50G_f_l():
2021-06-11T06:37:45.0136440Z     
2021-06-11T06:37:45.0136715Z             # Input Data
2021-06-11T06:37:45.0137342Z             interface = 'Ethernet4'
2021-06-11T06:37:45.0137757Z             curMode = '4x25G[10G]'
2021-06-11T06:37:45.0138175Z             newMode = '2x50G'
2021-06-11T06:37:45.0138390Z     
2021-06-11T06:37:45.0144195Z             print("Mocked Child ports data-> {}".format([get_child_ports_mock(interface, curMode), get_child_ports_mock(interface, newMode)]))
2021-06-11T06:37:45.0144805Z     
2021-06-11T06:37:45.0145052Z             config.get_child_ports = mock.MagicMock(
2021-06-11T06:37:45.0145423Z                 side_effect = [get_child_ports_mock(interface, curMode), get_child_ports_mock(interface, newMode)])
2021-06-11T06:37:45.0145728Z     
2021-06-11T06:37:45.0145999Z             result = runner.invoke(config.config.commands["interface"].\
2021-06-11T06:37:45.0147828Z                 commands["breakout"], ['{}'.format(interface), '{}'.format(newMode), '-v',\
2021-06-11T06:37:45.0149095Z                 '-f', '-l', '-y'], obj=obj)
2021-06-11T06:37:45.0149545Z     
2021-06-11T06:37:45.0150012Z             print(result.exit_code, result.output)
2021-06-11T06:37:45.0150525Z             assert result.exit_code == 0
2021-06-11T06:37:45.0151829Z             assert 'Breakout process got successfully completed.' in result.output
2021-06-11T06:37:45.0152331Z     
2021-06-11T06:37:45.0153231Z             brk_cfg_table = db.cfgdb.get_table('BREAKOUT_CFG')
2021-06-11T06:37:45.0154492Z             assert brk_cfg_table["Ethernet4"]["brkout_mode"] == '{}'.format(newMode)
2021-06-11T06:37:45.0155653Z             assert brk_cfg_table["Ethernet8"]["brkout_mode"] == '1x50G(2)+2x25G(2)'
2021-06-11T06:37:45.0156227Z             return
2021-06-11T06:37:45.0158004Z         '''
2021-06-11T06:37:45.0158598Z             END OF INNER FUNCTIONS
2021-06-11T06:37:45.0159422Z         '''
2021-06-11T06:37:45.0159885Z     
2021-06-11T06:37:45.0161105Z         # Ethernet8: start from 4x25G-->2x50G with -f -l
2021-06-11T06:37:45.0161716Z >       config_dpb_port8_4x25G_2x50G_f_l()
2021-06-11T06:37:45.0161975Z 
2021-06-11T06:37:45.0162391Z tests/config_dpb_test.py:680: 
2021-06-11T06:37:45.0162961Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2021-06-11T06:37:45.0163303Z 
2021-06-11T06:37:45.0163726Z     def config_dpb_port8_4x25G_2x50G_f_l():
2021-06-11T06:37:45.0164319Z     
2021-06-11T06:37:45.0164634Z         # Input Data
2021-06-11T06:37:45.0165427Z         interface = 'Ethernet8'
2021-06-11T06:37:45.0165860Z         curMode = '4x25G[10G]'
2021-06-11T06:37:45.0166255Z         newMode = '2x50G'
2021-06-11T06:37:45.0166460Z     
2021-06-11T06:37:45.0167024Z         print("Mocked Child ports data-> {}".format([get_child_ports_mock(interface, curMode), get_child_ports_mock(interface, newMode)]))
2021-06-11T06:37:45.0167393Z     
2021-06-11T06:37:45.0167617Z         config.get_child_ports = mock.MagicMock(
2021-06-11T06:37:45.0168128Z             side_effect = [get_child_ports_mock(interface, curMode), get_child_ports_mock(interface, newMode)])
2021-06-11T06:37:45.0168586Z     
2021-06-11T06:37:45.0169046Z         result = runner.invoke(config.config.commands["interface"].\
2021-06-11T06:37:45.0169752Z             commands["breakout"], ['{}'.format(interface), '{}'.format(newMode), '-v', '-f',\
2021-06-11T06:37:45.0170400Z              '-l', '-y'], obj=obj)
2021-06-11T06:37:45.0170624Z     
2021-06-11T06:37:45.0171049Z         print(result.exit_code, result.output)
2021-06-11T06:37:45.0171317Z         assert result.exit_code == 0
2021-06-11T06:37:45.0171866Z >       assert 'Breakout process got successfully completed.' in result.output
2021-06-11T06:37:45.0174901Z E       assert 'Breakout process got successfully completed.' in '\nRunning Breakout Mode : 4x25G[10G] \nTarget Breakout Mode : 2x50G\n\nPorts to be deleted : \n {\n    "Ethernet8": "...ate data tree\nData Validation Failed\n[ERROR] Port breakout Failed!!! Opting Out\nFailed to break out Port. Error: \n'
2021-06-11T06:37:45.0177700Z E        +  where '\nRunning Breakout Mode : 4x25G[10G] \nTarget Breakout Mode : 2x50G\n\nPorts to be deleted : \n {\n    "Ethernet8": "...ate data tree\nData Validation Failed\n[ERROR] Port breakout Failed!!! Opting Out\nFailed to break out Port. Error: \n' = <Result okay>.output
2021-06-11T06:37:45.0179019Z 
2021-06-11T06:37:45.0179559Z tests/config_dpb_test.py:517: AssertionError
2021-06-11T06:37:45.0180637Z ---------------------------- Captured stdout setup -----------------------

@jleveque
Copy link
Contributor

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@liat-grozovik
Copy link
Collaborator

@prsunny can you please help with the vs tests stability?

@prsunny
Copy link
Contributor

prsunny commented Jun 14, 2021

@prsunny can you please help with the vs tests stability?

passing in latest try

@liat-grozovik liat-grozovik merged commit 87bdc1a into sonic-net:master Jun 15, 2021
@stephenxs stephenxs deleted the sdk-python-2-n-3 branch June 15, 2021 15:10
qiluo-msft pushed a commit that referenced this pull request Jun 16, 2021
…hon2 and python3 (#7848)

- Why I did it
Adjust the Makefile for SDK/python-SDK-API to support both python2 and python3

- How to verify it
Build the image and check whether python2 and python3 are both supported by SDK API.

Signed-off-by: Stephen Sun <stephens@nvidia.com>
Junchao-Mellanox pushed a commit to Junchao-Mellanox/sonic-buildimage that referenced this pull request Jun 24, 2021
…hon2 and python3 (sonic-net#7848)

- Why I did it
Adjust the Makefile for SDK/python-SDK-API to support both python2 and python3

- How to verify it
Build the image and check whether python2 and python3 are both supported by SDK API.

Signed-off-by: Stephen Sun <stephens@nvidia.com>
vivekrnv pushed a commit to vivekrnv/sonic-buildimage that referenced this pull request Jul 9, 2021
…hon2 and python3 (sonic-net#7848)

- Why I did it
Adjust the Makefile for SDK/python-SDK-API to support both python2 and python3

- How to verify it
Build the image and check whether python2 and python3 are both supported by SDK API.

Signed-off-by: Stephen Sun <stephens@nvidia.com>
carl-nokia pushed a commit to carl-nokia/sonic-buildimage that referenced this pull request Aug 7, 2021
…hon2 and python3 (sonic-net#7848)

- Why I did it
Adjust the Makefile for SDK/python-SDK-API to support both python2 and python3

- How to verify it
Build the image and check whether python2 and python3 are both supported by SDK API.

Signed-off-by: Stephen Sun <stephens@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants