* [edk2-devel] [edk2-libc Patch 0/1] add github actions workflow to build Python UEFI with VS2019 @ 2024-06-14 17:01 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 0 siblings, 1 reply; 6+ messages in thread From: Jayaprakash, N @ 2024-06-14 17:01 UTC (permalink / raw) To: devel; +Cc: Jayaprakash N This patch request enables the github actions workflow to build Python UEFI interpreter using VS2019 tool chain. Please refere to BZ:https://bugzilla.tianocore.org/show_bug.cgi?id=4788 Jayaprakash N (1): edk2-libc : add github actions workflow to build PyUEFI using VS2019 .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 -- 2.45.1.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#119577): https://edk2.groups.io/g/devel/message/119577 Mute This Topic: https://groups.io/mt/106674324/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply [flat|nested] 6+ messages in thread
* [edk2-devel] [edk2-libc Patch 1/1] edk2-libc : add github actions workflow to build PyUEFI using VS2019 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 ` Jayaprakash, N 2024-06-15 1:41 ` Michael D Kinney 0 siblings, 1 reply; 6+ messages in thread From: Jayaprakash, N @ 2024-06-14 17:01 UTC (permalink / raw) To: devel; +Cc: Jayaprakash N, Rebecca Cran, Michael D Kinney 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 +''' +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) + + 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 @@ +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 + + - 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 + + - 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 (#119578): https://edk2.groups.io/g/devel/message/119578 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] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [edk2-devel] [edk2-libc Patch 1/1] edk2-libc : add github actions workflow to build PyUEFI using VS2019 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 0 siblings, 1 reply; 6+ messages in thread From: Michael D Kinney @ 2024-06-15 1:41 UTC (permalink / raw) To: Jayaprakash, N, devel@edk2.groups.io; +Cc: Rebecca Cran, Kinney, Michael D 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 > +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. > + > + 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 > +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 > + > + - 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. > + > + - 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 (#119580): https://edk2.groups.io/g/devel/message/119580 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] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [edk2-devel] [edk2-libc Patch 1/1] edk2-libc : add github actions workflow to build PyUEFI using VS2019 2024-06-15 1:41 ` Michael D Kinney @ 2024-06-15 8:18 ` Jayaprakash, N 2024-06-15 15:32 ` Michael D Kinney 0 siblings, 1 reply; 6+ messages in thread From: Jayaprakash, N @ 2024-06-15 8:18 UTC (permalink / raw) To: Kinney, Michael D, devel@edk2.groups.io; +Cc: Rebecca Cran 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] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [edk2-devel] [edk2-libc Patch 1/1] edk2-libc : add github actions workflow to build PyUEFI using VS2019 2024-06-15 8:18 ` Jayaprakash, N @ 2024-06-15 15:32 ` Michael D Kinney 2024-06-18 6:55 ` Jayaprakash, N 0 siblings, 1 reply; 6+ messages in thread From: Michael D Kinney @ 2024-06-15 15:32 UTC (permalink / raw) To: Jayaprakash, N, devel@edk2.groups.io; +Cc: Rebecca Cran, Kinney, Michael D > -----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] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [edk2-devel] [edk2-libc Patch 1/1] edk2-libc : add github actions workflow to build PyUEFI using VS2019 2024-06-15 15:32 ` Michael D Kinney @ 2024-06-18 6:55 ` Jayaprakash, N 0 siblings, 0 replies; 6+ messages in thread From: Jayaprakash, N @ 2024-06-18 6:55 UTC (permalink / raw) To: Kinney, Michael D, devel@edk2.groups.io; +Cc: Rebecca Cran Hi Mike, I am planning to split this PR into multiple patches. The first one is for the suggestion you provided to include conditional compilation for Python368.inf in AppPkg.dsc and to pass a macro through -D flag to the build command. I have made the necessary changes and verified them locally. After that created a patch and submitted for the review. Please review and approve the same. This PR I will use only for setting up the github actions for auto build. Rest all the changes will be done through different PRs. Regards, JP -----Original Message----- From: Kinney, Michael D <michael.d.kinney@intel.com> Sent: Saturday, June 15, 2024 9:03 PM 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 > -----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 (#119605): https://edk2.groups.io/g/devel/message/119605 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] -=-=-=-=-=-=-=-=-=-=-=- ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-06-18 6:55 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 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 2024-06-18 6:55 ` Jayaprakash, N
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox