Jump to content

Build_Clover.command, another Script to build standard Clover (or customized)


Micky1979
2,126 posts in this topic

Recommended Posts

Awesome, thank you! One additional feature/option I'd like to see is to force it to update everything first, then run a build, which is how I currently have it setup, by simply enabling both UPDATE_FLAG=YES and BUILD_FLAG=YES.

This way it's easy to build an always up to date version, but again entirely non-interactively.

Yes, with both UPDATE_FLAG and BUILD_FLAG, set to YES, the script will always try to update the Clover (and edk2, if there's a new recommended version) source before building it. In addition, I've added the ForceEDK2Update option to the config, which set to non-zero, will force the edk2 source update and rebuild the edk2 Basetools.

  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...
It seems that the current script is always designed to only receive the latest version.

Can not you get a specific revision?

Currently, there is only a way to temporarily build a specific version by putting it into the Clover folder.

If you insert the revision file, the script will not correctly recognize the revision.

 

EDIT1.

this SUGGESTED_CLOVER_REV is solution.

 

thanks
Link to comment
Share on other sites

is there a possibility since your script can add APFS to clover that the script can have an option to run this script http://www.insanelymac.com/forum/topic/327584-apfsefi-without-verbose-boot/?p=2532527to quite apfs verbosity on the transferred to clover folder apfs file.

 

Can be done... but the "patch" as is, is not dynamic... I mean "looks like it works".... until now (APFS.efi from latest 10.13.2 beta bla-bla-bla)... can we be sure about this for the next releases?

 

Other way (not automatic way) is patch it before the package process...

 

ErmaC

  • Like 1
Link to comment
Share on other sites

I figured it could be optional not automatic something we can trigger from BuildCloverConfig.txt but yeah I see your point it would have to probably parse apfs kext version to known working versions as it might not be a "fix for all" it's your script you would know better then I :)

Link to comment
Share on other sites

  • 2 weeks later...

Just updated the script. It now supports those changes. To ensure you have the latest nasm binary, just remove the current one with

rm -f ~/src/opt/local/bin/nasm

To ensure you have the GCC7 toolchain, it's recommended to remove the following two folders:

~/src/opt

~/src/tools

Note that you should set the toolchain as default (Build_Tool=GNU in BuildCloverConfig.txt) in order to download and build it.

I've also merged the other changes from the work branch such as the non-interactive mode, so it's recommended to remove your settings file and let the script create a new one.

  • Like 5
Link to comment
Share on other sites

Just updated the script. It now supports those changes. To ensure you have the latest nasm binary, just remove the current one with

rm -f ~/src/opt/local/bin/nasm

To ensure you have the GCC7 toolchain, it's recommended to remove the following two folders:

~/src/opt

~/src/tools

Note that you should set the toolchain as default (Build_Tool=GNU in BuildCloverConfig.txt) in order to download and build it.

I've also merged the other changes from the work branch such as the non-interactive mode, so it's recommended to remove your settings file and let the script create a new one.

Thanks a lot

Link to comment
Share on other sites

  • 2 weeks later...

Since lately i'm having trouble to build Clover, it ends with following

 

 

build.py...

/Users/Xabbu/src/edk2/MdePkg/Library/BaseLib/BaseLib.inf(452): error 000E: File/directory not found in workspace

/Users/Xabbu/src/edk2/MdePkg/Library/BaseLib/X64/WriteTr.nasm

 

 

- Failed -

Build end time: 19:00:32, Dec.11 2017

Build total time: 00:00:03

 

 

 

o_Ops, ./ebuild.sh exited with error(s), aborting.

 

can anyone shed some light plz ?!

 

EDIT: SOLVED

Link to comment
Share on other sites

Sorry for asking;

I read as noted by the script, it requires at least 16.04 for Ubuntu version, but I've installed Ubuntu 17.10 on my mach.

I then tried to run the script and get these:

BOOTX64.efi && CLOVERX64.efi @1,1KB (instead of 7xxKB if using Ubuntu 16.04 or XCode toolchain under macOS).

(I also remember that on prev 16.04 the script forced to use gcc53 as buildtool, as same as on 17.10 which is gcc72)

 

Any idea to make the script becomes compatible under Ubuntu 17.10? Thanks.  :)

Well, the good news is now Build_Clover script v4.6.1, EDK2 r25909 with Ubuntu 17.10 x64 (kernel: 4.13.0-19) is able to build Clover and no longer get 1KB *.efi. Considering this Ubuntu version for a compatible OS?

 

I have a question; is it normal that GCC built produces smaller boot binary and *.efi compared to XCode does?

Thanks for your great efforts.

r4359_GCC72_Ub1710.zip

Built_r4359_GCC72_Ub17.10_EDK25909.txt.zip

preboot.log_a43sj_10.13.3_r4359.txt.zip

Link to comment
Share on other sites

Sorry, but with latest Build_Clover script v4.6.2 i get the following error when building with XCode 9.2:

