<feed xmlns='http://www.w3.org/2005/Atom'>
<title>Tianocore/edk2.git/BaseTools/Source/Python/Common/GlobalData.py, branch edk2_master</title>
<subtitle>EDK II (mirror)</subtitle>
<id>https://git.radix-linux.su/Tianocore/edk2.git/atom?h=edk2_master</id>
<link rel='self' href='https://git.radix-linux.su/Tianocore/edk2.git/atom?h=edk2_master'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/'/>
<updated>2024-09-13T03:58:46+00:00</updated>
<entry>
<title>BaseTools: Update Stack Cookie Logic</title>
<updated>2024-09-13T03:58:46+00:00</updated>
<author>
<name>Taylor Beebe</name>
<email>taylor.d.beebe@gmail.com</email>
</author>
<published>2024-06-14T21:07:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=cac0955658cb591d4629bf90aaa542a66e25be55'/>
<id>urn:sha1:cac0955658cb591d4629bf90aaa542a66e25be55</id>
<content type='text'>
This patch updates the GenC logic to generate a random stack cookie value
for the stack check libraries. These random values improve security
for modules which cannot update the global intrinsics.

If the stack cookie value is randomized in the AutoGen.h file each
build, the build system will determine the module/library must be
rebuilt causing effectively a clean build every time. This also makes
binary reproducibility impossible.

This patch updates the early build scripts to create 32 and 64-bit JSON
files in the build output directory which each contain 100 randomized
stack cookie values for each bitwidth. If the JSON files are already
present, then they are not recreated which allows them to be stored and
moved to other builds for binary reproducibility. Because they are in
the build directory, a clean build will cause the values to be
regenerated.

The logic which creates AutoGen.h will read these JSON files and use a
hash of the module GUID (the hash seed is fixed in Basetools) to index
into the array of stack cookie values for the module bitwidth. This
model is necessary because there isn't thread-consistent data so we
cannot use a locking mechanism to ensure only one thread is writing to
the stack cookie files at a time. With this model, the build threads
only need to read from the files.

Signed-off-by: Oliver Smith-Denny &lt;osde@linux.microsoft.com&gt;
</content>
</entry>
<entry>
<title>BaseTools: Resolve regex syntax warnings</title>
<updated>2023-12-21T00:33:31+00:00</updated>
<author>
<name>Joey Vagedes via groups.io</name>
<email>joeyvagedes=microsoft.com@groups.io</email>
</author>
<published>2023-12-06T20:27:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=9f0061a03b61d282fbc0ba5be22155d06a5e64a1'/>
<id>urn:sha1:9f0061a03b61d282fbc0ba5be22155d06a5e64a1</id>
<content type='text'>
Switches regex patterns to raw text to resolve python 3.12 syntax
warnings in regards to invalid escape sequences, as is suggested by the
re (regex) module in python.

Cc: Rebecca Cran &lt;rebecca@bsdio.com&gt;
Cc: Liming Gao &lt;gaoliming@byosoft.com.cn&gt;
Cc: Bob Feng &lt;bob.c.feng@intel.com&gt;
Cc: Yuwei Chen &lt;yuwei.chen@intel.com&gt;
Signed-off-by: Joey Vagedes &lt;joey.vagedes@gmail.com&gt;
Reviewed-by: Rebecca Cran &lt;rebecca@bsdio.com&gt;
</content>
</entry>
<entry>
<title>BaseTools: Add the FeatureFlagExpression usage to the Source Section</title>
<updated>2022-03-26T00:59:18+00:00</updated>
<author>
<name>Yi Li</name>
<email>yi1.li@intel.com</email>
</author>
<published>2022-03-22T07:26:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=bf9230a9f3dde065c3c8b4175ccd32e44e8f0362'/>
<id>urn:sha1:bf9230a9f3dde065c3c8b4175ccd32e44e8f0362</id>
<content type='text'>
REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3828

FeatureFlagExpression Support in Source section of INF file. The Pcd
value in the expression is from INF or DEC.
When a FeatureFlagExpression is present,if the expression evaluates
to TRUE,then the entry is valid. If the expression evaluates to FALSE,
then the EDK II build tools must ignore the entry.

This patch is going to add this feature.

Cc: Bob Feng &lt;bob.c.feng@intel.com&gt;
Cc: Liming Gao &lt;gaoliming@byosoft.com.cn&gt;
Cc: Heng Luo &lt;heng.luo@intel.com&gt;
Reviewed-by: Bob Feng &lt;bob.c.feng@intel.com&gt;
Signed-off-by: Yi Li &lt;yi1.li@intel.com&gt;
</content>
</entry>
<entry>
<title>BaseTools: Add Guid name support in GenFfs.</title>
<updated>2020-07-17T05:25:41+00:00</updated>
<author>
<name>Yuwei Chen</name>
<email>yuwei.chen@intel.com</email>
</author>
<published>2020-07-14T05:30:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=d35773d5c05b078f53d9475bc50ac9dee91b32c5'/>
<id>urn:sha1:d35773d5c05b078f53d9475bc50ac9dee91b32c5</id>
<content type='text'>
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2762

The Fv Section in the FDF files use hard coding Guid values
which is inconvenient to manage. This patch adds Guid name
support in GenFfs to solve this problem.

Signed-off-by: Yuwei Chen &lt;yuwei.chen@intel.com&gt;
Reviewed-by: Bob Feng&lt;bob.c.feng@intel.com&gt;
</content>
</entry>
<entry>
<title>BaseTools:Fix GenFds issue for BuildOption replace GenFdsOption</title>
<updated>2020-01-13T02:08:46+00:00</updated>
<author>
<name>Fan, ZhijuX</name>
<email>zhijux.fan@intel.com</email>
</author>
<published>2020-01-10T08:29:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=4465cd124fbcf5490faad6a1a834299b30b5d009'/>
<id>urn:sha1:4465cd124fbcf5490faad6a1a834299b30b5d009</id>
<content type='text'>
BZ:https://bugzilla.tianocore.org/show_bug.cgi?id=2455

BuildOption is used by TargetTxtClassObj.py
GenFdsOption is used by GenFds.py
When the GenFds tool is used alone (e.g. python3 -m GenFds.GenFds -h)
With the OptionParser function, the first detected function
prints the help message

import TargetTxtClassObj to GenFds,
The BuildOption will be executed and replace GenFdsOption

We removed all objects associated with this problem that
were created directly during the import process
(e.g. BuildOption, BuildTarget = MyOptionParser(),
 TargetTxt = TargetTxtDict())

The Patch is going to fix this issue

Signed-off-by: Zhiju.Fan &lt;zhijux.fan@intel.com&gt;

Cc: Liming Gao &lt;liming.gao@intel.com&gt;
Cc: Bob Feng &lt;bob.c.feng@intel.com&gt;
Reviewed-by: Bob Feng &lt;bob.c.feng@intel.com&gt;
</content>
</entry>
<entry>
<title>BaseTools: Leverage compiler output to optimize binary cache</title>
<updated>2019-12-10T02:07:12+00:00</updated>
<author>
<name>Steven Shi</name>
<email>steven.shi@intel.com</email>
</author>
<published>2019-11-19T08:17:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=fc8b8deac2d77524ff8cfe44acf95b5e1f59804e'/>
<id>urn:sha1:fc8b8deac2d77524ff8cfe44acf95b5e1f59804e</id>
<content type='text'>
Redesign the binary cache and bases on the compiler to
output the dependency header files info for every module.
The binary cache will directly consume the dependency header
files info and doesn't parse the C source code by iteself.
Also redesign the dependency files list format for module
and try to share the common lib hash result as more as
possible in local process. Remove the unnecessary share data
access across multiprocessing.

Signed-off-by: Steven Shi &lt;steven.shi@intel.com&gt;

Cc: Liming Gao &lt;liming.gao@intel.com&gt;
Cc: Bob Feng &lt;bob.c.feng@intel.com&gt;
Reviewed-by: Bob Feng &lt;bob.c.feng@intel.com&gt;
</content>
</entry>
<entry>
<title>BaseTools: add missing newlines at end of files</title>
<updated>2019-10-04T10:18:22+00:00</updated>
<author>
<name>Leif Lindholm</name>
<email>leif.lindholm@linaro.org</email>
</author>
<published>2019-09-18T08:22:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=c1bcb2258c1888ab237163d9a5d59f21c10650d3'/>
<id>urn:sha1:c1bcb2258c1888ab237163d9a5d59f21c10650d3</id>
<content type='text'>
Some scripts in Source/Python were missing newlines at end of files,
so add them.

