package is forbidden but only when it's imported

Viewed 53

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
  ...
...

0 Answers
Related