Attempting to detect HOST_ARCH from 'uname -m': x86_64
Detected HOST_ARCH of X64 using uname.
mkdir -p .
make -C Common
gcc  -c -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-self-assign -Wno-unused-result -nostdlib -c -g  -I .. -I ../Include/Common -I ../Include/ -I ../Include/IndustryStandard -I ../Common/ -I .. -I . -I ../Include/X64/  -O2 PcdValueCommon.c -o PcdValueCommon.o
PcdValueCommon.c:270:47: error: format specifies type 'unsigned long' but the argument has
      type 'UINT64' (aka 'unsigned long long') [-Werror,-Wformat]
    sprintf(PcdList[Index].Value, "0x%016lx", Value);
                                     ~~~~~~   ^~~~~
                                     %016llx
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include/secure/_stdio.h:47:56: note: 
      expanded from macro 'sprintf'
  __builtin___sprintf_chk (str, 0, __darwin_obsz(str), __VA_ARGS__)
                                                       ^~~~~~~~~~~
1 error generated.
make[2]: *** [PcdValueCommon.o] Error 1
make[1]: *** [Common] Error 2
make: *** [Source/C] Error 2

o_Ops, ./ebuild.sh exited with error(s), aborting..

any help is appreciated. Thx. in advance

 

PS: maybe i have to mention the following:

================================================================================
Build_Clover script v4.6.2                                  No update available.
                             <--------------------------------------------------
================================================================================
By Micky1979 based on Slice, Zenith432, STLVNUB, JrCs, cecekpawon, Needy,
cvad, Rehabman, philip_petev, ErmaC

Supported OSes: macOS X, Ubuntu (16.04/16.10), Debian Jessie and Stretch
                             <--------------------------------------------------
CLOVER	Remote revision: 4360	Local revision: 4360
EDK2	Remote revision: 26006	Local revision: 26006

The current local EDK2 revision is the suggested one (26006). 
Used settings: /Users/md/BuildCloverConfig.txt 

Link to comment
Share on other sites

PS: maybe i have to mention the following:

================================================================================
Build_Clover script v4.6.2                                  No update available.
                             <--------------------------------------------------
================================================================================
By Micky1979 based on Slice, Zenith432, STLVNUB, JrCs, cecekpawon, Needy,
cvad, Rehabman, philip_petev, ErmaC

Supported OSes: macOS X, Ubuntu (16.04/16.10), Debian Jessie and Stretch
                             <--------------------------------------------------
CLOVER	Remote revision: 4360	Local revision: 4360
EDK2	Remote revision: 26006	Local revision: 26006

The current local EDK2 revision is the suggested one (26006). 
Used settings: /Users/md/BuildCloverConfig.txt 

Already try to restore the suggested EDK2 revision? 25909 (for 4.6.2)

 

ErmaC

  • Like 2
Link to comment
Share on other sites

Hi all and Merry Christmas holidays to all.

Two days ago I see a new option show up about clover configurator pro, so I decide to take a look, really good. Anyone knows how to contact Mickey1979?

As a developer I'm interested in its job about that plist editor, but I notice only now is marked as retired and did not even read my private message (email nowhere  :mad: ). Let me know in pm, thanks and sorry for the OT.

Link to comment
Share on other sites

Hi all and Merry Christmas holidays to all.

Two days ago I see a new option show up about clover configurator pro, so I decide to take a look, really good. Anyone knows how to contact Mickey1979?

As a developer I'm interested in its job about that plist editor, but I notice only now is marked as retired and did not even read my private message (email nowhere  :mad: ). Let me know in pm, thanks and sorry for the OT.

 

You can contact him throw github...

https://github.com/Micky1979

 

ErmaC

Link to comment
Share on other sites

Sorry, but with latest Build_Clover script v4.6.2 i get the following error when building with XCode 9.2:

 

 

Attempting to detect HOST_ARCH from 'uname -m': x86_64
Detected HOST_ARCH of X64 using uname.
mkdir -p .
make -C Common
gcc  -c -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-self-assign -Wno-unused-result -nostdlib -c -g  -I .. -I ../Include/Common -I ../Include/ -I ../Include/IndustryStandard -I ../Common/ -I .. -I . -I ../Include/X64/  -O2 PcdValueCommon.c -o PcdValueCommon.o
PcdValueCommon.c:270:47: error: format specifies type 'unsigned long' but the argument has
      type 'UINT64' (aka 'unsigned long long') [-Werror,-Wformat]
    sprintf(PcdList[Index].Value, "0x%016lx", Value);
                                     ~~~~~~   ^~~~~
                                     %016llx
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include/secure/_stdio.h:47:56: note: 
      expanded from macro 'sprintf'
  __builtin___sprintf_chk (str, 0, __darwin_obsz(str), __VA_ARGS__)
                                                       ^~~~~~~~~~~
1 error generated.
make[2]: *** [PcdValueCommon.o] Error 1
make[1]: *** [Common] Error 2
make: *** [Source/C] Error 2

o_Ops, ./ebuild.sh exited with error(s), aborting..

 

 

 

Also confirmed by me, I can't build new BaseTools with latest edk revision atm.

Link to comment
Share on other sites

This issue was introduced in edk2 r25984 and I'm pretty sure it has something to do with lines 269-273 in edk2/BaseTools/Source/C/Common/PcdValueCommon.c:

#ifdef __GNUC__
    sprintf(PcdList[Index].Value, "0x%016lx", Value);
#else
    sprintf(PcdList[Index].Value, "0x%016llx", Value);
#endif

Whatever defines that GNUC macro, it also breaks the Basetools build. Enforcing the "else" part solves (maybe?!?) the build problem.

  • Like 1
Link to comment
Share on other sites

×
×
  • Create New...