Cc: Bob Feng &lt;bob.c.feng@intel.com&gt;
Cc: Liming Gao &lt;liming.gao@intel.com&gt;
Signed-off-by: Leif Lindholm &lt;leif.lindholm@linaro.org&gt;
Reviewed-by: Bob Feng &lt;bob.c.feng@intel.com&gt;
Reviewed-by: Liming Gao &lt;liming.gao@intel.com&gt;
Reviewed-by: Philippe Mathieu-Daude &lt;philmd@redhat.com&gt;
</content>
</entry>
<entry>
<title>BaseTools: Enable --genfds-multi-thread to default build</title>
<updated>2019-09-11T01:43:59+00:00</updated>
<author>
<name>Feng, Bob C</name>
<email>bob.c.feng@intel.com</email>
</author>
<published>2019-09-06T13:22:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=7809492c10e8950a1b92581e6e87c6a4be069077'/>
<id>urn:sha1:7809492c10e8950a1b92581e6e87c6a4be069077</id>
<content type='text'>
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1302

This patch enable --genfds-multi-thread to default build.
This patch keep --genfds-multi-thread build option for
compatibility and also add a new build option to disable
genfds-multi-thread as --no-genfds-multi-thread.

Cc: Liming Gao &lt;liming.gao@intel.com&gt;
Signed-off-by: Bob Feng &lt;bob.c.feng@intel.com&gt;
Reviewed-by: Liming Gao &lt;liming.gao@intel.com&gt;
</content>
</entry>
<entry>
<title>BaseTools: Improve the file saving and copying reliability</title>
<updated>2019-08-20T06:06:07+00:00</updated>
<author>
<name>Shi, Steven</name>
<email>steven.shi@intel.com</email>
</author>
<published>2019-08-15T14:26:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=94459080c118049aba927ec0444ba5b750b7d2c9'/>
<id>urn:sha1:94459080c118049aba927ec0444ba5b750b7d2c9</id>
<content type='text'>
BZ:https://bugzilla.tianocore.org/show_bug.cgi?id=2079

The Basetool CopyFileOnChange() and SaveFileOnChange()
functions might raise the IOError occasionally when build
in Windows with multi-process and build cache enabled.
The CopyFileOnChange() and SaveFileOnChange() might be invoked
in multiple sub-processes simultaneously, and this patch adds
global locks to sync these functions invoking which can
harden their reliability.

Cc: Liming Gao &lt;liming.gao@intel.com&gt;
Cc: Bob Feng &lt;bob.c.feng@intel.com&gt;
Signed-off-by: Steven Shi &lt;steven.shi@intel.com&gt;
Reviewed-by: Bob Feng &lt;bob.c.feng@intel.com&gt;
</content>
</entry>
<entry>
<title>BaseTools: Improve the cache hit in the edk2 build cache</title>
<updated>2019-08-20T06:06:05+00:00</updated>
<author>
<name>Shi, Steven</name>
<email>steven.shi@intel.com</email>
</author>
<published>2019-08-15T14:26:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=0e7e7a264cd80ab71ea0f9e9da2d0617d4b539c4'/>
<id>urn:sha1:0e7e7a264cd80ab71ea0f9e9da2d0617d4b539c4</id>
<content type='text'>
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1927

Current cache hash algorithm does not parse and generate
the makefile to get the accurate dependency files for a
module. It instead use the platform and package meta files
to get the module depenedency in a quick but over approximate
way. These meta files are monolithic and involve many redundant
dependency for the module, which cause the module build
cache miss easily.
This patch introduces one more cache checkpoint and a new
hash algorithm besides the current quick one. The new hash
algorithm leverages the module makefile to achieve more
accurate and precise dependency info for a module. When
the build cache miss with the first quick hash, the
Basetool will caculate new one after makefile is generated
and then check again.

Cc: Liming Gao &lt;liming.gao@intel.com&gt;
Cc: Bob Feng &lt;bob.c.feng@intel.com&gt;
Signed-off-by: Steven Shi &lt;steven.shi@intel.com&gt;
Reviewed-by: Bob Feng &lt;bob.c.feng@intel.com&gt;
</content>
</entry>
</feed>
