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

Regards,
JP

-----Original Message-----
From: Kinney, Michael D <michael.d.kin...@intel.com> 
Sent: Saturday, June 15, 2024 7:12 AM
To: Jayaprakash, N <n.jayaprak...@intel.com>; devel@edk2.groups.io
Cc: Rebecca Cran <rebe...@bsdio.com>; Kinney, Michael D 
<michael.d.kin...@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.jayaprak...@intel.com>
> Sent: Friday, June 14, 2024 10:02 AM
> To: devel@edk2.groups.io
> Cc: Jayaprakash, N <n.jayaprak...@intel.com>; Rebecca Cran 
> <rebe...@bsdio.com>; Kinney, Michael D <michael.d.kin...@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 <rebe...@bsdio.com>
> Cc: Michael D Kinney <michael.d.kin...@intel.com>
> Cc: Jayaprakash N <n.jayaprak...@intel.com>
> Signed-off-by: Jayaprakash N <n.jayaprak...@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/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to