public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Jayaprakash, N" <n.jayaprakash@intel.com>
To: "Kinney, Michael D" <michael.d.kinney@intel.com>,
	"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: Rebecca Cran <rebecca@bsdio.com>
Subject: Re: [edk2-devel] [edk2-libc Patch 1/1] edk2-libc : add github actions workflow to build PyUEFI using VS2019
Date: Sat, 15 Jun 2024 08:18:28 +0000	[thread overview]
Message-ID: <PH7PR11MB59438D15443E865764AF1E63EEC32@PH7PR11MB5943.namprd11.prod.outlook.com> (raw)
In-Reply-To: <CO1PR11MB4929C753BD3BEDDCB021DF1ED2C32@CO1PR11MB4929.namprd11.prod.outlook.com>

Thanks Mike for your comments.
Please find my responses inline.

Regards,
JP

-----Original Message-----
From: Kinney, Michael D <michael.d.kinney@intel.com> 
Sent: Saturday, June 15, 2024 7:12 AM
To: Jayaprakash, N <n.jayaprakash@intel.com>; devel@edk2.groups.io
Cc: Rebecca Cran <rebecca@bsdio.com>; Kinney, Michael D <michael.d.kinney@intel.com>
Subject: RE: [edk2-libc Patch 1/1] edk2-libc : add github actions workflow to build PyUEFI using VS2019

Comments below.

Mike

> -----Original Message-----
> From: Jayaprakash, N <n.jayaprakash@intel.com>
> Sent: Friday, June 14, 2024 10:02 AM
> To: devel@edk2.groups.io
> Cc: Jayaprakash, N <n.jayaprakash@intel.com>; Rebecca Cran 
> <rebecca@bsdio.com>; Kinney, Michael D <michael.d.kinney@intel.com>
> Subject: [edk2-libc Patch 1/1] edk2-libc : add github actions workflow 
> to build PyUEFI using VS2019
> 
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4788
> 
> This commit adds github actions workflow to build python uefi 
> interpreter with visual studio 2019 tool chain.
> The build-python-uefi-vs.yaml file under .github/workflows implements 
> the build action for building the pyuefi interpreter with VS2019 tool 
> chain. There is also a supporting python script under .github/scripts 
> folder which is used to uncomment the python uefi related .inf file in 
> AppPkg.dsc file.
> 
> Cc: Rebecca Cran <rebecca@bsdio.com>
> Cc: Michael D Kinney <michael.d.kinney@intel.com>
> Cc: Jayaprakash N <n.jayaprakash@intel.com>
> Signed-off-by: Jayaprakash N <n.jayaprakash@intel.com>
> ---
>  .github/scripts/enable_pyuefi_apppkg.py     | 31 ++++++++
>  .github/workflows/build-python-uefi-vs.yaml | 84 
> +++++++++++++++++++++
>  2 files changed, 115 insertions(+)
>  create mode 100644 .github/scripts/enable_pyuefi_apppkg.py
>  create mode 100644 .github/workflows/build-python-uefi-vs.yaml
> 
> diff --git a/.github/scripts/enable_pyuefi_apppkg.py
> b/.github/scripts/enable_pyuefi_apppkg.py
> new file mode 100644
> index 0000000..37b9e0a
> --- /dev/null
> +++ b/.github/scripts/enable_pyuefi_apppkg.py
> @@ -0,0 +1,31 @@
> +'''Script to enable the build of python UEFI interpreter
> +   in AppPkg.dsc file
> +'''

Copyright and License missing
<<JP>> Will add copyright and license

> +import os
> +
> +
> +script_path = os.path.abspath(__file__) script_dir = 
> +os.path.dirname(script_path)
> +
> +# path to the AppPkg.dsc file
> +path_to_AppPkg_dsc = os.path.join(script_dir, '..', '..', 'edk2', 
> +'AppPkg',
> 'AppPkg.dsc')
> +print('Path to AppPkg dsc file : ', path_to_AppPkg_dsc)
> +
> +# Check if the file exists
> +if not os.path.isfile(path_to_AppPkg_dsc):
> +    print(f"The file {path_to_AppPkg_dsc} does not exist.")
> +else:
> +    # Read the content of the file
> +    with open(path_to_AppPkg_dsc, 'r') as file:
> +        lines = file.readlines()
> +
> +    # Uncomment the line containing "Python368.inf"
> +    with open(path_to_AppPkg_dsc, 'w') as file:
> +        for line in lines:
> +            if 'Python368.inf' in line and line.strip().startswith('#'):
> +                # Uncomment the line
> +                file.write(line.lstrip('#'))
> +            else:
> +                file.write(line)

This is complicated to edit a DSC file.  Can this INF be uncommented in this DSC file or add another DSC files that is only used for this workflow to build python that has this INF uncommented.  Then this extra python script can be removed.

