IP Library › Granted Patent US 11,099,837
Granted Patent B2
US 11,099,837 · App. 16/667,014 · Granted Aug 24, 2021

Providing build avoidance without requiring local source code

Inventors: Robert J. Bell, IV (Mont Vernon, NH); DaoLong Fan (Shanghai, CN)
Assignee: EMC IP Holding Company LLC
G06F8/71G06F8/41G06F16/137G06F16/152
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,099,837
App. No.
16/667,014
Filed
Oct 29, 2019
Granted
Aug 24, 2021
Kind
B2
Examiner
CHEN, QING
Art Unit
2191
USPC
717/122
Abstract

A technique controls a new software build. The technique involves receiving abstract hash values for source code components. Each abstract hash value is derived from a most recent source code version of a respective source code component. The technique further involves generating new build fingerprints based on the abstract hash values. The new build fingerprints are different from the abstract hash values received for the source code components. The technique further involves building particular software components of the new software build based on comparisons between the new build fingerprints and respective previous build fingerprints generated during a set of previous software builds.

Claims (82)

1. A method of controlling a new software build, the method comprising:

receiving abstract hash values for source code components, wherein each abstract hash value is derived from a most recent source code version of a respective source code component;

generating new build fingerprints based on the abstract hash values, wherein the new build fingerprints are different from the abstract hash values received for the source code components; and

building particular software components of the new software build based on comparisons between the new build fingerprints and respective previous build fingerprints generated during a set of previous software builds;

wherein building the particular software components of the new software build includes:

building a first software component in response to a first comparison result indicating that a first new build fingerprint does not match a first previous build fingerprint, and

refraining from building a second software component in response to a second comparison result indicating that a second new build fingerprint matches a second previous build fingerprint.

2. A method as in claim 1 wherein the source code components include a first source code component residing at a first location and a second source code component residing at a second location that is different from the first location; and

wherein receiving the abstract hash values for the source code components includes:

obtaining, over a computer network, a first abstract hash value from the first source code component residing at the first location and a second abstract hash value from the second source code component residing at the second location.

3. A method as in claim 2 wherein the first source code component residing at the first location includes a first source code management (SCM) system that stores first source code;

wherein the second source code component residing at the second location includes a second SCM system that stores second source code that is different from the first source code; and

wherein obtaining the first abstract hash value and the second abstract hash value includes:

querying the first SCM system to derive the first abstract hash value based on a most recent version of the first source code, and

separately querying the second SCM system to derive the second abstract hash value based on a most recent version of the second source code.

4. A method as in claim 3 wherein querying the first SCM system to derive the first abstract hash value includes:

sending a first query message to the first SCM system over the computer network; and

wherein querying the second SCM system to derive the second abstract hash value includes:

sending a second query message to the second SCM system over the computer network prior to receiving the first abstract hash value from the first SCM system in response to the first query message.

5. A method as in claim 2 wherein a build engine system stores the respective previous build fingerprints generated during the set of previous software builds, and wherein the build engine system resides at a build engine location that is different from the first location and that is different from the second location; and

wherein generating the new build fingerprints based on the abstract hash values includes:

hashing, by the build engine system, the abstract hash values to generate the new build fingerprints.

6. A method as in claim 5 wherein the first new build fingerprint corresponds to the first source code component and the second new build fingerprint corresponds to the second source code component;

wherein the build engine system generated the respective previous build fingerprints using a particular hash algorithm; and

wherein hashing the abstract hash values includes:

applying the particular hash algorithm to the first abstract hash value from the first source code component to generate the first new build fingerprint corresponding to the first source code component, and

applying the particular hash algorithm to the second abstract hash value from the second source code component to generate the second new build fingerprint corresponding to the second source code component.

7. A method as in claim 2 wherein the first new build fingerprint corresponds to the first source code component and the second new build fingerprint corresponds to the second source code component; and

wherein building the particular software components of the new software build further includes:

comparing the first new build fingerprint with the first previous build fingerprint, which corresponds to the first source code component, to provide the first comparison result, and

comparing the second new build fingerprint with the second previous build fingerprint, which corresponds to the second source code component, to provide the second comparison result.

8. A method as in claim 7 wherein building the first software component in response to the first comparison result indicating that the first new build fingerprint does not match the first previous build fingerprint includes:

copying first source code from the first source code component residing at the first location to a build engine system at a build engine location over the computer network, the build engine location being different from the first location, and

creating the first software component from a version of the first source code copied to the build engine system; and

wherein refraining from building the second software component in response to the second comparison result indicating that the second new build fingerprint matches the second previous build fingerprint includes:

refraining from copying second source code from the second source code component residing at the second location to the build engine system at the build engine location over the computer network, and

retrieving a prebuilt artifact as the second software component.

9. A method as in claim 2 wherein each fingerprint is an algorithmically computed identifier that is generated by a build engine system; and

wherein each abstract hash value is an algorithmically computed identifier that is generated by a source code management (SCM) system that is different from the build engine system.

10. A method as in claim 2 wherein a third source code component residing at a third location includes a third source code management (SCM) system that stores a particular version of third source code; and

