swift-build-dev Digest, Vol 9, Issue 5


(Jason Kristian) #1

I agree there are tool's out there now to run linux and maybe adding to package manager is not the way to go I was just giving example on one method to configure. The main Idea is to be able to test and build on os x. Now using a vm that is not run on top or docker or vmware , virtual box etc gives a more seamless usage experience.

The way I see it working is via a XCP process that can startup a vm using HyperVisor framework and when running the current folder can be mounted to the VM. this would let you build / run / test .

Now going a bit off topic Xcode developer could build on top of this to integrate with Xcode (i know that not a swift-build-dev product or concern).

Im happy to start a proof of concept that this could work only if the community would be interested in a feature like this.

What I'm trying to overcome is the time taken daily where I'm creating docker images starting all the time and not able to run test with out setting up a vm.
I might be given a project to look at only to see they have different Docker image so Im then having to download that image to run the project.

Option 2 - is a quicker option like you said but that is not the issue I was trying to overcome , not just cross compiling but to be able have a project that I can just build and run while at the same time I have a IOS target that is running and calling code in the Linux target while being able test.

Now maybe I'm under estimating the work that is required to archive this but what I see this working like will be much loved feature.

So please comment. The more opinion's the better.

···

On 2016-08-16 03:00, swift-build-dev-request@swift.org wrote:

Send swift-build-dev mailing list submissions to
  swift-build-dev@swift.org

To subscribe or unsubscribe via the World Wide Web, visit
  https://lists.swift.org/mailman/listinfo/swift-build-dev
or, via email, send a message with subject or body 'help' to
  swift-build-dev-request@swift.org

You can reach the person managing the list at
  swift-build-dev-owner@swift.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of swift-build-dev digest..."

Today's Topics:

   1. Re: Build Linux app on Mac Os X (Daniel Dunbar)

----------------------------------------------------------------------

Message: 1
Date: Sun, 14 Aug 2016 20:09:26 -0700
From: Daniel Dunbar <daniel_dunbar@apple.com>
To: jasonk@apps4u.com.au
Cc: "swift-build-dev@swift.org" <swift-build-dev@swift.org>
Subject: Re: [swift-build-dev] Build Linux app on Mac Os X
Message-ID: <06EF389C-408D-4CD4-85E8-1D78DA5ECA04@apple.com>
Content-Type: text/plain; charset="utf-8"

I think this proposal is a little more complicated than necessary.

Using Hypervisor directly doesn't really seem in the realm of the
package manager to do, especially when there are nicely packaged tools
like Docker for Mac which basically handle all of that.

I can imagine an interesting feature where the package manager had the
ability to compile for Linux in one of two ways:

1. The approach described, using some kind of virtualization to be
able to actually execute the build on Linux. This would have the
advantage that the tests and executables could also be run. However,
this would also be rather complicated and I'm not sure it is
ultimately the right place to solve this problem.

2. We could support cross-compiling to Linux. This would fit clearly
in our feature set, and would also be a lot easier to make robust and
with a good user experience. However, this wouldn't help with the
ability to run tests...

In either case, I don't know of anyone actively trying to tackle
features in these areas...

- Daniel

On Aug 13, 2016, at 5:46 PM, apps4u via swift-build-dev >> <swift-build-dev@swift.org> wrote:

HI I submited a proposal to the Swift Mailing list when it a build feature. So Ive inclued the original message but Im going to rewrite so I could be a bit more clear.

I have a propoal of using the new Hypervisor.framework to enable Swift Linux build's on Os X. So at the monment there is a need to use 3rd party tools (VM, Docker) to run a linux kernel on Os x to build Swift Liunx server app's. Now I was thinking that with the release of Hypervisor.framework that this could now be achive in a clean and transparent way.

So the main idea is to have the abilty to create a linux target but when building and running instead of running on the Mac kernel a small liunx kernel can be started as a headless background process and the app would build and run within that vm. So the folder to the project could be mounted with in the Linux vm. Hypervisor.framework is perfect for this sort of enbeding. It could be inbeded as a XPC proecess so that Linux VM would be used for all project's.
The target should be able to be configured by user to pick if it runs on OS X or Linux.

