From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 697E1A0032; Wed, 14 Sep 2022 09:37:45 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0A32840151; Wed, 14 Sep 2022 09:37:45 +0200 (CEST) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mails.dpdk.org (Postfix) with ESMTP id 435D540141 for ; Wed, 14 Sep 2022 09:37:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1663141063; x=1694677063; h=date:from:to:cc:subject:message-id:references: content-transfer-encoding:in-reply-to:mime-version; bh=v2vx2fLhtBUSe42LHHRLIX2ceATJ2ksNVwyNEG6iBt0=; b=V9/4ygiva3Lzj4Z+OiJzrPdltMKEWoviHJmmzBNwvTO6rfsI/jF54RQq kweYB2qa2iDRNophb2ofaTF6GwEX5E7yizysKXbpUil2dR7C0gEhE/S91 0VH89pMI6PACmGkwXPRZbwKAmxRvMKTuvH3xk+m4KrDbYoQXd2n+MM1qE TKS5rdmIU+zErlDw3qQO5phVif8Tv/QcPksw96ay75OkEBRzEkaH/lq5f baPPW9MfJLzL/YIpdgOKHiWwGNDC/hHHo+G4Zn6y71Utxagk/lCrKWPxz Hr4+7aMukCdlO19Q9oV+Zh+a3eVPgcWvXFCPqbKxbMKmy97uqu1g7ehRn Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10469"; a="362325219" X-IronPort-AV: E=Sophos;i="5.93,313,1654585200"; d="scan'208";a="362325219" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Sep 2022 00:37:38 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,313,1654585200"; d="scan'208";a="720487377" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by fmsmga002.fm.intel.com with ESMTP; 14 Sep 2022 00:37:38 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Wed, 14 Sep 2022 00:37:38 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Wed, 14 Sep 2022 00:37:37 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Wed, 14 Sep 2022 00:37:37 -0700 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (104.47.56.41) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Wed, 14 Sep 2022 00:37:37 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=einlbZAaLv5CjKI6A0qnjZrxLWIwBQW8xaDx9b6rfQjBk4Z+xRX7T2HUYd1K67Q87z2MMdxB6nYIcg/GCoLBuU6ot1tGN3x9Q631lH7Qzj6BtQZAxx10OQ8X6Nn721NEqPARcosK6J1T6tdXUWhbWSkDqO5e+oaxEgJhCF7W3RA+urxcWZhyObrWwm6wyRjRFxxjeKiQN6QSpaOEwhsakCERA3bY98DgV3PtQPQCvZWkaxKXOiBJ/14DTqwz/IghE9Ub2Y9J218bMV3fTFT/MIm1getGV28T1LaCRviI3Pg60bPMW0f22cJjxi+v5oU9a8/htH9VEiZvTtw33Ug1Sg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=R5pvK/KwhD3XkYcCMZWCaC1KKVa1Ue+bw2mFIGemkgc=; b=UFJQpOEoahJkMpvSnP1BwdYOaBROhJsYNyp0/23fx3WmcJf6sKKbtvZNqGiq7Atk4HPg3m60K7FWy0z6uk6GRfQ+e8UeaV5Z1cRoUKA8XBL9B0/ysSpZ0bX2lgcysRXYXq89UCD4Jbe0+S31DaSL0ITFoXgzHOvICfGT+dOnE2g+ZlBYhxK9lyfcBNhFCp9E4AGYHHmEB/QP0xyGNYRrIfY6LpOuOb29IxcZpMtF1OjXkUgWiPtGCcCTSEnZchmCuvP+PwrQu0fpEXQ2CuquKmVteJiBCiDqO2Rs9ontiXXFn2SCPVzGktDHcRNI+PZ40iqnvaCP2VUh+BND5jctMw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from MWHPR11MB1629.namprd11.prod.outlook.com (2603:10b6:301:d::21) by DM8PR11MB5605.namprd11.prod.outlook.com (2603:10b6:8:26::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.12; Wed, 14 Sep 2022 07:37:35 +0000 Received: from MWHPR11MB1629.namprd11.prod.outlook.com ([fe80::13c:8120:d994:16d2]) by MWHPR11MB1629.namprd11.prod.outlook.com ([fe80::13c:8120:d994:16d2%6]) with mapi id 15.20.5612.022; Wed, 14 Sep 2022 07:37:35 +0000 Date: Wed, 14 Sep 2022 08:37:28 +0100 From: Bruce Richardson To: Honnappa Nagarahalli CC: Juraj =?utf-8?Q?Linke=C5=A1?= , "thomas@monjalon.net" , "david.marchand@redhat.com" , "ronan.randles@intel.com" , "ohilyard@iol.unh.edu" , "lijuan.tu@intel.com" , "dev@dpdk.org" , nd Subject: Re: [PATCH v4 2/9] dts: add developer tools Message-ID: References: <20220728100044.1318484-1-juraj.linkes@pantheon.tech> <20220729105550.1382664-1-juraj.linkes@pantheon.tech> <20220729105550.1382664-3-juraj.linkes@pantheon.tech> <5fa9cd15e3204c4bbbcaa3b2d53a9736@pantheon.tech> Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-ClientProxiedBy: DB6PR07CA0194.eurprd07.prod.outlook.com (2603:10a6:6:42::24) To MWHPR11MB1629.namprd11.prod.outlook.com (2603:10b6:301:d::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWHPR11MB1629:EE_|DM8PR11MB5605:EE_ X-MS-Office365-Filtering-Correlation-Id: dd8a4446-b9a5-4f85-73af-08da9623fdda X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: aRRowK/Bo+sSj/S3vnfq61zlX4mtayOlFSSlMbj93PxKiP+xPwQYSk3aHB8PYKLQh7XC3/U8mabIeVKn4UDaLiU3ZA4wpNn13joeAvaxJWuucgQ526OVc9DjE5yjw0ox0dJ1dmyZHAZBCaoqrV3vQTEUDPnImWfZbb2EobYNm4SwADaIlr6Fef/bmfrN9vpONp2lx34f6yLrMxIkkaWNseWuR4Lyd5XunnzsZbfCsLSnY6HeIIwwiyvS/R3pEPa2kz3OMsmes3q2XW9bEJdGX7HSgLttfTxT7TFDbX6IBlegs9yqIQJzoYEgeaM0t8w9ZWp9K36vyKxlD5/7JdJGW44YVIRTttHcDwLHvbb7/LI8fyuw2iYET6z0UK8YEn3LuQiZeo0HQHrL9DyYUD7sPoHft3YVGNFqDVPtrQn5dJd6zutHcRLtLUVoxjQqmTZ3E8y4Nqd0KPydDrTktodN59nZdaWHidl8gAypZKVX41AqZ8yJZs9QK4m2WBZJb97az8lni95mVUwt13gyJXVTD8B4ZVUKEB4i+Lk5qELY5ms3ZFv/mb9gcPubc2SMte5Zk0J/15vEkV9f0jQfgP41gZhhjC/G7WECNSnyBTGJa34B7EMPOLcJ0f7koauSEMl+teKaGsc22/FkveXZ3EDUoQ43lh+dPNNVXQH6Lnt92HsF54SrlRhbee6lYyCoi6StGBAdM8hpKg4s0rZDY+yPNoqejIthMj7/pDxuHxLHq3QYxvHsC6DrXfnAWd8R5oJw+f4MNUq/bqM9oSAKFlkZEw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MWHPR11MB1629.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(136003)(366004)(39860400002)(396003)(346002)(376002)(451199015)(6512007)(186003)(6486002)(26005)(45080400002)(83380400001)(6666004)(8936002)(6506007)(41300700001)(86362001)(478600001)(966005)(82960400001)(8676002)(2906002)(5660300002)(66946007)(38100700002)(54906003)(44832011)(316002)(66556008)(6916009)(4326008)(66476007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UGlrZUxVbXZSTDJSblFlNExsNDloaVo0bVE0NUNOWEs5SEI4ZGl2bE8wMUx2?= =?utf-8?B?eEdXaERDTGV4eXZxM3lCM2V4dmVzYm1WQ3kyMGN3R1FuRGpRUXd6YUs2RHdX?= =?utf-8?B?YzVJeGcxbUs4dFJ4UE1iUXE5Rm5WMEhXVFVqOWJxdDBXWGs2U2pXMEE4Mzdq?= =?utf-8?B?b2JqTDcwaThBbjRnNlVKVWJiVVF5bFg2bjZQeEo1T3dFc1pkdmk3UzZ3S2Ry?= =?utf-8?B?cUVxRml4MGJGMmF1OGExczNZVG9RL2E5QTNlM2ovckxVK0JkUkNaOVl2aEh1?= =?utf-8?B?bnNGazA4VFI3R1h5UStSMnlTNnJxN3ZDS2JRK01uaVJ5eGg4QVFqdUJ0cy9o?= =?utf-8?B?UXVZNDFWRGM3Q3U2TWl5Q1FBUjhoRk94dUI5bTcrZzFBbjNjWEozdWpHNHZ0?= =?utf-8?B?QnFNUnJmZUpYeERzc1VZa25hblU5RHpMaXJsemVEc3dVWlhuZGdxM3BKdDhR?= =?utf-8?B?dURzYmNjQ3h0RlBwUGorakFXN29jOXZ3RVBsU0VKWGtVeTI0Z0hkdXUwM1Bp?= =?utf-8?B?czlkeEZ2VmlpRHhpUWVjMDdOUm9aVmFhSWs1d0l1WlpyVlhzMGllaE55RE91?= =?utf-8?B?OTJidzE4K3JOSGVSajJMTjVUeG40bm0ycHFNdnFSc1c1NWNkR3JJZnFlNVVC?= =?utf-8?B?ZDVZYlh4M1MwRGhDSTd2dTBOaDBPSmVQS3JBaTlVUHdGRXBMR2pTS2xjOXlP?= =?utf-8?B?cXppN0FzZHhhNUFPNnpLRTZ2UXV1a3Nub0RHcXhXd3JUOW5KeDVaSXFaUThh?= =?utf-8?B?SU9UOGJMNWFDYTBMNXorUnJLOTQ4SW5saEwrRW93UVhZQkNqTUc1d2pPeXNn?= =?utf-8?B?WERZTWRPbVc5U2tJbUVTVFVpMm1MU00vckQvTEhxVEVWUDZOeWdXcVRGakNn?= =?utf-8?B?T0FKeTdGQ01IY21KTThDSVMvM2tGU050Z3lwU2lFNU1UUUpTUWNqY3EyQTBC?= =?utf-8?B?Zi8rcXBYTDZEKzJXcTF6eVczVThVWXRKQjRFODB4SDN6Rldmd2ZnTTBzeWZR?= =?utf-8?B?dTd0dnZweGVGZENobVpwYXpWMjNOTEt4bFMrVnUvcE91eC81OEk2ZXdyMFFi?= =?utf-8?B?Ny95ZmVrdE14eE9aWVlBT3RneDAxaEQ1Q0xVYTh5WDVLOVQyV2RFRVZ1cnVj?= =?utf-8?B?YTBrTm9kaVp0cVU2VlRVZFc5MnFhMHcyak1OdDRaT0c1anFGOXJRWHc5ZTRk?= =?utf-8?B?TkpCWW9jUVJHZFRKUndMUnhNSFVjMzVyM3hZb0plZGRuY2lZWFdXRDhVMjBm?= =?utf-8?B?d1p2VGk4ekozZ2ZMN3lWVHFXaERtakNJOEd1UU1DbU9BQ3RRaVRaU3VJRVRo?= =?utf-8?B?Umt1OTFmREJ2eVQ5UWdOTzZWVkFsK3ZwQkp0Q3JwTERQNFprNHNaNWFGYjVS?= =?utf-8?B?TkxYdHZkOWg2RDBiakdWQ3ZGYmVrM1ZOREV3WC9jWGlsenk0STQwSGEvYkVG?= =?utf-8?B?NzlRYUdhQWlCcG5ML3pPUTF3VXZiVDFaTnpXcjZRU1NhL2ZlUUNKWm5EY3B0?= =?utf-8?B?TUl5eDFGeG5ZSWwzdGJON1VzWGdmWWtzSytMQTRTUmJYako4WVV0bTNvcUhP?= =?utf-8?B?OVo4MDk0SkxKeCtEb01ka3dJMzhCKzh5RWlBdXAraEdDcU1ocGhIMjVoZmJw?= =?utf-8?B?ZFUxRWx2cjNmcExMU2Q0RkdXamlBaW96elpPLzZBRTVPbE43YVBibHM1NVhH?= =?utf-8?B?Q3Z0c0o5QktvckRWeHlBelljWk1vRzJkMG9RSjhodGQ4dTAvOUtHdDJqVWxz?= =?utf-8?B?ZTBzYW9GcS9rQnR6Sys2dWN1RENVYzZlb0NzSnBFZDNhYjhiRlhtaTFFaExT?= =?utf-8?B?WEh6UXFKaW0yVVZxcU9VMythS0VXb3J5Ym0zSWpqUTFubmFkRXlWYmlacmxw?= =?utf-8?B?YWFvVmpqbnhpY2Fwc1lBOURva0NvUzRsMkZWeTh0eW0yU1dsNDhNRGoycWVq?= =?utf-8?B?K1dlSDI3MjJ1UkRHclE5RmdyOXlvNnRBR3p1b3l0dE1lV095Vyt5Y3JVdlZJ?= =?utf-8?B?UjVMdzZmcmRlQ2dyS2hDVDNpQ3BOa3ZQcThrUnhpdmRiSHM1Nzh4QkwxQWJh?= =?utf-8?B?MWtIc1pYbnFnQ3lLYTVVOHlQUGVmUEZuSEZ4N3lOdEhSVzNnekhuNUZIdHVI?= =?utf-8?B?NlltbmZ4eDloQ3ZFbWtSY3VaczFTNVZnVVBIK0RwSUJ4Y1N3Z1RKQ3dlWnUz?= =?utf-8?B?ZXc9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: dd8a4446-b9a5-4f85-73af-08da9623fdda X-MS-Exchange-CrossTenant-AuthSource: MWHPR11MB1629.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Sep 2022 07:37:35.4882 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: phwLBIpO2OhPzjKH9MDmPcVeI+DnST53fqcq4vqaA6RHK1HlKi+KZihv2XpracwF+DWk6APUoxtF2VaRhHr1Aa4Vf7U+D7n8vqHsxch1z4o= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR11MB5605 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org On Tue, Sep 13, 2022 at 08:38:06PM +0000, Honnappa Nagarahalli wrote: > (I have lost the original patch emails due to quarantine policy, apologies for using this thread for my comments) > > > > > > > > > On Fri, Jul 29, 2022 at 10:55:43AM +0000, Juraj Linkeš wrote: > > > > The Dockerfile contains basic image for CI and developers. There's > > > > also an integration of the Dockerfile with Visual Studio. > > > > > > > > The formatter script uses Black and Isort to format the Python code. > > > > > > > > Signed-off-by: Owen Hilyard > > > > Signed-off-by: Juraj Linkeš > > > > > > Comments inline below. > > > > > > Thanks, > > > /Bruce > > > > > > > --- > > > > dts/.devcontainer/devcontainer.json | 30 ++++++++++++ > > > > dts/Dockerfile | 38 +++++++++++++++ > > > > dts/README.md | 74 ++++++++++++++++++++++++++++- > > > > dts/format.sh | 45 ++++++++++++++++++ > > > > 4 files changed, 186 insertions(+), 1 deletion(-) create mode > > > > 100644 dts/.devcontainer/devcontainer.json > > > > create mode 100644 dts/Dockerfile > > > > create mode 100755 dts/format.sh > > > > > > > > diff --git a/dts/.devcontainer/devcontainer.json > > > > b/dts/.devcontainer/devcontainer.json > > > > new file mode 100644 > > > > index 0000000000..41ca28fc17 > > > > --- /dev/null > > > > +++ b/dts/.devcontainer/devcontainer.json > > > > @@ -0,0 +1,30 @@ > > > > +// For format details, see https://aka.ms/devcontainer.json. For > > > > +config > > > options, see the README at: > > > > +// > > > > +https://github.com/microsoft/vscode-dev-containers/tree/v0.241.1/co > > > > +nt > > > > +ainers/docker-existing-dockerfile > > > > +{ > > > > + "name": "Existing Dockerfile", > > > > + > > > > + // Sets the run context to one level up instead of the > > > > +.devcontainer > > > folder. > > > > + "context": "..", > > > > + > > > > + // Update the 'dockerFile' property if you aren't using the > > > > +standard > > > 'Dockerfile' filename. > > > > + "dockerFile": "../Dockerfile", > > > > + > > > > + // Use 'forwardPorts' to make a list of ports inside the container > > > available locally. > > > > + // "forwardPorts": [], > > > > + > > > > + // Uncomment the next line to run commands after the container is > > > created - for example installing curl. > > > > + "postCreateCommand": "poetry install", > > > > + > > > > + "extensions": [ > > > > + "ms-python.vscode-pylance", > > > > + ] > > > > + > > > > + // Uncomment when using a ptrace-based debugger like C++, Go, and > > > Rust > > > > + // "runArgs": [ "--cap-add=SYS_PTRACE", "--security-opt", > > > > +"seccomp=unconfined" ], > > > > + > > > > + // Uncomment to use the Docker CLI from inside the container. See > > > https://aka.ms/vscode-remote/samples/docker-from-docker. > > > > + // "mounts": [ > > > > +"source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind" > > > > +], > > > > + > > > > + // Uncomment to connect as a non-root user if you've added one. > > > > +See > > > https://aka.ms/vscode-remote/containers/non-root. > > > > + // "remoteUser": "vscode" > > > > +} > > > > diff --git a/dts/Dockerfile b/dts/Dockerfile new file mode 100644 > > > > index 0000000000..6700aa45b8 > > > > --- /dev/null > > > > +++ b/dts/Dockerfile > > > > @@ -0,0 +1,38 @@ > > > > +# SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2022 > > > > +University of New Hampshire # > > > > + > Is it possible to add some text here talking about the use of this file? > > > > > +FROM ubuntu:22.04 AS base > > > > + > > > > +RUN apt-get -y update && apt-get -y upgrade && \ > > > > + apt-get -y install --no-install-recommends \ > > > > + python3 \ > > > > + python3-pip \ > > > > + python3-pexpect \ > > > > + python3-poetry \ > > > > + python3-cachecontrol \ > > > > + openssh-client > > > > + > > > > + > > > > +FROM base AS runner > > > > + > > > > +# This container is intended to be used as the base for automated systems. > > > > +# It bakes DTS into the container during the build. > > > > + > > > > +RUN mkdir /dts > > > > +COPY ./pyproject.toml /dts/pyproject.toml COPY ./poetry.lock > > > > +/dts/poetry.lock WORKDIR /dts RUN poetry install --no-dev COPY . > > > > +/dts > > > > > > Two questions here: > > > * if we copy over the current folder, does it re-copy the same two files > > > above, or do we get a new subfolder with the same name as the current > > > one (and the two files in that instead)? > > > * Can the commands be re-ordered so that we have all the copies together > > > rather than being split either side of the workdir and run commands? > > > > > > > Yea, we don't need to copy the two files individually - we only need to copy the > > whole dts folder. I'll move the commands. > > > > > > + > > > > +CMD ["poetry", "run", "python", "main.py"] > > > > + > > > > +FROM base AS dev > > > > + > > > > +# This container is intended to be used as a development environment. > May be s/development environment/DTS development environment/ > > > > > + > > > > +RUN apt-get -y install --no-install-recommends \ > > > > + vim emacs git > > > > + > > > If it's to be used as a development environment, do we not need > > > build-essential installed? > > > > > > > It's meant to be a DTS development environment and we don't need to build > > anything for that, so no need for build-essential. > The above addition will clarify this. > I would still make it explicit. Change "dev env" to "DTS dev env" as you suggest, but also add that it requires python only, and not C compilation capability. /Bruce