wherein the method further comprises:

storing a local version of the third source code at a local location that is different from the third location.

11. A method as in claim 10 wherein the local version of the third source code is newer than the particular version of third source code; and

wherein building particular software components of the new software build includes:

building a certain software component using the local version of the third source code in place of the particular version of third source code stored by the third SCM system.

12. A method as in claim 1 wherein generating the new build fingerprints based on the abstract hash values includes:

applying a first hash algorithm to a particular hash value, wherein the particular hash value is generated via application of a second hash algorithm to source code.

13. A method as in claim 1 , further comprising:

managing, by a build engine system, a respective list of dependencies and a respective set of build attributes for each source code component,

wherein the build engine system is constructed and arranged to generate, for each source code component, a new build fingerprint based on a most recent abstract hash value for that source code component, a most recent list of dependencies for that source code component, and a most recent set of build attributes for that source code component.

14. A method of controlling a new software build, the method comprising:

receiving abstract hash values for source code components, wherein each abstract hash value is derived from a most recent source code version of a respective source code component;

generating new build fingerprints based on the abstract hash values, wherein the new build fingerprints are different from the abstract hash values received for the source code components;

building particular software components of the new software build based on comparisons between the new build fingerprints and respective previous build fingerprints generated during a set of previous software builds; and

managing, by a build engine system, a respective list of dependencies and a respective set of build attributes for each source code component,

wherein the build engine system is constructed and arranged to generate, for each source code component, a new build fingerprint based on a most recent abstract hash value for that source code component, a most recent list of dependencies for that source code component, and a most recent set of build attributes for that source code component.

15. Electronic equipment, comprising:

memory; and

control circuitry coupled to the memory, the memory storing instructions which, when carried out by the control circuitry, cause the control circuitry to:

receive abstract hash values for source code components, wherein each abstract hash value is derived from a most recent source code version of a respective source code component;

generate new build fingerprints based on the abstract hash values, wherein the new build fingerprints are different from the abstract hash values received for the source code components; and

build particular software components of a new software build based on comparisons between the new build fingerprints and respective previous build fingerprints generated during a set of previous software builds;

wherein the control circuitry, when building the particular software components of the new software build, is constructed and arranged to:

build a first software component in response to a first comparison result indicating that a first new build fingerprint does not match a first previous build fingerprint, and

refrain from building a second software component in response to a second comparison result indicating that a second new build fingerprint matches a second previous build fingerprint.

16. Electronic equipment as in claim 15 wherein the control circuitry, when generating the new build fingerprints based on the abstract hash values, is further constructed and arranged to:

apply a first hash algorithm to a particular hash value, wherein the particular hash value is generated via application of a second hash algorithm to source code.

17. Electronic equipment as in claim 15 wherein the control circuitry is further constructed and arranged to:

manage a respective list of dependencies and a respective set of build attributes for each source code component; and

generate, for each source code component, a new build fingerprint based on a most recent abstract hash value for that source code component, a most recent list of dependencies for that source code component, and a most recent set of build attributes for that source code component.

18. A computer program product having a non-transitory computer readable medium which stores a set of instructions to control a new software build; the set of instructions, when carried out by computerized circuitry, causing the computerized circuitry to perform a method of:

receiving abstract hash values for source code components, wherein each abstract hash value is derived from a most recent source code version of a respective source code component;

generating new build fingerprints based on the abstract hash values, wherein the new build fingerprints are different from the abstract hash values received for the source code components; and

building particular software components of the new software build based on comparisons between the new build fingerprints and respective previous build fingerprints generated during a set of previous software builds;

wherein building the particular software components of the new software build includes:

building a first software component in response to a first comparison result indicating that a first new build fingerprint does not match a first previous build fingerprint, and

refraining from building a second software component in response to a second comparison result indicating that a second new build fingerprint matches a second previous build fingerprint.

19. A computer program product as in claim 18 wherein generating the new build fingerprints based on the abstract hash values includes:

applying a first hash algorithm to a particular hash value, wherein the particular hash value is generated via application of a second hash algorithm to source code.

20. A computer program product as in claim 18 wherein the method further includes:

managing, by a build engine system, a respective list of dependencies and a respective set of build attributes for each source code component,

wherein the build engine system is constructed and arranged to generate, for each source code component, a new build fingerprint based on a most recent abstract hash value for that source code component, a most recent list of dependencies for that source code component, and a most recent set of build attributes for that source code component.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (051302/0528) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.); SECUREWORKS CORP.
Reel/Frame 060438/0593 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053311/0169) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0742 →
RELEASE OF SECURITY INTEREST AT REEL 051449 FRAME 0728 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
Reel/Frame 058002/0010 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 053311/0169 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Dec 31, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 051449/0728 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Dec 16, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 051302/0528 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 10, 2019
From: BELL, ROBERT J., IV; FAN, DAOLONG
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 051229/0568 →
Continuity (1)
Related Publication 20210124575A1 · Apr 29, 2021
Cited By (1)
US 12,437,084