This could Also be tied into the Package Manager where there could be a option to set the packages target runtime.

Also to start with I don't think this would need to be under full user control, What I mean by that I would not let the user pick the Linux OS or packages that are installed etc. I think the Linux os should include a common set of software eg: CURL, OpenSSL , etc. just the common set of software.

or if people think otherwise that it could have full user control of Linux OS and installed Software.

But My thought is to keep it simple and small so its as fast as possiable and at the end of the Day user should always Test on the Production OS which can be done using the current method's of running Linux on a VM or Cloud provider or Container.

I think that this would make the developer experance even better and add a valuable feature to Swift Package Manager.

Now Where I made the mistake in the other post to bring up XCode how this could then enable Builld/Run/Debug of a Linux target. I only brought that up to explain the current process which requires docker or some vm software to be setup and some build scripts to get it to work which is a bit of effort for each project.

-------------------------------------------------------------------------------------------------------
FROM SWIFT MAILING LIST
-------------------------------------------------------------------------------------------------------

Sorry I just noticed the Swift Build mailing list . would that be a better place . Now Xcode would not need to be inclued as that's a apple product so Im was just using a example on how it could be use the Main feature request is to have Swift build use Hypervisor.Framework to work with Swift build to be able to build a Linux project on Os X with out having to create your own VM or container to run a linux kernel.

So Im going to send this to the Swift Build Mailing list.

August 14 2016 10:17 AM, "Félix Cloutier" <felixcca@yahoo.ca <mailto:%22F%C3%A9lix%20Cloutier%22%20<felixcca@yahoo.ca>>> wrote:
The swift-evolution mailing list is about the language itself, Xcode is independent. I don't know where you could try to push that suggestion.

Félix

Le 13 août 2016 à 16:40:42, apps4u via swift-evolution <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> a écrit :
I have a Proposal but I'm not sure if Its the right place to propose but as it has to do with building Swift So I'm going to submit here. So Please let me know if that is not the place to propose this feature. As it includes Xcode.

Ok So this is a proposal for being able to build swift for linux on Mac Os X in Xcode just like a native target.

With the release of Hypervisor.framework It would be good if from within Xcode I can create a project with a Linux Target and when clicking Build and run it create a VM running a small linux Kernel using Hypervisor.framework.
By using Hypervisor.framework it would be better integrated into the tools as it has a small foot print. The idea would be to have the VM downloaded before a build. The linux VM should be small and only have the required software to test a server and using the hypervisor.framework the project build folder can be attached to the vm at build time so the working with different projects at the same time would not require lots of VM.

Now I know that this would be best if integrated into Xcode and this is the Swift Language mailing list but Swift build is part of the Language.

This could also be used to debugging. Now Its possible now to use Docker to run a linux vm and have a shared folder for your project and some scripts to kick off the build. But it take time to setup per project and is not the Experience i would expect in Xcode.

Now My first thought when I found out about Hypervisor.framework that the reason it was created was to add linux targets to Xcode.

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org <mailto:swift-evolution@swift.org>
https://lists.swift.org/mailman/listinfo/swift-evolution_______________________________________________

swift-build-dev mailing list
swift-build-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-build-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<https://lists.swift.org/pipermail/swift-build-dev/attachments/20160814/aaadc163/attachment-0001.html>

------------------------------

_______________________________________________
swift-build-dev mailing list
swift-build-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-build-dev

End of swift-build-dev Digest, Vol 9, Issue 5
*********************************************

--
Jason Kristian | Director | APPS 4 U PTY LTD.
ph: +61 075699 8109
mob: +61 0411 389 392
e: Jason Kristian


(Jason Kristian) #2

I agree there are tool's out there now to run linux and maybe adding
to package manager is not the way to go I was just giving example on
one method to configure. The main Idea is to be able to test and build
on os x. Now using a vm that is not run on top or docker or vmware ,
virtual box etc gives a more seamless usage experience.

The way I see it working is via a XCP process that can startup a vm
using HyperVisor framework and when running the current folder can be
mounted to the VM. this would let you build / run / test .

Now going a bit off topic Xcode developer could build on top of this
to integrate with Xcode (i know that not a swift-build-dev product or
concern).

Im happy to start a proof of concept that this could work only if the
community would be interested in a feature like this.

What I'm trying to overcome is the time taken daily where I'm creating
docker images starting all the time and not able to run test with out
setting up a vm.
I might be given a project to look at only to see they have different
Docker image so Im then having to download that image to run the
project.

Option 2 - is a quicker option like you said but that is not the issue
I was trying to overcome , not just cross compiling but to be able
have a project that I can just build and run while at the same time I
have a IOS target that is running and calling code in the Linux target
while being able test.

Now maybe I'm under estimating the work that is required to archive
this but what I see this working like will be much loved feature.

So please comment. The more opinion's the better.

Send swift-build-dev mailing list submissions to
  swift-build-dev@swift.org

To subscribe or unsubscribe via the World Wide Web, visit
  https://lists.swift.org/mailman/listinfo/swift-build-dev
or, via email, send a message with subject or body 'help' to
  swift-build-dev-request@swift.org

You can reach the person managing the list at
  swift-build-dev-owner@swift.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of swift-build-dev digest..."

Today's Topics:

   1. Re: Build Linux app on Mac Os X (Daniel Dunbar)

----------------------------------------------------------------------

Message: 1
Date: Sun, 14 Aug 2016 20:09:26 -0700
From: Daniel Dunbar <daniel_dunbar@apple.com>
To: jasonk@apps4u.com.au
Cc: "swift-build-dev@swift.org" <swift-build-dev@swift.org>
Subject: Re: [swift-build-dev] Build Linux app on Mac Os X
Message-ID: <06EF389C-408D-4CD4-85E8-1D78DA5ECA04@apple.com>
Content-Type: text/plain; charset="utf-8"

I think this proposal is a little more complicated than necessary.

Using Hypervisor directly doesn't really seem in the realm of the
package manager to do, especially when there are nicely packaged tools
like Docker for Mac which basically handle all of that.

I can imagine an interesting feature where the package manager had the
ability to compile for Linux in one of two ways:

1. The approach described, using some kind of virtualization to be
able to actually execute the build on Linux. This would have the
advantage that the tests and executables could also be run. However,
this would also be rather complicated and I'm not sure it is
ultimately the right place to solve this problem.

2. We could support cross-compiling to Linux. This would fit clearly
in our feature set, and would also be a lot easier to make robust and
with a good user experience. However, this wouldn't help with the
ability to run tests...

In either case, I don't know of anyone actively trying to tackle
features in these areas...

- Daniel

HI I submited a proposal to the Swift Mailing list when it a build feature. So Ive inclued the original message but Im going to rewrite so I could be a bit more clear.

I have a propoal of using the new Hypervisor.framework to enable Swift Linux build's on Os X. So at the monment there is a need to use 3rd party tools (VM, Docker) to run a linux kernel on Os x to build Swift Liunx server app's. Now I was thinking that with the release of Hypervisor.framework that this could now be achive in a clean and transparent way.

So the main idea is to have the abilty to create a linux target but when building and running instead of running on the Mac kernel a small liunx kernel can be started as a headless background process and the app would build and run within that vm. So the folder to the project could be mounted with in the Linux vm. Hypervisor.framework is perfect for this sort of enbeding. It could be inbeded as a XPC proecess so that Linux VM would be used for all project's.
The target should be able to be configured by user to pick if it runs on OS X or Linux.

This could Also be tied into the Package Manager where there could be a option to set the packages target runtime.

Also to start with I don't think this would need to be under full user control, What I mean by that I would not let the user pick the Linux OS or packages that are installed etc. I think the Linux os should include a common set of software eg: CURL, OpenSSL , etc. just the common set of software.

or if people think otherwise that it could have full user control of Linux OS and installed Software.

But My thought is to keep it simple and small so its as fast as possiable and at the end of the Day user should always Test on the Production OS which can be done using the current method's of running Linux on a VM or Cloud provider or Container.

