libdragon 10.7.1 → 10.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/index.js +0 -0
- package/modules/actions/help.js +1 -1
- package/modules/actions/init.js +127 -81
- package/modules/actions/install.js +4 -4
- package/modules/actions/start.js +12 -11
- package/modules/actions/update-and-start.js +2 -2
- package/modules/actions/update.js +11 -14
- package/modules/actions/utils.js +6 -6
- package/modules/project-info.js +4 -2
- package/package.json +52 -3
- package/CHANGELOG.md +0 -582
package/README.md
CHANGED
|
@@ -123,6 +123,10 @@ will init the container for this project and run `make && make install` for `ed6
|
|
|
123
123
|
|
|
124
124
|
This is an experimental dependency management.
|
|
125
125
|
|
|
126
|
+
## TODOS
|
|
127
|
+
|
|
128
|
+
- [ ] Skip CI checks for irrelevant changes.
|
|
129
|
+
|
|
126
130
|
## Funding
|
|
127
131
|
|
|
128
132
|
If this tool helped you, consider supporting its development by sponsoring it!
|
package/index.js
CHANGED
|
File without changes
|
package/modules/actions/help.js
CHANGED
|
@@ -39,7 +39,7 @@ const printUsage = (info) => {
|
|
|
39
39
|
|
|
40
40
|
To disable auto-vendoring, init with \`manual\`. With \`manual\`, libdragon files are expected at the location provided by \`--directory\` flag and the user is responsible for vendoring and updating them. This will allow using any other manual vendoring method.
|
|
41
41
|
|
|
42
|
-
You can always switch
|
|
42
|
+
You can always switch strategy by re-running \`init\` with \`--strategy\`, though you will be responsible for handling the old vendored files as they will be kept as is.
|
|
43
43
|
|
|
44
44
|
With the \`manual\` strategy, it is still recommended to have a git repository at project root such that container actions can execute faster by caching the container id inside the \`.git\` folder.\n`,
|
|
45
45
|
alias: 's',
|
package/modules/actions/init.js
CHANGED
|
@@ -27,12 +27,99 @@ const {
|
|
|
27
27
|
toPosixPath,
|
|
28
28
|
toNativePath,
|
|
29
29
|
} = require('../helpers');
|
|
30
|
+
const { syncImageAndStart } = require('./update-and-start');
|
|
31
|
+
|
|
32
|
+
const autoDetect = async (info) => {
|
|
33
|
+
const vendorTarget = path.relative(
|
|
34
|
+
info.root,
|
|
35
|
+
toNativePath(info.vendorDirectory)
|
|
36
|
+
);
|
|
37
|
+
const vendorTargetExists = await fs.stat(vendorTarget).catch((e) => {
|
|
38
|
+
if (e.code !== 'ENOENT') throw e;
|
|
39
|
+
return false;
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
if (
|
|
43
|
+
vendorTargetExists &&
|
|
44
|
+
(await runGitMaybeHost(info, [
|
|
45
|
+
'submodule',
|
|
46
|
+
'status',
|
|
47
|
+
info.vendorDirectory,
|
|
48
|
+
]).catch((e) => {
|
|
49
|
+
if (!(e instanceof CommandError)) {
|
|
50
|
+
throw e;
|
|
51
|
+
}
|
|
52
|
+
}))
|
|
53
|
+
) {
|
|
54
|
+
log(`${info.vendorDirectory} is a submodule.`);
|
|
55
|
+
return 'submodule';
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (vendorTargetExists) {
|
|
59
|
+
const gitLogs = await runGitMaybeHost(info, ['log'], {
|
|
60
|
+
inheritStdin: false,
|
|
61
|
+
inheritStdout: false,
|
|
62
|
+
inheritStderr: false,
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
if (gitLogs.includes(`git-subtree-dir: ${info.vendorDirectory}`)) {
|
|
66
|
+
log(`${info.vendorDirectory} is a subtree.`);
|
|
67
|
+
return 'subtree';
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const autoVendor = async (info) => {
|
|
73
|
+
// Update the strategy information for the project if the flag is provided
|
|
74
|
+
if (info.options.VENDOR_STRAT) {
|
|
75
|
+
info.vendorStrategy = info.options.VENDOR_STRAT;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Update the directory information for the project if the flag is provided
|
|
79
|
+
if (info.options.VENDOR_DIR) {
|
|
80
|
+
const relativeVendorDir = path.relative(info.root, info.options.VENDOR_DIR);
|
|
81
|
+
// Validate vendoring path
|
|
82
|
+
if (relativeVendorDir.startsWith('..')) {
|
|
83
|
+
throw new ParameterError(
|
|
84
|
+
`\`--directory=${info.options.VENDOR_DIR}\` is outside the project directory.`,
|
|
85
|
+
info.options.CURRENT_ACTION.name
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Immeditately convert it to a posix and relative path
|
|
90
|
+
info.vendorDirectory = toPosixPath(relativeVendorDir);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// No need to do anything here
|
|
94
|
+
if (info.vendorStrategy === 'manual') {
|
|
95
|
+
return info;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
await runGitMaybeHost(info, ['init']);
|
|
99
|
+
const detectedStrategy = await autoDetect(info);
|
|
100
|
+
|
|
101
|
+
if (
|
|
102
|
+
info.options.VENDOR_STRAT &&
|
|
103
|
+
detectedStrategy &&
|
|
104
|
+
detectedStrategy !== info.options.VENDOR_STRAT
|
|
105
|
+
) {
|
|
106
|
+
throw new ValidationError(
|
|
107
|
+
`${info.vendorDirectory} is a ${detectedStrategy} which is different from the provided strategy: ${info.options.VENDOR_STRAT}.`
|
|
108
|
+
);
|
|
109
|
+
}
|
|
30
110
|
|
|
31
|
-
|
|
32
|
-
|
|
111
|
+
if (detectedStrategy) {
|
|
112
|
+
log(
|
|
113
|
+
`Using ${info.vendorDirectory} as a ${detectedStrategy} vendoring target.`
|
|
114
|
+
);
|
|
115
|
+
return {
|
|
116
|
+
...info,
|
|
117
|
+
vendorStrategy: detectedStrategy,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
33
120
|
|
|
34
|
-
if (
|
|
35
|
-
await runGitMaybeHost(
|
|
121
|
+
if (info.vendorStrategy === 'submodule') {
|
|
122
|
+
await runGitMaybeHost(info, [
|
|
36
123
|
'submodule',
|
|
37
124
|
'add',
|
|
38
125
|
'--force',
|
|
@@ -41,19 +128,22 @@ const autoVendor = async (libdragonInfo) => {
|
|
|
41
128
|
'--branch',
|
|
42
129
|
LIBDRAGON_BRANCH,
|
|
43
130
|
LIBDRAGON_GIT,
|
|
44
|
-
|
|
131
|
+
info.vendorDirectory,
|
|
45
132
|
]);
|
|
46
|
-
|
|
133
|
+
return info;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if (info.vendorStrategy === 'subtree') {
|
|
47
137
|
// Create a commit if it does not exist. This is required for subtree.
|
|
48
138
|
try {
|
|
49
|
-
await runGitMaybeHost(
|
|
139
|
+
await runGitMaybeHost(info, ['rev-parse', 'HEAD']);
|
|
50
140
|
} catch (e) {
|
|
51
141
|
if (!(e instanceof CommandError)) throw e;
|
|
52
142
|
|
|
53
143
|
// This will throw if git user name/email is not set up. Let's not assume
|
|
54
144
|
// anything for now. This means subtree is not supported for someone without
|
|
55
145
|
// git on the host machine.
|
|
56
|
-
await runGitMaybeHost(
|
|
146
|
+
await runGitMaybeHost(info, [
|
|
57
147
|
'commit',
|
|
58
148
|
'--allow-empty',
|
|
59
149
|
'-n',
|
|
@@ -62,18 +152,17 @@ const autoVendor = async (libdragonInfo) => {
|
|
|
62
152
|
]);
|
|
63
153
|
}
|
|
64
154
|
|
|
65
|
-
await runGitMaybeHost(
|
|
155
|
+
await runGitMaybeHost(info, [
|
|
66
156
|
'subtree',
|
|
67
157
|
'add',
|
|
68
158
|
'--prefix',
|
|
69
|
-
path.relative(
|
|
159
|
+
path.relative(info.root, info.vendorDirectory),
|
|
70
160
|
LIBDRAGON_GIT,
|
|
71
161
|
LIBDRAGON_BRANCH,
|
|
72
162
|
'--squash',
|
|
73
163
|
]);
|
|
164
|
+
return info;
|
|
74
165
|
}
|
|
75
|
-
|
|
76
|
-
return libdragonInfo;
|
|
77
166
|
};
|
|
78
167
|
|
|
79
168
|
/**
|
|
@@ -83,10 +172,8 @@ const autoVendor = async (libdragonInfo) => {
|
|
|
83
172
|
async function init(info) {
|
|
84
173
|
log(`Initializing a libdragon project at ${info.root}`);
|
|
85
174
|
|
|
86
|
-
let newInfo = info;
|
|
87
|
-
|
|
88
175
|
// Validate manifest
|
|
89
|
-
const manifestPath = path.join(
|
|
176
|
+
const manifestPath = path.join(info.root, LIBDRAGON_PROJECT_MANIFEST);
|
|
90
177
|
const manifestStats = await fs.stat(manifestPath).catch((e) => {
|
|
91
178
|
if (e.code !== 'ENOENT') throw e;
|
|
92
179
|
return false;
|
|
@@ -98,95 +185,52 @@ async function init(info) {
|
|
|
98
185
|
);
|
|
99
186
|
}
|
|
100
187
|
|
|
101
|
-
|
|
102
|
-
if (
|
|
103
|
-
newInfo.haveProjectConfig &&
|
|
104
|
-
newInfo.options.VENDOR_STRAT &&
|
|
105
|
-
newInfo.options.VENDOR_STRAT !== 'manual' &&
|
|
106
|
-
newInfo.vendorStrategy !== newInfo.options.VENDOR_STRAT
|
|
107
|
-
) {
|
|
108
|
-
throw new ParameterError(
|
|
109
|
-
`Requested strategy switch: ${newInfo.vendorStrategy} -> ${newInfo.options.VENDOR_STRAT} It is not possible to switch vendoring strategy after initializing a project. You can always switch to manual and handle libdragon yourself.`,
|
|
110
|
-
info.options.CURRENT_ACTION.name
|
|
111
|
-
);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// Update the strategy information for the project if the flag is provided
|
|
115
|
-
if (newInfo.options.VENDOR_STRAT) {
|
|
116
|
-
newInfo.vendorStrategy = newInfo.options.VENDOR_STRAT;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
// Update the directory information for the project if the flag is provided
|
|
120
|
-
if (newInfo.options.VENDOR_DIR) {
|
|
121
|
-
const relativeVendorDir = path.relative(info.root, info.options.VENDOR_DIR);
|
|
122
|
-
// Validate vendoring path
|
|
123
|
-
if (relativeVendorDir.startsWith('..')) {
|
|
124
|
-
throw new ParameterError(
|
|
125
|
-
`\`--directory=${info.options.VENDOR_DIR}\` is outside the project directory.`,
|
|
126
|
-
info.options.CURRENT_ACTION.name
|
|
127
|
-
);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
// Immeditately convert it to a posix and relative path
|
|
131
|
-
newInfo.vendorDirectory = toPosixPath(relativeVendorDir);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
if (newInfo.haveProjectConfig) {
|
|
188
|
+
if (info.haveProjectConfig) {
|
|
135
189
|
log(
|
|
136
190
|
`${path.join(
|
|
137
|
-
|
|
191
|
+
info.root,
|
|
138
192
|
LIBDRAGON_PROJECT_MANIFEST
|
|
139
193
|
)} exists. This is already a libdragon project, starting it...`
|
|
140
194
|
);
|
|
141
|
-
if (
|
|
195
|
+
if (info.options.DOCKER_IMAGE) {
|
|
142
196
|
log(
|
|
143
197
|
`Not changing docker image. Use the install action if you want to override the image.`
|
|
144
198
|
);
|
|
145
199
|
}
|
|
146
|
-
|
|
147
|
-
|
|
200
|
+
if (info.options.DOCKER_IMAGE) {
|
|
201
|
+
info = await syncImageAndStart(info);
|
|
202
|
+
} else {
|
|
203
|
+
info = {
|
|
204
|
+
...info,
|
|
205
|
+
containerId: await start(info),
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
info = await autoVendor(info);
|
|
209
|
+
await installDependencies(info);
|
|
210
|
+
return info;
|
|
148
211
|
}
|
|
149
212
|
|
|
150
|
-
await updateImage(
|
|
213
|
+
await updateImage(info, info.imageName);
|
|
151
214
|
|
|
152
215
|
// Download image and start it
|
|
153
|
-
|
|
216
|
+
info.containerId = await start(info);
|
|
154
217
|
|
|
155
218
|
// We have created a new container, save the new info ASAP
|
|
156
|
-
await initGitAndCacheContainerId(
|
|
219
|
+
await initGitAndCacheContainerId(info);
|
|
157
220
|
|
|
158
|
-
|
|
159
|
-
const vendorTarget = path.relative(
|
|
160
|
-
newInfo.root,
|
|
161
|
-
toNativePath(newInfo.vendorDirectory)
|
|
162
|
-
);
|
|
163
|
-
const vendorTargetExists = await fs.stat(vendorTarget).catch((e) => {
|
|
164
|
-
if (e.code !== 'ENOENT') throw e;
|
|
165
|
-
return false;
|
|
166
|
-
});
|
|
167
|
-
|
|
168
|
-
if (vendorTargetExists) {
|
|
169
|
-
throw new ValidationError(
|
|
170
|
-
`${path.resolve(
|
|
171
|
-
vendorTarget
|
|
172
|
-
)} already exists. That is the libdragon vendoring target, please remove and retry.`
|
|
173
|
-
);
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
newInfo = await autoVendor(newInfo);
|
|
177
|
-
}
|
|
221
|
+
info = await autoVendor(info);
|
|
178
222
|
|
|
179
223
|
log(`Preparing project files...`);
|
|
180
224
|
const skeletonFolder = path.join(__dirname, '../../skeleton');
|
|
181
225
|
|
|
182
226
|
await Promise.all([
|
|
183
|
-
installDependencies(
|
|
227
|
+
installDependencies(info),
|
|
184
228
|
// node copy functions does not work with pkg
|
|
185
|
-
copyDirContents(skeletonFolder,
|
|
229
|
+
copyDirContents(skeletonFolder, info.root),
|
|
186
230
|
]);
|
|
187
231
|
|
|
188
|
-
log(chalk.green(`libdragon ready at \`${
|
|
189
|
-
return
|
|
232
|
+
log(chalk.green(`libdragon ready at \`${info.root}\`.`));
|
|
233
|
+
return info;
|
|
190
234
|
}
|
|
191
235
|
|
|
192
236
|
module.exports = {
|
|
@@ -200,7 +244,9 @@ module.exports = {
|
|
|
200
244
|
|
|
201
245
|
By default, a git repository and a submodule at \`./libdragon\` will be created to automatically update the vendored libdragon files on subsequent \`update\`s. If you intend to opt-out from this feature, see the \`--strategy manual\` flag to provide your self-managed libdragon copy. The default behaviour is intended for users who primarily want to consume libdragon as is.
|
|
202
246
|
|
|
203
|
-
If this is the first time you are creating a libdragon project at that location, this action will also create skeleton project files to kickstart things with the given image, if provided. For subsequent runs, it will act like \`start\` thus can be used to revive an existing project without modifying it
|
|
247
|
+
If this is the first time you are creating a libdragon project at that location, this action will also create skeleton project files to kickstart things with the given image, if provided. For subsequent runs, it will act like \`start\` thus can be used to revive an existing project without modifying it.
|
|
248
|
+
|
|
249
|
+
If you have an existing project with an already vendored submodule or subtree libdragon copy, \`init\` will automatically detect it at the provided \`--directory\`.`,
|
|
204
250
|
group: ['docker', 'vendoring'],
|
|
205
251
|
},
|
|
206
252
|
};
|
|
@@ -2,7 +2,7 @@ const chalk = require('chalk').stderr;
|
|
|
2
2
|
|
|
3
3
|
const { installDependencies } = require('./utils');
|
|
4
4
|
const { start } = require('./start');
|
|
5
|
-
const {
|
|
5
|
+
const { syncImageAndStart } = require('./update-and-start');
|
|
6
6
|
const { log } = require('../helpers');
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -16,17 +16,17 @@ const { log } = require('../helpers');
|
|
|
16
16
|
* depends on it. It used to only update the image if the flag is provided and
|
|
17
17
|
* we still keep that logic but with a deprecation warning.
|
|
18
18
|
*/
|
|
19
|
-
const install = async (libdragonInfo
|
|
19
|
+
const install = async (libdragonInfo) => {
|
|
20
20
|
let updatedInfo = libdragonInfo;
|
|
21
21
|
const imageName = libdragonInfo.options.DOCKER_IMAGE;
|
|
22
22
|
// If an image is provided, attempt to install
|
|
23
|
-
if (imageName
|
|
23
|
+
if (imageName) {
|
|
24
24
|
log(
|
|
25
25
|
chalk.yellow(
|
|
26
26
|
'Using `install` action to update the docker image is deprecated. Use the `update` action instead.'
|
|
27
27
|
)
|
|
28
28
|
);
|
|
29
|
-
updatedInfo = await
|
|
29
|
+
updatedInfo = await syncImageAndStart(libdragonInfo);
|
|
30
30
|
} else {
|
|
31
31
|
// Make sure existing one is running
|
|
32
32
|
updatedInfo = {
|
package/modules/actions/start.js
CHANGED
|
@@ -34,19 +34,20 @@ const initContainer = async (libdragonInfo) => {
|
|
|
34
34
|
])
|
|
35
35
|
).trim();
|
|
36
36
|
|
|
37
|
-
const newInfo = {
|
|
38
|
-
...libdragonInfo,
|
|
39
|
-
containerId: newId,
|
|
40
|
-
};
|
|
41
|
-
|
|
42
37
|
// chown the installation folder once on init
|
|
43
38
|
const { uid, gid } = libdragonInfo.userInfo;
|
|
44
|
-
await dockerExec(
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
39
|
+
await dockerExec(
|
|
40
|
+
{
|
|
41
|
+
...libdragonInfo,
|
|
42
|
+
containerId: newId,
|
|
43
|
+
},
|
|
44
|
+
[
|
|
45
|
+
'chown',
|
|
46
|
+
'-R',
|
|
47
|
+
`${uid >= 0 ? uid : ''}:${gid >= 0 ? gid : ''}`,
|
|
48
|
+
'/n64_toolchain',
|
|
49
|
+
]
|
|
50
|
+
);
|
|
50
51
|
} catch (e) {
|
|
51
52
|
// Dispose the invalid container, clean and exit
|
|
52
53
|
await destroyContainer({
|
|
@@ -2,7 +2,7 @@ const { log } = require('../helpers');
|
|
|
2
2
|
const { updateImage, destroyContainer } = require('./utils');
|
|
3
3
|
const { start } = require('./start');
|
|
4
4
|
|
|
5
|
-
async function
|
|
5
|
+
async function syncImageAndStart(libdragonInfo) {
|
|
6
6
|
const oldImageName = libdragonInfo.imageName;
|
|
7
7
|
const imageName = libdragonInfo.options.DOCKER_IMAGE ?? oldImageName;
|
|
8
8
|
// If an image is provided, always attempt to install it
|
|
@@ -29,5 +29,5 @@ async function updateAndStart(libdragonInfo) {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
module.exports = {
|
|
32
|
-
|
|
32
|
+
syncImageAndStart,
|
|
33
33
|
};
|
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
const { log } = require('../helpers');
|
|
2
2
|
const { LIBDRAGON_GIT, LIBDRAGON_BRANCH } = require('../constants');
|
|
3
|
-
const { runGitMaybeHost } = require('./utils');
|
|
4
|
-
const {
|
|
5
|
-
const { updateAndStart } = require('./update-and-start');
|
|
3
|
+
const { runGitMaybeHost, installDependencies } = require('./utils');
|
|
4
|
+
const { syncImageAndStart } = require('./update-and-start');
|
|
6
5
|
|
|
7
6
|
const update = async (info) => {
|
|
8
|
-
|
|
7
|
+
info = await syncImageAndStart(info);
|
|
9
8
|
|
|
10
|
-
if (
|
|
11
|
-
log(`Updating ${
|
|
9
|
+
if (info.vendorStrategy !== 'manual') {
|
|
10
|
+
log(`Updating ${info.vendorStrategy}...`);
|
|
12
11
|
}
|
|
13
12
|
|
|
14
|
-
if (
|
|
15
|
-
await runGitMaybeHost(
|
|
13
|
+
if (info.vendorStrategy === 'submodule') {
|
|
14
|
+
await runGitMaybeHost(info, [
|
|
16
15
|
'submodule',
|
|
17
16
|
'update',
|
|
18
17
|
'--remote',
|
|
19
18
|
'--merge',
|
|
20
|
-
|
|
19
|
+
info.vendorDirectory,
|
|
21
20
|
]);
|
|
22
|
-
} else if (
|
|
23
|
-
await runGitMaybeHost(
|
|
21
|
+
} else if (info.vendorStrategy === 'subtree') {
|
|
22
|
+
await runGitMaybeHost(info, [
|
|
24
23
|
'subtree',
|
|
25
24
|
'pull',
|
|
26
25
|
'--prefix',
|
|
@@ -31,9 +30,7 @@ const update = async (info) => {
|
|
|
31
30
|
]);
|
|
32
31
|
}
|
|
33
32
|
|
|
34
|
-
|
|
35
|
-
// do that above.
|
|
36
|
-
return await install(newInfo, true);
|
|
33
|
+
await installDependencies(info);
|
|
37
34
|
};
|
|
38
35
|
|
|
39
36
|
module.exports = {
|
package/modules/actions/utils.js
CHANGED
|
@@ -110,35 +110,35 @@ const destroyContainer = async (libdragonInfo) => {
|
|
|
110
110
|
* Invokes host git with provided params. If host does not have git, falls back
|
|
111
111
|
* to the docker git, with the nix user set to the user running libdragon.
|
|
112
112
|
*/
|
|
113
|
-
async function runGitMaybeHost(libdragonInfo, params) {
|
|
113
|
+
async function runGitMaybeHost(libdragonInfo, params, options = {}) {
|
|
114
114
|
assert(
|
|
115
115
|
libdragonInfo.vendorStrategy !== 'manual',
|
|
116
116
|
new Error('Should never run git if vendoring strategy is manual.')
|
|
117
117
|
);
|
|
118
118
|
try {
|
|
119
119
|
const isWin = /^win/.test(process.platform);
|
|
120
|
-
await spawnProcess(
|
|
120
|
+
return await spawnProcess(
|
|
121
121
|
'git',
|
|
122
122
|
['-C', libdragonInfo.root, ...params],
|
|
123
123
|
// Windows git is breaking the TTY somehow - disable TTY for now
|
|
124
124
|
// We are not able to display progress for the initial clone b/c of this
|
|
125
125
|
// Enable progress otherwise.
|
|
126
126
|
isWin
|
|
127
|
-
? { inheritStdin: false }
|
|
128
|
-
: { inheritStdout: true, inheritStderr: true }
|
|
127
|
+
? { inheritStdin: false, ...options }
|
|
128
|
+
: { inheritStdout: true, inheritStderr: true, ...options }
|
|
129
129
|
);
|
|
130
130
|
} catch (e) {
|
|
131
131
|
if (e instanceof CommandError) {
|
|
132
132
|
throw e;
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
-
await dockerExec(
|
|
135
|
+
return await dockerExec(
|
|
136
136
|
libdragonInfo,
|
|
137
137
|
// Use the host user when initializing git as we will need access
|
|
138
138
|
[...dockerHostUserParams(libdragonInfo)],
|
|
139
139
|
['git', ...params],
|
|
140
140
|
// Let's enable tty here to show the progress
|
|
141
|
-
{ inheritStdout: true, inheritStderr: true }
|
|
141
|
+
{ inheritStdout: true, inheritStderr: true, ...options }
|
|
142
142
|
);
|
|
143
143
|
}
|
|
144
144
|
}
|
package/modules/project-info.js
CHANGED
|
@@ -66,12 +66,14 @@ async function findContainerId(libdragonInfo) {
|
|
|
66
66
|
const idIndex = str.indexOf(shortId);
|
|
67
67
|
const longId = str.slice(idIndex, idIndex + 64);
|
|
68
68
|
if (longId.length === 64) {
|
|
69
|
-
const newInfo = { ...libdragonInfo, containerId: longId };
|
|
70
69
|
// This shouldn't happen but if the user somehow deleted the .git folder
|
|
71
70
|
// (we don't have the container id file at this point) we can recover the
|
|
72
71
|
// project. `git init` is safe anyways and it is not executed if strategy
|
|
73
72
|
// is `manual`
|
|
74
|
-
await initGitAndCacheContainerId(
|
|
73
|
+
await initGitAndCacheContainerId({
|
|
74
|
+
...libdragonInfo,
|
|
75
|
+
containerId: longId,
|
|
76
|
+
});
|
|
75
77
|
return longId;
|
|
76
78
|
}
|
|
77
79
|
}
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "libdragon",
|
|
3
|
-
"version": "10.
|
|
3
|
+
"version": "10.8.0",
|
|
4
4
|
"description": "This is a docker wrapper for libdragon",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"engines": {
|
|
7
|
-
"node": ">=14"
|
|
7
|
+
"node": ">=14",
|
|
8
|
+
"npm": ">=8"
|
|
8
9
|
},
|
|
9
10
|
"bin": {
|
|
10
11
|
"libdragon": "./index.js"
|
|
@@ -39,10 +40,19 @@
|
|
|
39
40
|
"lodash": "^4.17.20"
|
|
40
41
|
},
|
|
41
42
|
"devDependencies": {
|
|
43
|
+
"@semantic-release/changelog": "^6.0.1",
|
|
44
|
+
"@semantic-release/exec": "^6.0.3",
|
|
45
|
+
"@semantic-release/git": "^10.0.1",
|
|
46
|
+
"commitizen": "^4.2.4",
|
|
47
|
+
"cz-conventional-changelog": "^3.3.0",
|
|
42
48
|
"ed64": "^2.0.4",
|
|
43
49
|
"eslint": "^7.32.0",
|
|
44
50
|
"pkg": "^5.5.2",
|
|
45
|
-
"prettier": "^2.4.0"
|
|
51
|
+
"prettier": "^2.4.0",
|
|
52
|
+
"semantic-release": "^19.0.2"
|
|
53
|
+
},
|
|
54
|
+
"overrides": {
|
|
55
|
+
"minimist": "1.2.6"
|
|
46
56
|
},
|
|
47
57
|
"pkg": {
|
|
48
58
|
"targets": [
|
|
@@ -53,5 +63,44 @@
|
|
|
53
63
|
"assets": [
|
|
54
64
|
"skeleton/**"
|
|
55
65
|
]
|
|
66
|
+
},
|
|
67
|
+
"release": {
|
|
68
|
+
"plugins": [
|
|
69
|
+
"@semantic-release/commit-analyzer",
|
|
70
|
+
"@semantic-release/release-notes-generator",
|
|
71
|
+
"@semantic-release/changelog",
|
|
72
|
+
"@semantic-release/npm",
|
|
73
|
+
"@semantic-release/git",
|
|
74
|
+
[
|
|
75
|
+
"@semantic-release/exec",
|
|
76
|
+
{
|
|
77
|
+
"prepareCmd": "./pack.sh"
|
|
78
|
+
}
|
|
79
|
+
],
|
|
80
|
+
[
|
|
81
|
+
"@semantic-release/github",
|
|
82
|
+
{
|
|
83
|
+
"assets": [
|
|
84
|
+
{
|
|
85
|
+
"path": "libdragon-linux-x86_64.tar.gz",
|
|
86
|
+
"label": "Linux executable"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"path": "libdragon-macos-x86_64.tar.gz",
|
|
90
|
+
"label": "MacOS executable"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"path": "libdragon-win-x86_64.zip",
|
|
94
|
+
"label": "Windows executable"
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
]
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
"config": {
|
|
102
|
+
"commitizen": {
|
|
103
|
+
"path": "./node_modules/cz-conventional-changelog"
|
|
104
|
+
}
|
|
56
105
|
}
|
|
57
106
|
}
|
package/CHANGELOG.md
DELETED
|
@@ -1,582 +0,0 @@
|
|
|
1
|
-
# Change Log
|
|
2
|
-
|
|
3
|
-
## [10.7.1] - 2022-04-20
|
|
4
|
-
|
|
5
|
-
### Fixed
|
|
6
|
-
|
|
7
|
-
- Migrating from and old version was incorrectly erroring out to do an additional
|
|
8
|
-
`init`, which is not necessarily required.
|
|
9
|
-
|
|
10
|
-
### Changed
|
|
11
|
-
|
|
12
|
-
- Do not print usage information when a command fails.
|
|
13
|
-
|
|
14
|
-
## [10.7.0] - 2022-04-17
|
|
15
|
-
|
|
16
|
-
### Fixed
|
|
17
|
-
|
|
18
|
-
- Logs properly goes to stderr now. Previously they were written to stdout. This
|
|
19
|
-
means the id output of the `start` action is now written to stdout while we can
|
|
20
|
-
also display other information on the terminal. This allowed enabling the docker
|
|
21
|
-
logs for a more responsive experience. The output of `help` still goes to stdout.
|
|
22
|
-
|
|
23
|
-
### Added
|
|
24
|
-
|
|
25
|
-
- Stdin consumption support. Now it is possible to pipe anything to `exec` and
|
|
26
|
-
it will pass it through to the target. In case of no running container, it will
|
|
27
|
-
keep a copy of the stdin stream until the docker process is ready. This enables
|
|
28
|
-
piping in data from the host if ever needed for some reason. This enables usages
|
|
29
|
-
like `cat file.txt | libdragon exec cat - | less`.
|
|
30
|
-
- Automatically convert host paths into posix format so that the user can use
|
|
31
|
-
the host's path autocompletion. It will also convert absolute host paths into
|
|
32
|
-
relative container paths automatically. Previously all paths were assumed to be
|
|
33
|
-
container paths relative to the location corresponding to the host cwd.
|
|
34
|
-
Closes #24.
|
|
35
|
-
|
|
36
|
-
### Changed
|
|
37
|
-
|
|
38
|
-
- Refactored process spawns.
|
|
39
|
-
- Refactored main flow and separated parsing logic.
|
|
40
|
-
- Reorder actions & correction on flag usage for help output.
|
|
41
|
-
- Setting `--verbose` for `start` does not guarantee the only-id output anymore.
|
|
42
|
-
- Refactored parameter parsing.
|
|
43
|
-
- Update submdule for local development.
|
|
44
|
-
|
|
45
|
-
## [10.6.0] - 2022-04-09
|
|
46
|
-
### Fixed
|
|
47
|
-
|
|
48
|
-
- Fix a path bug that would cause incorrect behaviour when the command is run
|
|
49
|
-
deeper than a single level in the project folder.
|
|
50
|
-
- Fix a potential issue where `build.sh`might be incorrectly found inexistant
|
|
51
|
-
if the OS is picky about the paths to have native separators.
|
|
52
|
-
- Only save project information when necessary. Previously actions like `help`
|
|
53
|
-
were saving project info mistakenly.
|
|
54
|
-
|
|
55
|
-
### Added
|
|
56
|
-
|
|
57
|
-
- `disasm` action to simplify disassembling ELF files generated by the toolchain.
|
|
58
|
-
- `version` action to display current version.
|
|
59
|
-
- `destroy` action to remove the libdragon project.
|
|
60
|
-
- Additional documentation for flags.
|
|
61
|
-
- Print duration information when verbose.
|
|
62
|
-
|
|
63
|
-
### Changed
|
|
64
|
-
|
|
65
|
-
- Refactored out NPM related functions.
|
|
66
|
-
- Moved usage parameters to respective actions files as a refactor.
|
|
67
|
-
- It is possible to provide an absolute path to init `--directory` as long as it
|
|
68
|
-
is inside the project directory. Previously it was possible to provide somewhere
|
|
69
|
-
outside the project, but it would fail with an unexpected error.
|
|
70
|
-
- Simplify saving mechanism. Each action now internally resolves into the data
|
|
71
|
-
to save if any.
|
|
72
|
-
|
|
73
|
-
## [10.4.2] - 2022-04-03
|
|
74
|
-
|
|
75
|
-
### Fixed
|
|
76
|
-
|
|
77
|
-
- Make sure actions depending on an `init` fail in a non-project directory to
|
|
78
|
-
keep the project state consistent. This fixes #51.
|
|
79
|
-
- `update` action now tries to update the toolchain image as well. Previously
|
|
80
|
-
this was not the case contrary to what someone would expect. Considering it won't
|
|
81
|
-
change the behaviour for non-latest images and the toolchain did not have any
|
|
82
|
-
breaking changes for a long time, this is not considered a breaking change either.
|
|
83
|
-
- `start` action was printing stuff other than the container id. It doesn't
|
|
84
|
-
anymore.
|
|
85
|
-
- Stop unnecessarily printing container id and a few messages related to updates.
|
|
86
|
-
- Fix a potential race condition that might cause unexpected failures.
|
|
87
|
-
- Correct some errors' exit codes.
|
|
88
|
-
### Added
|
|
89
|
-
|
|
90
|
-
- A new exit code (`4`) to represent unexpected conditions.
|
|
91
|
-
|
|
92
|
-
### Changed
|
|
93
|
-
|
|
94
|
-
- Deprecated providing the image flag for `install` action by displaying a
|
|
95
|
-
warning and removing it from documentation, without changing behaviour even
|
|
96
|
-
though it is higly unlikely this feature was ever used. It mainly exists for
|
|
97
|
-
historical reasons and it wil be removed in next major release.
|
|
98
|
-
- Update documentation to warn against changing strategy is a one way operation.
|
|
99
|
-
- Update documentation to reflect `update` action changes.
|
|
100
|
-
- Minor refactors.
|
|
101
|
-
- Update submodule for local environment.
|
|
102
|
-
|
|
103
|
-
## [10.4.1] - 2022-03-23
|
|
104
|
-
|
|
105
|
-
### Fixed
|
|
106
|
-
|
|
107
|
-
- Update the root makefile to utilize `SOURCE_DIR` for example builds. Then we are
|
|
108
|
-
able to map container files to local files properly with a generic regex in the
|
|
109
|
-
problem matcher. This fixes #13 and does not change any behaviour.
|
|
110
|
-
- Add missing examples to the vscode run configurations.
|
|
111
|
-
- Install and build libdragon related things in the container when `exec` and
|
|
112
|
-
`make` causes a new container run. This was previously prevented on `v10.3.1`
|
|
113
|
-
because it was unnecessarily delaying all exec operations when the container
|
|
114
|
-
is started. Refactoring things allowed me to realize this can be improved
|
|
115
|
-
instead of forcing the user to do a manual `install`.
|
|
116
|
-
- Fix a potential issue that may cause the git commands to run in current folder
|
|
117
|
-
instead of the project root.
|
|
118
|
-
- Attach the error handler once for spawnProcess.
|
|
119
|
-
- Update vulnerable dependencies.
|
|
120
|
-
|
|
121
|
-
### Added
|
|
122
|
-
|
|
123
|
-
- `--directory` option to customize vendoring location.
|
|
124
|
-
- `--strategy` option to select a vendoring strategy. Currently supported options
|
|
125
|
-
are `submodule`, `subtree` and `manual`. The default is `submodule` and `manual`
|
|
126
|
-
can be used to opt-out of auto vendoring. Useful if the user wants to utilize
|
|
127
|
-
a different vendoring strategy and opt-out of the auto-managed git flows.
|
|
128
|
-
|
|
129
|
-
### Changed
|
|
130
|
-
|
|
131
|
-
- Migrate to a json file for persistent project information.
|
|
132
|
-
- Only save the configuration file on successful exit except for the initial
|
|
133
|
-
migration.
|
|
134
|
-
- Do not prevent init if there is a file named libdragon in the target folder.
|
|
135
|
-
This used to cause problems on windows but I cannot reproduce it anymore
|
|
136
|
-
with `2.33.1.windows.1`. It may be something caused by my old configuration.
|
|
137
|
-
- Minor performance improvements.
|
|
138
|
-
|
|
139
|
-
## [10.3.1] - 2022-01-25
|
|
140
|
-
|
|
141
|
-
### Fixed
|
|
142
|
-
|
|
143
|
-
- Do not try to parse arguments after exec/make. They used to get evaluated as
|
|
144
|
-
libdragon paramaters previously, preventing passing down -v to the container
|
|
145
|
-
make for example.
|
|
146
|
-
- Docker image update issues
|
|
147
|
-
- Attempt an image update whenever the image flag is provided. Previously this
|
|
148
|
-
was only done if a different image name is provided, preventing the update of
|
|
149
|
-
the latest image. Previously not providing an image name was behaving the same
|
|
150
|
-
so this is not a breaking change.
|
|
151
|
-
- Start action used to update the image if provided but this bug was already
|
|
152
|
-
prevented by previous fixes by not accepting the image flag for actions other
|
|
153
|
-
than init/update/install. Start action no longer tries to update the image
|
|
154
|
-
regardless.
|
|
155
|
-
|
|
156
|
-
### Changed
|
|
157
|
-
|
|
158
|
-
- Only accept the image flag for init, install, and update actions as documented.
|
|
159
|
-
- Improve documentation for the `init` and `install` actions.
|
|
160
|
-
- Do not attempt an `install` when running `exec`, just start the container. If
|
|
161
|
-
there is a half-baked container, a manual `install` will potentially restore it.
|
|
162
|
-
- Update libdragon.
|
|
163
|
-
|
|
164
|
-
### Added
|
|
165
|
-
|
|
166
|
-
- Extra information for skipping the image flag when doing init for an already
|
|
167
|
-
initialized project.
|
|
168
|
-
|
|
169
|
-
## [10.3.0] - 2022-01-20
|
|
170
|
-
|
|
171
|
-
### Changed
|
|
172
|
-
|
|
173
|
-
- Update dependencies.
|
|
174
|
-
- Detailed help output.
|
|
175
|
-
- Move action descriptions to `libdragon help`.
|
|
176
|
-
- Update libdragon to latest version for local build.
|
|
177
|
-
|
|
178
|
-
### Added
|
|
179
|
-
|
|
180
|
-
- Shorthand flag support.
|
|
181
|
-
|
|
182
|
-
## [10.2.1] - 2021-10-14
|
|
183
|
-
|
|
184
|
-
### Changed
|
|
185
|
-
|
|
186
|
-
- Updated ed64.
|
|
187
|
-
|
|
188
|
-
### Fixed
|
|
189
|
-
|
|
190
|
-
- Fix skeleton project to match latest libdragon.
|
|
191
|
-
|
|
192
|
-
## [10.2.0] - 2021-10-10
|
|
193
|
-
|
|
194
|
-
### Added
|
|
195
|
-
|
|
196
|
-
- Container discovery. The tool can now find a container even if `.git` is lost.
|
|
197
|
-
- A few additional error messages for some potentially confusing cases such as
|
|
198
|
-
already having a file with `libdragon` like name.
|
|
199
|
-
|
|
200
|
-
### Changed
|
|
201
|
-
|
|
202
|
-
- Show more output for downloading the container and initial git operations.
|
|
203
|
-
- Remove an extra log during initialization.
|
|
204
|
-
- The submodule was always being initialized when a container is started. This
|
|
205
|
-
was making some actions inconsistent. For example `install` or `make` action
|
|
206
|
-
was trying to re-initialize the submodule unnecessarily. This is fixed by only
|
|
207
|
-
initializing it with the `init` action. If any of those need to re-init the
|
|
208
|
-
container, now they assume there is an intact libdragon folder to use.
|
|
209
|
-
- Similarly a git repository is not initialized unnecessarily anymore.
|
|
210
|
-
- `update` and `install` are now able to start containers if necessary.
|
|
211
|
-
- Always try to copy skeleton files, they won't overwrite anything already.
|
|
212
|
-
- Do not re-initialize if there is a `.libdragon` folder. We now only try to
|
|
213
|
-
start it in this case. If it is not a complete container, it can probably be
|
|
214
|
-
recovered by a `libdragon install` or `libdragon update`.
|
|
215
|
-
|
|
216
|
-
### Fixed
|
|
217
|
-
|
|
218
|
-
- Fix wording for libdragon install on the container.
|
|
219
|
-
- Improve image name persitence such that the tool finds and updates it more
|
|
220
|
-
consistently.
|
|
221
|
-
|
|
222
|
-
## [10.1.0] - 2021-10-07
|
|
223
|
-
|
|
224
|
-
### Added
|
|
225
|
-
|
|
226
|
-
- `exec` action to execute arbitrary commands in the container with TTY support.
|
|
227
|
-
This also improves the color output support as docker now knows it is using TTY.
|
|
228
|
-
- Add more verbose logging for skeleton project copy.
|
|
229
|
-
|
|
230
|
-
### Changed
|
|
231
|
-
|
|
232
|
-
- Removed partially not working `--byte-swap` option. It does not already work
|
|
233
|
-
with the new libdragon build system so there is no need keeping it in the tool.
|
|
234
|
-
|
|
235
|
-
### Fixed
|
|
236
|
-
|
|
237
|
-
- Publish skeleton project files to NPM.
|
|
238
|
-
|
|
239
|
-
## [10.0.0] - 2021-10-04
|
|
240
|
-
|
|
241
|
-
### Changed
|
|
242
|
-
|
|
243
|
-
- A complete re-write of the tool. Check documentation for the new usage. It is
|
|
244
|
-
much more straightforward to use now. `libdragon make` behaves almost the same.
|
|
245
|
-
|
|
246
|
-
## [9.0.0] - 2021-09-06
|
|
247
|
-
|
|
248
|
-
### Changed
|
|
249
|
-
|
|
250
|
-
- Updated libdragon. We will be changing the update mechanism to be based on a
|
|
251
|
-
git pull, so listing them here will not be useful anymore, let's not bother now.
|
|
252
|
-
- Start using the new build system.
|
|
253
|
-
- Update node engine spec to be at least 14.
|
|
254
|
-
- Added minimum docker version to readme.
|
|
255
|
-
|
|
256
|
-
### Added
|
|
257
|
-
|
|
258
|
-
- Github actions integration
|
|
259
|
-
- Start building a standalone Windows executable
|
|
260
|
-
|
|
261
|
-
### Fixed
|
|
262
|
-
|
|
263
|
-
- Fixed changelog dates to ISO8601
|
|
264
|
-
|
|
265
|
-
## [8.0.0] - 2021-07-28
|
|
266
|
-
|
|
267
|
-
### Changed
|
|
268
|
-
|
|
269
|
-
- Removed make, download, init, buildDragon, prepareDragon, and installDependencies NPM scripts
|
|
270
|
-
- Update the necessary vscode and travis configuration
|
|
271
|
-
- Update the readme to match - this also fixes #31
|
|
272
|
-
- Improve fastpath of dfs_read (https://github.com/DragonMinded/libdragon/pull/133)
|
|
273
|
-
- Refactor n64tool (https://github.com/DragonMinded/libdragon/pull/153, https://github.com/DragonMinded/libdragon/pull/155)
|
|
274
|
-
- It no longer support byte-swapping and only generates a z64 file.
|
|
275
|
-
- Change test bench Makefile to reflect latest changes
|
|
276
|
-
|
|
277
|
-
### Fixed
|
|
278
|
-
|
|
279
|
-
- Zero-initialize the token array to avoid -Werror=maybe-uninitialized (https://github.com/DragonMinded/libdragon/pull/134)
|
|
280
|
-
- Initialize arguments to main libdragon entrypoint (https://github.com/DragonMinded/libdragon/pull/136)
|
|
281
|
-
- SD support fixes and dragonfs fopen fix (https://github.com/DragonMinded/libdragon/pull/137)
|
|
282
|
-
- lib/include paths in tests Makefile (https://github.com/DragonMinded/libdragon/pull/138)
|
|
283
|
-
- Reenable test_timer_ticks for emulators (https://github.com/DragonMinded/libdragon/pull/140)
|
|
284
|
-
- n64tool: return error in case the seek offset required backward seek (https://github.com/DragonMinded/libdragon/pull/144)
|
|
285
|
-
- Add missing extern "C" in debug.h (https://github.com/DragonMinded/libdragon/pull/146)
|
|
286
|
-
- Ensure C++ global constructors are not garbage collected by ld (https://github.com/DragonMinded/libdragon/pull/148)
|
|
287
|
-
- Fix clipped RDP rectangle drawing (https://github.com/DragonMinded/libdragon/pull/147)
|
|
288
|
-
- Enable byte swap flag for the make action and update documentation accordingly
|
|
289
|
-
- Skip the second parameter to the libdragon command as well
|
|
290
|
-
- Enable --byte-swap flag for the make action
|
|
291
|
-
|
|
292
|
-
### Added
|
|
293
|
-
|
|
294
|
-
- restart_timer and new_timer_stopped functions (https://github.com/DragonMinded/libdragon/pull/131)
|
|
295
|
-
- dfs_rom_addr (https://github.com/DragonMinded/libdragon/pull/133)
|
|
296
|
-
- Implement EEPROM Filesystem and test ROM (https://github.com/DragonMinded/libdragon/pull/125)
|
|
297
|
-
- ed64romconfig binary (https://github.com/DragonMinded/libdragon/pull/153, https://github.com/DragonMinded/libdragon/pull/155)
|
|
298
|
-
- Support for RTC status/read/write commands (https://github.com/DragonMinded/libdragon/pull/152)
|
|
299
|
-
- Generic libdragon NPM script
|
|
300
|
-
|
|
301
|
-
## [7.0.0] - 2021-06-06
|
|
302
|
-
|
|
303
|
-
### Changed
|
|
304
|
-
|
|
305
|
-
- Update GCC (10.2.0), binutils (2.36.1) and newlib (4.1.0) (https://github.com/DragonMinded/libdragon/pull/130)
|
|
306
|
-
- Remove internal forceLatest parameter
|
|
307
|
-
- Refactor internal constants
|
|
308
|
-
- Update dependencies
|
|
309
|
-
|
|
310
|
-
### Fixed
|
|
311
|
-
|
|
312
|
-
- Free stdio file handles when closed (https://github.com/DragonMinded/libdragon/pull/128)
|
|
313
|
-
|
|
314
|
-
### Added
|
|
315
|
-
|
|
316
|
-
- Default exception handler (https://github.com/DragonMinded/libdragon/pull/126)
|
|
317
|
-
- New debugging library (https://github.com/DragonMinded/libdragon/pull/130)
|
|
318
|
-
- Not final, may have bugs or it may change in the future
|
|
319
|
-
|
|
320
|
-
## [6.0.2] - 2021-03-04
|
|
321
|
-
|
|
322
|
-
### Fixed
|
|
323
|
-
|
|
324
|
-
- Fix icache ops (https://github.com/DragonMinded/libdragon/pull/122)
|
|
325
|
-
- Rewrite timer.c to avoid messing up the COP0 hardware counter (https://github.com/DragonMinded/libdragon/pull/123)
|
|
326
|
-
- Fix 16k EEPROM detection (https://github.com/DragonMinded/libdragon/pull/124)
|
|
327
|
-
|
|
328
|
-
### Added
|
|
329
|
-
|
|
330
|
-
- Support GCC nested functions (https://github.com/DragonMinded/libdragon/pull/122)
|
|
331
|
-
|
|
332
|
-
## [6.0.1] - 2021-02-07
|
|
333
|
-
|
|
334
|
-
### Changed
|
|
335
|
-
|
|
336
|
-
- Makefile: add -ffunction-sections and -fdata-sections to libdragon (https://github.com/DragonMinded/libdragon/pull/121)
|
|
337
|
-
- Running vscode tasks now always rebuild libdragon examples and tests
|
|
338
|
-
- Root makefile always rebuilds examples and tests
|
|
339
|
-
- Update readme
|
|
340
|
-
|
|
341
|
-
### Fixed
|
|
342
|
-
|
|
343
|
-
- C++ test example works now (https://github.com/DragonMinded/libdragon/pull/118)
|
|
344
|
-
- Delay functions work correctly now (https://github.com/DragonMinded/libdragon/pull/120)
|
|
345
|
-
- Fix broken bench makefile
|
|
346
|
-
- Fix incorrect rom name for resolution test vscode launch configuration
|
|
347
|
-
|
|
348
|
-
### Added
|
|
349
|
-
|
|
350
|
-
- `installDragon` vscode task to make and install libdragon to the container
|
|
351
|
-
|
|
352
|
-
## [6.0.0] - 2021-01-23
|
|
353
|
-
|
|
354
|
-
### Changed
|
|
355
|
-
|
|
356
|
-
- Update base Dockerfile to use the latest toolchain setup and make it deduce processor count for the toolchain build
|
|
357
|
-
- `make` action does not first restart the container anymore. This will result in minor performance gains when running make
|
|
358
|
-
- `libdragon` command does not always exit with code 1 anymore, it instead echoes the underlying error code if known
|
|
359
|
-
- Updated toolchain dockerfile to strip symbols from executables and remove locales and built a new base image. Closes #8
|
|
360
|
-
- Move code into modules
|
|
361
|
-
- Do not put unnecessary files into the NPM package
|
|
362
|
-
- Renamed `dragonInstall` npm script to `prepareDragon`
|
|
363
|
-
- Readme improvements
|
|
364
|
-
|
|
365
|
-
### Fixed
|
|
366
|
-
|
|
367
|
-
- Start using child_process spawn to prevent buffer issues. Fixes #2
|
|
368
|
-
- Colors are now properly displayed when using the wrapper. Fixes #21
|
|
369
|
-
|
|
370
|
-
### Added
|
|
371
|
-
|
|
372
|
-
- Readme update instructions. Closes #20
|
|
373
|
-
- Readme root makefile instructions
|
|
374
|
-
- A red message to show the error if any, including subprocess exit codes
|
|
375
|
-
- An additional `installDependencies` libdragon action and NPM script. It does what we used to do after `download` and `start` when running `install`
|
|
376
|
-
- `-fdiagnostics-color` for the local test bench to enable color output
|
|
377
|
-
|
|
378
|
-
## [5.0.0] - 2021-01-16
|
|
379
|
-
|
|
380
|
-
### Changed
|
|
381
|
-
|
|
382
|
-
- dfs: fix performance of dfs_seek to be constant-time (https://github.com/DragonMinded/libdragon/pull/115)
|
|
383
|
-
- This changes the file system layout
|
|
384
|
-
|
|
385
|
-
### Fixed
|
|
386
|
-
|
|
387
|
-
- n64sys: fix dma cache ops (https://github.com/DragonMinded/libdragon/pull/116)
|
|
388
|
-
- Added a new root makefile to batch multiple operations. Fixes #10
|
|
389
|
-
- Added local search paths to improve test bench compile time. Fixes #18
|
|
390
|
-
|
|
391
|
-
### Added
|
|
392
|
-
|
|
393
|
-
- Exposed the TV_TYPE at 0x80000300 as a n64sys function (https://github.com/DragonMinded/libdragon/pull/113)
|
|
394
|
-
- Initial libdragon testsuite (https://github.com/DragonMinded/libdragon/pull/117)
|
|
395
|
-
- Launch configurations for the new test suite and existing examples
|
|
396
|
-
- Launch configuration to clean everything
|
|
397
|
-
|
|
398
|
-
## [4.1.4] - 2020-12-31
|
|
399
|
-
|
|
400
|
-
### Changed
|
|
401
|
-
|
|
402
|
-
- Update readme for submodule update procedure (https://github.com/anacierdem/libdragon-docker/pull/17)
|
|
403
|
-
|
|
404
|
-
### Fixed
|
|
405
|
-
|
|
406
|
-
- Prevent newlines in the output (https://github.com/anacierdem/libdragon-docker/pull/19)
|
|
407
|
-
|
|
408
|
-
## [4.1.3] - 2020-12-16
|
|
409
|
-
|
|
410
|
-
### Changed
|
|
411
|
-
|
|
412
|
-
- Removed broken patreon shield. This is only a readme change.
|
|
413
|
-
|
|
414
|
-
## [4.1.2] - 2020-12-15
|
|
415
|
-
|
|
416
|
-
### Changed
|
|
417
|
-
|
|
418
|
-
- Updated readme on how to use this repository.
|
|
419
|
-
- Update dependencies.
|
|
420
|
-
- Update ed64 to `1.2.0`.
|
|
421
|
-
|
|
422
|
-
### Fixed
|
|
423
|
-
|
|
424
|
-
- n64tool: fix bug in detection of unaligned image sizes (https://github.com/DragonMinded/libdragon/pull/109)
|
|
425
|
-
- tools/build: Set default number of jobs to number of processors (https://github.com/DragonMinded/libdragon/pull/111)
|
|
426
|
-
- Build script fixes (https://github.com/DragonMinded/libdragon/pull/112)
|
|
427
|
-
|
|
428
|
-
## [4.1.1] - 2020-10-05
|
|
429
|
-
|
|
430
|
-
### Changed
|
|
431
|
-
|
|
432
|
-
- Updated readme on how to use this repository. Fixes #14.
|
|
433
|
-
- Update dependencies.
|
|
434
|
-
|
|
435
|
-
### Fixed
|
|
436
|
-
|
|
437
|
-
- Fix examples' n64tool argument order. (https://github.com/DragonMinded/libdragon/pull/103)
|
|
438
|
-
- Change ucodetest Makefile mode from 775 to 644. (https://github.com/DragonMinded/libdragon/pull/104)
|
|
439
|
-
|
|
440
|
-
## [4.1.0] - 2019-05-21
|
|
441
|
-
|
|
442
|
-
### Fixed
|
|
443
|
-
|
|
444
|
-
- RSP macros now supports negative offsets. (https://github.com/DragonMinded/libdragon/pull/99)
|
|
445
|
-
- Exception handler properly works and sets cause register to `cr` on `reg_block_t`. (https://github.com/DragonMinded/libdragon/pull/95)
|
|
446
|
-
- Padding on data sections were causing boot issues. They are properly padded. (https://github.com/DragonMinded/libdragon/pull/98)
|
|
447
|
-
- n64tool: Broken ROM issue is fixed when doing byte-swapping or zero-padding. (https://github.com/DragonMinded/libdragon/pull/97)
|
|
448
|
-
- GCC 10 support with default `-fno-common`. (https://github.com/DragonMinded/libdragon/pull/96)
|
|
449
|
-
|
|
450
|
-
### Added
|
|
451
|
-
|
|
452
|
-
- Exception cause map is now implemented and it is accessible via `info` on `exception_t`. (https://github.com/DragonMinded/libdragon/pull/95)
|
|
453
|
-
|
|
454
|
-
### Changed
|
|
455
|
-
|
|
456
|
-
- n64tool: Less IO operations for faster ROM build times. (https://github.com/DragonMinded/libdragon/pull/97)
|
|
457
|
-
|
|
458
|
-
## [4.0.1] - 2019-04-25
|
|
459
|
-
|
|
460
|
-
### Fixed
|
|
461
|
-
|
|
462
|
-
- Add missing vscode files.
|
|
463
|
-
|
|
464
|
-
## [4.0.0] - 2019-04-24
|
|
465
|
-
|
|
466
|
-
### Added
|
|
467
|
-
|
|
468
|
-
- Add ability to run a local test bench with ed64 support.
|
|
469
|
-
- Add `dragonInstall` and `build` NPM scripts for managing the test bench.
|
|
470
|
-
- Add vscode files for quick test bench execution.
|
|
471
|
-
- `devDependencies` are now also searched for makefiles and installed in the container.
|
|
472
|
-
|
|
473
|
-
### Changed
|
|
474
|
-
|
|
475
|
-
- Container mount path for this repository (NPM scripts) is now the repository root instead of `.\libdragon-source`.
|
|
476
|
-
- make commands are now executed inside `.\libdragon-source`.
|
|
477
|
-
- This will not effect consumers unless they depend on container's `/libdragon` path for explicitly accessing source files or relative paths with make's `-C`. They are now relative to repository root.
|
|
478
|
-
- `--mount-path` is still supported although not used on this repository anymore. These changes do not effect a local/global installation.
|
|
479
|
-
|
|
480
|
-
## [3.2.0] - 2020-04-24
|
|
481
|
-
|
|
482
|
-
### Changed
|
|
483
|
-
|
|
484
|
-
- MIT license
|
|
485
|
-
|
|
486
|
-
## [3.1.0] - 2019-03-25
|
|
487
|
-
|
|
488
|
-
### Added
|
|
489
|
-
|
|
490
|
-
- Add function to detect expansion pak (https://github.com/DragonMinded/libdragon/pull/91)
|
|
491
|
-
|
|
492
|
-
### Changed
|
|
493
|
-
|
|
494
|
-
- No need a tag for a travis deploy anymore.
|
|
495
|
-
|
|
496
|
-
## [3.0.0] - 2019-02-11
|
|
497
|
-
|
|
498
|
-
### Changed
|
|
499
|
-
|
|
500
|
-
- Fixed vand opcode (https://github.com/DragonMinded/libdragon/pull/86)
|
|
501
|
-
- Reimplement mtc2/mfc2 with the extended syntax allowed by RSP (https://github.com/DragonMinded/libdragon/pull/89)
|
|
502
|
-
- Improve error message when using MIPS opcodes not available on RSP (https://github.com/DragonMinded/libdragon/pull/90)
|
|
503
|
-
|
|
504
|
-
### Added
|
|
505
|
-
|
|
506
|
-
- Transfer Pak support (https://github.com/DragonMinded/libdragon/pull/88)
|
|
507
|
-
|
|
508
|
-
## [2.0.5] - 2019-12-07
|
|
509
|
-
|
|
510
|
-
### Changed
|
|
511
|
-
|
|
512
|
-
- Added support information.
|
|
513
|
-
|
|
514
|
-
## [2.0.4] - 2019-12-07
|
|
515
|
-
|
|
516
|
-
### Changed
|
|
517
|
-
|
|
518
|
-
- Updated readme.
|
|
519
|
-
- Removed version injection as the versions have diverged with libdragon.
|
|
520
|
-
|
|
521
|
-
## [2.0.3] - 2019-12-06
|
|
522
|
-
|
|
523
|
-
### Changed
|
|
524
|
-
|
|
525
|
-
- Updated readme.
|
|
526
|
-
- Use base version for `start` and `download` actions if self-building in CI.
|
|
527
|
-
- Remove unnecessary toolchain start on `update` action.
|
|
528
|
-
- Start correct version on `buildDragon`.
|
|
529
|
-
|
|
530
|
-
## [2.0.2] - 2019-11-30
|
|
531
|
-
|
|
532
|
-
### Changed
|
|
533
|
-
|
|
534
|
-
- Running `install` command now starts the container.
|
|
535
|
-
|
|
536
|
-
## [2.0.1] - 2019-11-30
|
|
537
|
-
|
|
538
|
-
### Changed
|
|
539
|
-
|
|
540
|
-
- Updated repository URL.
|
|
541
|
-
|
|
542
|
-
## [2.0.0] - 2019-11-30
|
|
543
|
-
|
|
544
|
-
### Changed
|
|
545
|
-
|
|
546
|
-
- Separate the docker deployment process from library code.
|
|
547
|
-
- Upgraded `binutils` to 2.33.1.
|
|
548
|
-
- Improved ucode example and fixed byte alignment.
|
|
549
|
-
- Removed confusing assemply macros from `ucode.S`. This changed vector and scalar register names.
|
|
550
|
-
- Built a new base docker hub image tagged `toolchain`.
|
|
551
|
-
- Running `download` command no longer starts the container.
|
|
552
|
-
|
|
553
|
-
## [1.3.15] - 2019-11-01
|
|
554
|
-
|
|
555
|
-
### Changed
|
|
556
|
-
|
|
557
|
-
- `libdragon install` should skip CI checks.
|
|
558
|
-
|
|
559
|
-
## [1.3.14] - 2019-10-31
|
|
560
|
-
|
|
561
|
-
### Changed
|
|
562
|
-
|
|
563
|
-
- Skip make install if no Makefile is found.
|
|
564
|
-
|
|
565
|
-
## [1.3.12] - 2019-10-29
|
|
566
|
-
|
|
567
|
-
### Changed
|
|
568
|
-
|
|
569
|
-
- Reduce response time for NPM commands.
|
|
570
|
-
- Remove unnecessary console statements and double logs.
|
|
571
|
-
|
|
572
|
-
## [1.3.11] - 2019-10-29
|
|
573
|
-
|
|
574
|
-
### Fixed
|
|
575
|
-
|
|
576
|
-
- Fix problem with wait ticks. They do not lock the system now.
|
|
577
|
-
|
|
578
|
-
## [1.3.9] - 2019-10-27
|
|
579
|
-
|
|
580
|
-
### Added
|
|
581
|
-
|
|
582
|
-
- Add texture mirroring. https://github.com/DragonMinded/libdragon/commit/00a6cc8e6d136cf2578a50320f6ff0814dfb6657
|