IP Library Granted Patent US 10,042,620
Granted Patent B1
US 10,042,620 · App. 15/343,096 · Granted Aug 7, 2018

Approaches for amalgamating disparate software tools

Inventor: Nicholas Miyake (Redwood City, CA)
Assignee: Palantir Technologies Inc.
G06F8/36G06F8/54
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 10,042,620
App. No.
15/343,096
Granted
Aug 7, 2018
Kind
B1
Abstract

Systems and methods are provided for obtaining one or more source code files that correspond to a software program. At least one first software package that is separately executable from the software program is obtained, the first software package including one or more source code files. At least one first callable library for the first software package and at least one first invocation mechanism for calling the first callable library are generated. A composite software program that is capable of invoking at least the software program and the first callable library for the first software package using the first invocation mechanism is generated.

Claims (54)

1. A method being implemented by a computing system including one or more physical processors and storage media storing machine-readable instructions, the method comprising:

obtaining, by the computing system, one or more first source code files that correspond to a software program;

obtaining, by the computing system, at least one first software package that is separately executable from the software program, the first software package including one or more second source code files, the one or more second source code files including at least one first function that is not public-callable;

generating, by the computing system in response to the at least one first software package being obtained, at least one first callable library for the first software package and at least one first invocation mechanism for calling the first callable library, the at least one first callable library being generated at least in part by the computing system automatically rewriting, without requiring user input, the one or more second source code files to be the first callable library, the rewriting including rewriting the at least one first function to become public-callable; and

generating, by the computing system, a composite software program that is capable of invoking at least the software program and the first callable library for the first software package using the first invocation mechanism, the first invocation mechanism being embedded in the composite software program.

2. The method of claim 1 , the method further comprising:

causing the composite software program to invoke the first callable library for the first software package.

3. The method of claim 2 , wherein causing the composite software program to invoke the first callable library further comprises:

executing the composite software program using a command-line argument that references the first invocation mechanism for the first software package.

4. The method of claim 2 , wherein the first callable library is executed in a separate sub-process with a separate execution stack.

5. The method of claim 1 , the method further comprising:

obtaining at least one second software package that is separately executable from the software program, the second software package including one or more third source code files;

generating at least one second callable library for the second software package and at least one second invocation mechanism for calling the second callable library; and

generating a new composite software program that is capable of invoking at least the software program, the first callable library for the first software package using the first invocation mechanism, and the second callable library for the second software package using the second invocation mechanism.

6. The method of claim 5 , wherein the new composite software program is capable of invoking functionalities of the software program, the first software package, and the second software package.

7. The method of claim 5 , wherein generating the new composite software program that is capable of invoking at least the software program further comprises:

determining that the first software package and the second software package both import a package that utilizes shared global variables;

creating a first copy of the package for the first software package;

modifying the one or more second source code files for the first software package to use the first copy of the package;

creating a second copy of the package for the second software package; and

modifying the one or more third source code files for the second software package to use the second copy of the package.

8. The method of claim 1 , wherein generating the first callable library for the first software package and the first invocation mechanism for calling the first callable library further comprises:

automatically rewriting the one or more second source code files corresponding to the first software package to be the first callable library.

9. The method of claim 8 , wherein at least a particular source code file of the one or more second source code files that includes a main function for the first software package is rewritten to be callable as a separate non-main library function.

10. A system comprising:

one or more processors; and

memory storing instructions that, when executed by the one or more processors, cause the system to perform:

obtaining, by the computing system, one or more first source code files that correspond to a software program;

obtaining, by the computing system, at least one first software package that is separately executable from the software program, the first software package including one or more second source code files, the one or more second source code files including at least one first function that is not public-callable;

generating, by the computing system in response to the at least one first software package being obtained, at least one first callable library for the first software package and at least one first invocation mechanism for calling the first callable library, the at least one first callable library being generated at least in part by the computing system automatically rewriting, without requiring user input, the one or more second source code files to be the first callable library, the rewriting including rewriting the at least one first function to become public-callable; and

