public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Michael D Kinney" <michael.d.kinney@intel.com>
To: "Jayaprakash, N" <n.jayaprakash@intel.com>,
	"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: Rebecca Cran <rebecca@bsdio.com>,
	"Kinney, Michael D" <michael.d.kinney@intel.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 15:32:56 +0000	[thread overview]
Message-ID: <CO1PR11MB49297FF314E1D4285794EEB4D2C32@CO1PR11MB4929.namprd11.prod.outlook.com> (raw)
In-Reply-To: <PH7PR11MB59438D15443E865764AF1E63EEC32@PH7PR11MB5943.namprd11.prod.outlook.com>



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

You can add a !if statement around this INF so by default it is not built
and you can add a -D flag to the build command to build the interpreter.

> 
> > +
> > +    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 (#119589): https://edk2.groups.io/g/devel/message/119589
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 15:33 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
2024-06-15 15:32       ` Michael D Kinney [this message]
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=CO1PR11MB49297FF314E1D4285794EEB4D2C32@CO1PR11MB4929.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