-
Notifications
You must be signed in to change notification settings - Fork 219
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
OS Error: File name too long, errno = 63 with ios build tasks #222
Comments
Could you try version There was a change in |
Feel like that change is going to haunt me 🙈 I think you are right in that it's related to this, though not sure how I could fix this since it's coming directly from calling Perhaps @Quijx may have some suggestions here? |
The problem here is that we are only excluding |
Setting |
I just tried 1.0.0 and can confirm it works https://github.com/ragingsquirrel3/amplify-flutter/actions/runs/1688807556 |
Ok. So my rough plan for now is to define: extension DirectoryUtils on Directory {
Stream<FileSystemEntity> listConditionallyRecursive({
required bool Function(Directory directory) recurseCondition,
bool followLinks = true,
}) {
Stream<FileSystemEntity> recurse(
Directory directory,
Set<String> visitedLinks,
) async* {
await for (final entity in directory.list(followLinks: false)) {
if (entity is File) {
yield entity;
} else if (entity is Directory) {
yield entity;
if (recurseCondition(entity)) {
yield* recurse(entity, visitedLinks);
}
} else if (entity is Link) {
if (!followLinks ||
visitedLinks.contains(await entity.resolveSymbolicLinks())) {
yield entity;
break;
}
// ignore: exhaustive_cases
switch (FileSystemEntity.typeSync(entity.path)) {
case FileSystemEntityType.directory:
final directory = Directory(entity.path);
yield directory;
if (recurseCondition(directory)) {
yield* recurse(
directory,
{...visitedLinks, await entity.resolveSymbolicLinks()},
);
}
break;
case FileSystemEntityType.file:
yield File(entity.path);
break;
case FileSystemEntityType.notFound:
yield entity;
break;
}
}
}
}
return recurse(this, {});
}
} and then do await for (final entity
in Directory(workspacePath).listConditionallyRecursive(
recurseCondition: (dir) {
final path = dir.path;
return !fvmGlob.matches(path) &&
!dartToolGlob.matches(path) &&
!symlinksPluginsGlob.matches(path);
},
)) { instead of this melos/packages/melos/lib/src/package.dart Line 338 in 3759f8a
(and of course remove the glob checks from inside the loops). It seems a bit overkill to me, so anyone got any better ideas? |
I have made a PR that should fix this issue: #227 |
Will try to do in the next few days. Thanks for working on a fix! |
I have been getting this error with melos version 1.1.2 but cannot repro when I downgrade to 0.4.11. When running a series of of melos commands (that happen to build example apps and run integration tests on ios simulator) I get the following error:
The same tasks do not fail when running similar tasks for android build, maybe because these file name are specific to ios? Not sure, however, this makes it hard to use latest melos in build so figured I would file here in case there is a workaround or if others have the same issue.
Here is a github action run where I repro:
https://github.com/ragingsquirrel3/amplify-flutter/actions/runs/1684037448
and the same workflow passing when only specifying melos 0.4.11
https://github.com/ragingsquirrel3/amplify-flutter/actions/runs/1684157840
The text was updated successfully, but these errors were encountered: