2

Here's an error I'm getting when trying to save the pubspec.yaml (which automatically runs flutter pub get) (I changed the names of the packages):

Running "flutter pub get" in ravencoin_front...

Because every version of package_b from path depends on package_c any which is forbidden, package_b from path is forbidden. So, because package_a depends on package_b from path, version solving failed. pub get failed (server unavailable) -- attempting retry 1 in 1 seconds...

So the question is, why is package_c forbidden? Here's what package_c looks like:

pubspec.yaml:

name: package_c
version: 1.0.0
description: Serverpod client for communication to the consent server and database.
homepage: https://github.com/.../package_c

environment:
  sdk: '>=2.12.0 <3.0.0'

dependencies:
  serverpod_client: ^0.9.8

/lib/package_c.dart

library package_c;

export 'package:package_c/src/protocol/protocol.dart';
export 'package:serverpod_client/serverpod_client.dart';

Finally here's protocol.dart:

/* AUTOMATICALLY GENERATED CODE DO NOT MODIFY */
/*   To generate run: "serverpod generate"    */

// ignore_for_file: public_member_api_docs
// ignore_for_file: unnecessary_import

library protocol;

// ignore: unused_import
import 'dart:typed_data';
import 'package:serverpod_client/serverpod_client.dart';

import 'consent_class.dart';
import 'consent_document_class.dart';

export 'consent_class.dart';
export 'consent_document_class.dart';
export 'client.dart';

class Protocol extends SerializationManager {
  static final Protocol instance = Protocol();

  final Map<String, constructor> _constructors = {};
  @override
  Map<String, constructor> get constructors => _constructors;

  Protocol() {
    constructors['Consent'] = (Map<String, dynamic> serialization) =>
        Consent.fromSerialization(serialization);
    constructors['ConsentDocument'] = (Map<String, dynamic> serialization) =>
        ConsentDocument.fromSerialization(serialization);
  }
}

There are no errors, not sure why this package is seen as "forbidden."

Now package_b also requires other pacakges and overrides their paths, and they work just fine. so at first I thought it doesn't like the "nested paths" part of this situation, but that's not it, otherwise it would complain about the others too.

I also wondered, maybe the issue is that it has two "library" listed in the files. but I don't think that's it because if I remove the library package_c; it has the same problem.

Maybe it's as simple as this package_c not being correctly setup as a package, but I think it is, I looked up the requirements and it seems to fit from what I found.

Just for good measure let me include some of package_b pubspect.yaml:

name: package_b
description: Ravencoin wallet backend library
version: 1.0.0

environment:
  sdk: '>=2.12.0 <3.0.0'

dependencies:
  ...
  package_d: ^4.0.1
  ...
  package_c: ^1.0.0

dependency_overrides:

  # causes error!
  package_c:
    path: ../../package_c

  # works fine!
  package_d:
    path: ../../package_d
  ...

Now, Here's the really weird part. remember, package_a imports pacakge_b which imports package_c. Well, package_b works just fine, dart pub get works great. but when I run flutter pub get in package_a, the error at the top occurs. the weird thing is only package_a complains about package_c, package_b is fine with package_c... what?

I guess I should include part of the pubspec.yaml for package_a too, this is the one that causes the error:

name: package_a
description: Ravencoin wallet frontend
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 1.0.0+0

environment:
  sdk: '>=2.14.0 <3.0.0'

dependencies:
  ...
  flutter:
    sdk: flutter
  package_b: ^1.0.0
  ...

dependency_overrides:
  package_b:
    path: ../package_b
  ...
...

MetaStack
  • 3,266
  • 4
  • 30
  • 67

0 Answers0