generating, by the computing system, a composite software program that is capable of invoking at least the software program and the first callable library for the first software package using the first invocation mechanism, the first invocation mechanism being embedded in the composite software program.

11. The system of claim 10 , wherein the instructions further cause the system to perform:

causing the composite software program to invoke the first callable library for the first software package.

12. The system of claim 11 , wherein causing the composite software program to invoke the first callable library further cause the system to perform:

executing the composite software program using a command-line argument that references the first invocation mechanism for the first software package.

13. The system of claim 11 , wherein the first callable library is executed in a separate sub-process with a separate execution stack.

14. The system of claim 10 , wherein the instructions further cause the system to perform:

obtaining at least one second software package that is separately executable from the software program, the second software package including one or more third source code files;

generating at least one second callable library for the second software package and at least one second invocation mechanism for calling the second callable library; and

generating a new composite software program that is capable of invoking at least the software program, the first callable library for the first software package using the first invocation mechanism, and the second callable library for the second software package using the second invocation mechanism.

15. A non-transitory computer readable medium comprising instructions that, when executed, cause one or more processors to perform:

obtaining, by the computing system, one or more first source code files that correspond to a software program;

obtaining, by the computing system, at least one first software package that is separately executable from the software program, the first software package including one or more second source code files, the one or more second source code files including at least one first function that is not public-callable;

generating, by the computing system in response to the at least one first software package being obtained, at least one first callable library for the first software package and at least one first invocation mechanism for calling the first callable library, the at least one first callable library being generated at least in part by the computing system automatically rewriting, without requiring user input, the one or more second source code files to be the first callable library, the rewriting including rewriting the at least one first function to become public-callable; and

generating, by the computing system, a composite software program that is capable of invoking at least the software program and the first callable library for the first software package using the first invocation mechanism, the first invocation mechanism being embedded in the composite software program.

16. The non-transitory computer readable medium of claim 15 , wherein the instructions further cause the processors to perform:

causing the composite software program to invoke the first callable library for the first software package.

17. The non-transitory computer readable medium of claim 16 , wherein causing the composite software program to invoke the first callable library further cause the processors to perform:

executing the composite software program using a command-line argument that references the first invocation mechanism for the first software package.

18. The non-transitory computer readable medium of claim 16 , wherein the first callable library is executed in a separate sub-process with a separate execution stack.

19. The non-transitory computer readable medium of claim 15 , wherein the instructions further cause the system to perform:

obtaining at least one second software package that is separately executable from the software program, the second software package including one or more third source code files;

generating at least one second callable library for the second software package and at least one second invocation mechanism for calling the second callable library; and

generating a new composite software program that is capable of invoking at least the software program, the first callable library for the first software package using the first invocation mechanism, and the second callable library for the second software package using the second invocation mechanism.

Assignments (8)
ASSIGNMENT OF INTELLECTUAL PROPERTY SECURITY AGREEMENTS Recorded Jul 3, 2022
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0640 →
SECURITY INTEREST Recorded Jul 3, 2022
From: PALANTIR TECHNOLOGIES INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0506 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ERRONEOUSLY LISTED PATENT BY REMOVING APPLICATION NO. 16/832267 FROM THE RELEASE OF SECURITY INTEREST PREVIOUSLY RECORDED ON REEL 052856 FRAME 0382. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Aug 26, 2021
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 057335/0753 →
SECURITY INTEREST Recorded Jun 4, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 052856/0817 →
RELEASE OF SECURITY INTEREST Recorded Jun 4, 2020
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 052856/0382 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS ADMINISTRATIVE AGENT
Reel/Frame 051713/0149 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: ROYAL BANK OF CANADA, AS ADMINISTRATIVE AGENT
Reel/Frame 051709/0471 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 4, 2017
From: MIYAKE, NICHOLAS
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 042238/0472 →