I think that this would make the developer experance even better and add a valuable feature to Swift Package Manager.

Now Where I made the mistake in the other post to bring up XCode how this could then enable Builld/Run/Debug of a Linux target. I only brought that up to explain the current process which requires docker or some vm software to be setup and some build scripts to get it to work which is a bit of effort for each project.

-------------------------------------------------------------------------------------------------------
FROM SWIFT MAILING LIST
-------------------------------------------------------------------------------------------------------

Sorry I just noticed the Swift Build mailing list . would that be a better place . Now Xcode would not need to be inclued as that's a apple product so Im was just using a example on how it could be use the Main feature request is to have Swift build use Hypervisor.Framework to work with Swift build to be able to build a Linux project on Os X with out having to create your own VM or container to run a linux kernel.

So Im going to send this to the Swift Build Mailing list.

August 14 2016 10:17 AM, "Félix Cloutier" <felixcca@yahoo.ca The swift-evolution mailing list is about the language itself, Xcode is independent. I don't know where you could try to push that suggestion.

Félix

Le 13 août 2016 à 16:40:42, apps4u via swift-evolution <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> a écrit :
I have a Proposal but I'm not sure if Its the right place to propose but as it has to do with building Swift So I'm going to submit here. So Please let me know if that is not the place to propose this feature. As it includes Xcode.

Ok So this is a proposal for being able to build swift for linux on Mac Os X in Xcode just like a native target.

With the release of Hypervisor.framework It would be good if from within Xcode I can create a project with a Linux Target and when clicking Build and run it create a VM running a small linux Kernel using Hypervisor.framework.
By using Hypervisor.framework it would be better integrated into the tools as it has a small foot print. The idea would be to have the VM downloaded before a build. The linux VM should be small and only have the required software to test a server and using the hypervisor.framework the project build folder can be attached to the vm at build time so the working with different projects at the same time would not require lots of VM.

Now I know that this would be best if integrated into Xcode and this is the Swift Language mailing list but Swift build is part of the Language.

This could also be used to debugging. Now Its possible now to use Docker to run a linux vm and have a shared folder for your project and some scripts to kick off the build. But it take time to setup per project and is not the Experience i would expect in Xcode.

Now My first thought when I found out about Hypervisor.framework that the reason it was created was to add linux targets to Xcode.

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org <mailto:swift-evolution@swift.org>
https://lists.swift.org/mailman/listinfo/swift-evolution_______________________________________________

swift-build-dev mailing list
swift-build-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-build-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<https://lists.swift.org/pipermail/swift-build-dev/attachments/20160814/aaadc163/attachment-0001.html>

------------------------------

_______________________________________________
swift-build-dev mailing list
swift-build-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-build-dev

End of swift-build-dev Digest, Vol 9, Issue 5
*********************************************

···

On 2016-08-16 21:54, Jason Kristian wrote:

On 2016-08-16 03:00, swift-build-dev-request@swift.org wrote:

On Aug 13, 2016, at 5:46 PM, apps4u via swift-build-dev >>> <swift-build-dev@swift.org> wrote:
<mailto:%22F%C3%A9lix%20Cloutier%22%20<felixcca@yahoo.ca>>> wrote:

--
Jason Kristian | Director | APPS 4 U PTY LTD.
ph: +61 075699 8109
mob: +61 0411 389 392
e: Jason Kristian


(Daniel Dunbar) #3

I would personally be very interested in seeing a prototype of this, even
if just to explore how it could work.

I do still think we shouldn't tackle the Hypervisor portion directly (you
would basically need to reimplement Docker for Mac to do this, as best I
can tell), but should rely on some other service to provide the ability to
bring up the XPC service you mention.

If it was me, I would probably start by assuming there is a VM somewhere
than can run the same version of swift-build, and build up the ability for
one swift-build to be able to talk to that remote one.

- Daniel

···

On Tue, Aug 16, 2016 at 4:56 AM, Jason Kristian via swift-build-dev < swift-build-dev@swift.org> wrote:

On 2016-08-16 21:54, Jason Kristian wrote:

I agree there are tool's out there now to run linux and maybe adding
to package manager is not the way to go I was just giving example on
one method to configure. The main Idea is to be able to test and build
on os x. Now using a vm that is not run on top or docker or vmware ,
virtual box etc gives a more seamless usage experience.

The way I see it working is via a XCP process that can startup a vm
using HyperVisor framework and when running the current folder can be
mounted to the VM. this would let you build / run / test .

Now going a bit off topic Xcode developer could build on top of this
to integrate with Xcode (i know that not a swift-build-dev product or
concern).

Im happy to start a proof of concept that this could work only if the
community would be interested in a feature like this.

What I'm trying to overcome is the time taken daily where I'm creating
docker images starting all the time and not able to run test with out
setting up a vm.
I might be given a project to look at only to see they have different
Docker image so Im then having to download that image to run the
project.

Option 2 - is a quicker option like you said but that is not the issue
I was trying to overcome , not just cross compiling but to be able
have a project that I can just build and run while at the same time I
have a IOS target that is running and calling code in the Linux target
while being able test.

Now maybe I'm under estimating the work that is required to archive
this but what I see this working like will be much loved feature.

So please comment. The more opinion's the better.

On 2016-08-16 03:00, swift-build-dev-request@swift.org wrote:

Send swift-build-dev mailing list submissions to
        swift-build-dev@swift.org

To subscribe or unsubscribe via the World Wide Web, visit
        https://lists.swift.org/mailman/listinfo/swift-build-dev
or, via email, send a message with subject or body 'help' to
        swift-build-dev-request@swift.org

You can reach the person managing the list at
        swift-build-dev-owner@swift.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of swift-build-dev digest..."

Today's Topics:

   1. Re: Build Linux app on Mac Os X (Daniel Dunbar)

----------------------------------------------------------------------

Message: 1
Date: Sun, 14 Aug 2016 20:09:26 -0700
From: Daniel Dunbar <daniel_dunbar@apple.com>
To: jasonk@apps4u.com.au
Cc: "swift-build-dev@swift.org" <swift-build-dev@swift.org>
Subject: Re: [swift-build-dev] Build Linux app on Mac Os X
Message-ID: <06EF389C-408D-4CD4-85E8-1D78DA5ECA04@apple.com>
Content-Type: text/plain; charset="utf-8"

I think this proposal is a little more complicated than necessary.

Using Hypervisor directly doesn't really seem in the realm of the
package manager to do, especially when there are nicely packaged tools
like Docker for Mac which basically handle all of that.

I can imagine an interesting feature where the package manager had the
ability to compile for Linux in one of two ways:

1. The approach described, using some kind of virtualization to be
able to actually execute the build on Linux. This would have the
advantage that the tests and executables could also be run. However,
this would also be rather complicated and I'm not sure it is
ultimately the right place to solve this problem.

2. We could support cross-compiling to Linux. This would fit clearly
in our feature set, and would also be a lot easier to make robust and
with a good user experience. However, this wouldn't help with the
ability to run tests...

In either case, I don't know of anyone actively trying to tackle
features in these areas...

- Daniel

On Aug 13, 2016, at 5:46 PM, apps4u via swift-build-dev < >>>> swift-build-dev@swift.org> wrote:

HI I submited a proposal to the Swift Mailing list when it a build
feature. So Ive inclued the original message but Im going to rewrite so I
could be a bit more clear.

I have a propoal of using the new Hypervisor.framework to enable Swift
Linux build's on Os X. So at the monment there is a need to use 3rd party
tools (VM, Docker) to run a linux kernel on Os x to build Swift Liunx
server app's. Now I was thinking that with the release of
Hypervisor.framework that this could now be achive in a clean and
transparent way.

So the main idea is to have the abilty to create a linux target but
when building and running instead of running on the Mac kernel a small
liunx kernel can be started as a headless background process and the app
would build and run within that vm. So the folder to the project could be
mounted with in the Linux vm. Hypervisor.framework is perfect for this sort
of enbeding. It could be inbeded as a XPC proecess so that Linux VM would
be used for all project's.
The target should be able to be configured by user to pick if it runs
on OS X or Linux.