<<JP>> 
The reason I chose this approach is because we cannot uncomment this file by default in DSC file as it needs few additional steps to be done before the compilation.
Also adding another DSC file can lead to regular maintenance of the DSC file whenever there are changes to it, we need update in two files.
This custom script makes the process is and it keeps the github actions specific things are completely isolated from the rest of the code base. 
Would like to continue with this script rather than having a duplicate DCS file specifically for github actions. 

> +
> +    print(f"The file {path_to_AppPkg_dsc} has been updated.")
> diff --git a/.github/workflows/build-python-uefi-vs.yaml
> b/.github/workflows/build-python-uefi-vs.yaml
> new file mode 100644
> index 0000000..aa5c317
> --- /dev/null
> +++ b/.github/workflows/build-python-uefi-vs.yaml
> @@ -0,0 +1,84 @@

Copyright and License missing

<<JP>> Will add and send updated patch for review.

> +name: Build Python Interpreter for UEFI using VS2019
> +
> +on: [push, pull_request]
> +
> +jobs:
> +  build:
> +    runs-on: windows-2019
> +    env:
> +      NASM_PREFIX: "C:\\Program Files\\NASM\\"
> +    defaults:
> +      run:
> +        shell: cmd
> +
> +    steps:
> +    - name: Checkout repository
> +      uses: actions/checkout@v4
> +
> +    - name: Setup Python
> +      uses: actions/setup-python@v5
> +      with:
> +        python-version: '3.10'
> +
> +    - name: Install NASM
> +      run: choco install nasm
> +
> +    - name: VSWhere
> +      run: |
> +        "C:\Program Files (x86)\Microsoft Visual
> Studio\Installer\vswhere.exe"
> +
> +    - name: Setup environment for Visual Studio 2019 Build Tools
> +      run: |
> +        "C:\Program Files (x86)\Microsoft Visual
> Studio\2019\Professional\VC\Auxiliary\Build\vcvarsall.bat" x86
> +        set
> +
> +    - name: Clone EDK2
> +      run: |
> +        git clone https://github.com/tianocore/edk2.git"
> +        cd edk2
> +        git submodule update --init
> +
> +    - name: Copy edk2-libc contents to edk2
> +      run: |
> +        dir
> +        cmd /c xcopy /E /I /Y AppPkg edk2\AppPkg
> +        cmd /c xcopy /E /I /Y StdLib edk2\StdLib
> +        cmd /c xcopy /E /I /Y StdLibPrivateInternalFiles
> edk2\StdLibPrivateInternalFiles

Use PACKAGES_PATH instead of copying files into edk2 repo
<<JP>> I will try and make necessary changes.

> +
> +    - name: Build EDK2 Base Tools
> +      run: |
> +        cd edk2
> +        dir
> +        edksetup.bat ForceRebuild
> +
> +    - name: Enable python368.inf file in AppPkg.dsc
> +      run: |
> +        cd .github\scripts
> +        dir
> +        python enable_pyuefi_apppkg.py

See comment above to remove this script.

<<JP>> Would like to keep this script as reasoned for the comment above. 

> +
> +    - name: Build Python UEFI
> +      run: |
> +        cd edk2
> +        call edksetup.bat
> +        cd AppPkg\Applications\Python\Python-3.6.8\
> +        python srcprep.py
> +        cd ..\..\..\..\..\
> +        build -t VS2019 -a X64 -b RELEASE -p AppPkg\AppPkg.dsc
> +
> +    - name: Create Python UEFI package
> +      run: |
> +        dir
> +        cd edk2\AppPkg\Applications\Python\Python-3.6.8\
> +        dir
> +        call create_python_pkg.bat VS2019 RELEASE X64 myUEFIPy
> +
> +    - name: List build artifacts
> +      run: |
> +        dir /S edk2\myUEFIPy
> +
> +    - name: Upload build output as artifact
> +      uses: actions/upload-artifact@v4
> +      with:
> +        name: myUEFIPy-build-VS2019-output
> +        path: edk2\myUEFIPy\**\*
> --
> 2.45.1.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#119588): https://edk2.groups.io/g/devel/message/119588
Mute This Topic: https://groups.io/mt/106674325/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



  reply	other threads:[~2024-06-15  8:18 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-14 17:01 [edk2-devel] [edk2-libc Patch 0/1] add github actions workflow to build Python UEFI with VS2019 Jayaprakash, N
2024-06-14 17:01 ` [edk2-devel] [edk2-libc Patch 1/1] edk2-libc : add github actions workflow to build PyUEFI using VS2019 Jayaprakash, N
2024-06-15  1:41   ` Michael D Kinney
2024-06-15  8:18     ` Jayaprakash, N [this message]
2024-06-15 15:32       ` Michael D Kinney
2024-06-18  6:55         ` Jayaprakash, N

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=PH7PR11MB59438D15443E865764AF1E63EEC32@PH7PR11MB5943.namprd11.prod.outlook.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox