Skip to content
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

Improve Suggestion: build is not deterministic #84

Closed
SkywaveTM opened this issue Dec 26, 2022 · 9 comments
Closed

Improve Suggestion: build is not deterministic #84

SkywaveTM opened this issue Dec 26, 2022 · 9 comments
Assignees
Labels
enhancement New feature or request

Comments

@SkywaveTM
Copy link
Contributor

SkywaveTM commented Dec 26, 2022

1. What could be improved

freeze package, which is being used for generating model classes, could produces different outputs within the versions with the same major version (check commit history for that file). With current version constraints, auto generated codes are not deterministic since different versions of freezed package could be used.

You may reproduce this by playing with follwing commands - dart pub upgrade, dart pub downgrade, dart run build_runner build, dart run build_runner clean

2. Why should this be improved

Contributors may override exiting auto generated codes with auto generated codes in their environment.

3. Any risks?

You may need to manually upgrade freeze package.

4. More information

@github-actions
Copy link

Thanks for your contribution! :)

@SkywaveTM SkywaveTM changed the title Improve Suggestion: build is not reproducible Improve Suggestion: build is not deterministic Dec 26, 2022
@myConsciousness
Copy link
Member

Hi @SkywaveTM , thanks for your feedback! :)

I'm not very familiar with this issue, but is it related to this?

@SkywaveTM
Copy link
Contributor Author

SkywaveTM commented Dec 26, 2022

Hi @SkywaveTM , thanks for your feedback! :)

I'm not very familiar with this issue, but is it related to this?

Thanks for the reply :D

Anyway, It seems that that is not relevant since I don't get any exceptions. The problem I faced is that after preparing fresh dev environments, set by cloning the repository and runningdart pub get, dart run build_runner build complains about conflicts between auto generated source codes existing on the main branch and newly generated one.

@myConsciousness
Copy link
Member

Hi @SkywaveTM ,

What exactly is the conflict between sources? I have tried to follow your procedure to generate the code, but only got the following diffs.

  • instance_activity.g.dart
Map<String, dynamic> _$$_InstanceActivityToJson(_$_InstanceActivity instance) {
+  final val = <String, dynamic>{};
+
+  void writeNotNull(String key, dynamic value) {
+    if (value != null) {
+      val[key] = value;
+    }
+  }
+
+  writeNotNull('week', const UnixTimestampConverter().toJson(instance.week));
+  writeNotNull('statuses', const IntConverter().toJson(instance.statusCount));
+  writeNotNull('logins', const IntConverter().toJson(instance.loginCount));
+  writeNotNull(
+      'registrations', const IntConverter().toJson(instance.registrationCount));
+  return val;
}

Is this the conflict you are referring to?

@myConsciousness
Copy link
Member

@SkywaveTM ,

Or maybe this message?

[INFO] Found 93 declared outputs which already exist on disk. This is likely because the`.dart_tool/build` folder was deleted, or you are submitting generated files to your source repository.
Delete these files?
1 - Delete
2 - Cancel build
3 - List conflicts

@SkywaveTM
Copy link
Contributor Author

@SkywaveTM ,

Or maybe this message?

[INFO] Found 93 declared outputs which already exist on disk. This is likely because the`.dart_tool/build` folder was deleted, or you are submitting generated files to your source repository.
Delete these files?
1 - Delete
2 - Cancel build
3 - List conflicts

Yes, exactly (except that I got 89 conflicts). Maybe I had to include the whole outputs earlier :p