This could Also be tied into the Package Manager where there could be a
option to set the packages target runtime.

Also to start with I don't think this would need to be under full user
control, What I mean by that I would not let the user pick the Linux OS or
packages that are installed etc. I think the Linux os should include a
common set of software eg: CURL, OpenSSL , etc. just the common set of
software.

or if people think otherwise that it could have full user control of
Linux OS and installed Software.

But My thought is to keep it simple and small so its as fast as
possiable and at the end of the Day user should always Test on the
Production OS which can be done using the current method's of running Linux
on a VM or Cloud provider or Container.

I think that this would make the developer experance even better and
add a valuable feature to Swift Package Manager.

Now Where I made the mistake in the other post to bring up XCode how
this could then enable Builld/Run/Debug of a Linux target. I only brought
that up to explain the current process which requires docker or some vm
software to be setup and some build scripts to get it to work which is a
bit of effort for each project.

------------------------------------------------------------
-------------------------------------------
------------------------------------------------------------
-------------------------------------------
FROM SWIFT MAILING LIST
------------------------------------------------------------
-------------------------------------------
------------------------------------------------------------
-------------------------------------------

Sorry I just noticed the Swift Build mailing list . would that be a
better place . Now Xcode would not need to be inclued as that's a apple
product so Im was just using a example on how it could be use the Main
feature request is to have Swift build use Hypervisor.Framework to work
with Swift build to be able to build a Linux project on Os X with out
having to create your own VM or container to run a linux kernel.

So Im going to send this to the Swift Build Mailing list.

August 14 2016 10:17 AM, "Félix Cloutier" <felixcca@yahoo.ca <mailto:
%22F%C3%A9lix%20Cloutier%22%20<felixcca@yahoo.ca>>> wrote:
The swift-evolution mailing list is about the language itself, Xcode is
independent. I don't know where you could try to push that suggestion.

Félix

Le 13 août 2016 à 16:40:42, apps4u via swift-evolution < >>>>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>> a écrit
:
I have a Proposal but I'm not sure if Its the right place to propose
but as it has to do with building Swift So I'm going to submit here. So
Please let me know if that is not the place to propose this feature. As it
includes Xcode.

Ok So this is a proposal for being able to build swift for linux on
Mac Os X in Xcode just like a native target.

With the release of Hypervisor.framework It would be good if from
within Xcode I can create a project with a Linux Target and when clicking
Build and run it create a VM running a small linux Kernel using
Hypervisor.framework.
By using Hypervisor.framework it would be better integrated into the
tools as it has a small foot print. The idea would be to have the VM
downloaded before a build. The linux VM should be small and only have the
required software to test a server and using the hypervisor.framework the
project build folder can be attached to the vm at build time so the working
with different projects at the same time would not require lots of VM.

Now I know that this would be best if integrated into Xcode and this
is the Swift Language mailing list but Swift build is part of the Language.

This could also be used to debugging. Now Its possible now to use
Docker to run a linux vm and have a shared folder for your project and some
scripts to kick off the build. But it take time to setup per project and is
not the Experience i would expect in Xcode.

Now My first thought when I found out about Hypervisor.framework that
the reason it was created was to add linux targets to Xcode.

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org <mailto:swift-evolution@swift.org>
https://lists.swift.org/mailman/listinfo/swift-evolution <
https://lists.swift.org/mailman/listinfo/swift-evolution>__
_____________________________________________

swift-build-dev mailing list
swift-build-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-build-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<https://lists.swift.org/pipermail/swift-build-dev/attachmen
ts/20160814/aaadc163/attachment-0001.html>

------------------------------

_______________________________________________
swift-build-dev mailing list
swift-build-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-build-dev

End of swift-build-dev Digest, Vol 9, Issue 5
*********************************************

--
Jason Kristian | Director | APPS 4 U PTY LTD.
ph: +61 075699 8109
mob: +61 0411 389 392
e: Jason Kristian
_______________________________________________
swift-build-dev mailing list
swift-build-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-build-dev