outputs
> dart run build_runner build
[INFO] Generating build script completed, took 663ms
[INFO] Precompiling build script... completed, took 9.7s
[INFO] Building new asset graph completed, took 1.3s
[INFO] Found 89 declared outputs which already exist on disk. This is likely because the`.dart_tool/build` folder was deleted, or you are submitting generated files to your source repository.
Delete these files?
1 - Delete
2 - Cancel build
3 - List conflicts
3
[INFO] Conflicts:
mastodon_api|lib/src/service/v2/entities/v2_search.freezed.dart
mastodon_api|lib/src/service/v2/entities/v2_instance_configuration.freezed.dart
mastodon_api|lib/src/service/v2/entities/v2_instance.freezed.dart
mastodon_api|lib/src/service/entities/application.freezed.dart
mastodon_api|lib/src/service/entities/emoji_reaction.freezed.dart
mastodon_api|lib/src/service/entities/instance_statistics.freezed.dart
mastodon_api|lib/src/service/entities/featured_tag.freezed.dart
mastodon_api|lib/src/service/entities/account_preferences.freezed.dart
mastodon_api|lib/src/service/entities/announcement_account.freezed.dart
mastodon_api|lib/src/service/entities/poll.freezed.dart
mastodon_api|lib/src/service/entities/status.freezed.dart
mastodon_api|lib/src/service/entities/announcement.freezed.dart
mastodon_api|lib/src/service/entities/blocked_domain.freezed.dart
mastodon_api|lib/src/service/entities/instance_accounts_configuration.freezed.dart
mastodon_api|lib/src/service/entities/thumbnail.freezed.dart
mastodon_api|lib/src/service/entities/instance_contact.freezed.dart
mastodon_api|lib/src/service/entities/account.freezed.dart
mastodon_api|lib/src/service/entities/thumbnail_version.freezed.dart
mastodon_api|lib/src/service/entities/tag.freezed.dart
mastodon_api|lib/src/service/entities/registered_application.freezed.dart
mastodon_api|lib/src/service/entities/instance_urls_configuration.freezed.dart
mastodon_api|lib/src/service/entities/instance_usage_users.freezed.dart
mastodon_api|lib/src/service/entities/instance.freezed.dart
mastodon_api|lib/src/service/entities/instance_usage.freezed.dart
mastodon_api|lib/src/service/entities/instance_configuration.freezed.dart
mastodon_api|lib/src/service/entities/usage_statistics.freezed.dart
mastodon_api|lib/src/service/entities/preview_card.freezed.dart
mastodon_api|lib/src/service/entities/instance_registrations.freezed.dart
mastodon_api|lib/src/service/entities/instance_translation_configuration.freezed.dart
mastodon_api|lib/src/service/entities/instance_polls_configuration.freezed.dart
mastodon_api|lib/src/service/entities/rate_limit.freezed.dart
mastodon_api|lib/src/service/entities/relationship.freezed.dart
mastodon_api|lib/src/service/entities/emoji.freezed.dart
mastodon_api|lib/src/service/entities/user_list.freezed.dart
mastodon_api|lib/src/service/entities/extended_description.freezed.dart
mastodon_api|lib/src/service/entities/instance_media_configuration.freezed.dart
mastodon_api|lib/src/service/entities/instance_statuses_configuration.freezed.dart
mastodon_api|lib/src/service/entities/rule.freezed.dart
mastodon_api|lib/src/service/entities/token.freezed.dart
mastodon_api|lib/src/service/entities/field.freezed.dart
mastodon_api|lib/src/service/entities/familiar_follower.freezed.dart
mastodon_api|lib/src/service/entities/announcement_status.freezed.dart
mastodon_api|lib/src/service/entities/poll_option.freezed.dart
mastodon_api|lib/src/service/entities/instance_activity.freezed.dart
mastodon_api|test/mocks/mock.mocks.dart
mastodon_api|lib/src/service/v2/entities/v2_search.g.dart
mastodon_api|lib/src/service/v2/entities/v2_instance_configuration.g.dart
mastodon_api|lib/src/service/v2/entities/v2_instance.g.dart
mastodon_api|lib/src/service/entities/application.g.dart
mastodon_api|lib/src/service/entities/emoji_reaction.g.dart
mastodon_api|lib/src/service/entities/instance_statistics.g.dart
mastodon_api|lib/src/service/entities/featured_tag.g.dart
mastodon_api|lib/src/service/entities/account_preferences.g.dart
mastodon_api|lib/src/service/entities/announcement_account.g.dart
mastodon_api|lib/src/service/entities/poll.g.dart
mastodon_api|lib/src/service/entities/status.g.dart
mastodon_api|lib/src/service/entities/announcement.g.dart
mastodon_api|lib/src/service/entities/blocked_domain.g.dart
mastodon_api|lib/src/service/entities/instance_accounts_configuration.g.dart
mastodon_api|lib/src/service/entities/thumbnail.g.dart
mastodon_api|lib/src/service/entities/instance_contact.g.dart
mastodon_api|lib/src/service/entities/account.g.dart
mastodon_api|lib/src/service/entities/thumbnail_version.g.dart
mastodon_api|lib/src/service/entities/tag.g.dart
mastodon_api|lib/src/service/entities/registered_application.g.dart
mastodon_api|lib/src/service/entities/instance_urls_configuration.g.dart
mastodon_api|lib/src/service/entities/instance_usage_users.g.dart
mastodon_api|lib/src/service/entities/instance.g.dart
mastodon_api|lib/src/service/entities/instance_usage.g.dart
mastodon_api|lib/src/service/entities/instance_configuration.g.dart
mastodon_api|lib/src/service/entities/usage_statistics.g.dart
mastodon_api|lib/src/service/entities/preview_card.g.dart
mastodon_api|lib/src/service/entities/instance_registrations.g.dart
mastodon_api|lib/src/service/entities/instance_translation_configuration.g.dart
mastodon_api|lib/src/service/entities/instance_polls_configuration.g.dart
mastodon_api|lib/src/service/entities/rate_limit.g.dart
mastodon_api|lib/src/service/entities/relationship.g.dart
mastodon_api|lib/src/service/entities/emoji.g.dart
mastodon_api|lib/src/service/entities/user_list.g.dart
mastodon_api|lib/src/service/entities/extended_description.g.dart
mastodon_api|lib/src/service/entities/instance_media_configuration.g.dart
mastodon_api|lib/src/service/entities/instance_statuses_configuration.g.dart
mastodon_api|lib/src/service/entities/rule.g.dart
mastodon_api|lib/src/service/entities/token.g.dart
mastodon_api|lib/src/service/entities/field.g.dart
mastodon_api|lib/src/service/entities/familiar_follower.g.dart
mastodon_api|lib/src/service/entities/announcement_status.g.dart
mastodon_api|lib/src/service/entities/poll_option.g.dart
mastodon_api|lib/src/service/entities/instance_activity.g.dart

Delete these files?
1 - Delete
2 - Cancel build
3 - List conflicts

@myConsciousness
Copy link
Member

@SkywaveTM ,

Oh just a few minutes ago I ran dart upgrade --null-safety and committed the code generated from the latest dependencies...

https://github.com/mastodon-dart/mastodon-api/pull/87/files

Basically, you can always use the latest dependencies, and also please select 1: Delete when that option is given, I'll check if it's a breaking change :)

btw, are you interested in pull requests? I'm welcome to add endpoints or even improve the internal process :)

There are few difficulties in adding endpoints, since a generic request mechanism and a mechanism for converting them to model objects already exist :)

@myConsciousness
Copy link
Member

@all-contributors please add @SkywaveTM for ideas

@allcontributors
Copy link
Contributor

@myConsciousness

I've put up a pull request to add @SkywaveTM! 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants