diff options
Diffstat (limited to 'pkgs/by-name/di/diesel-cli/package.nix')
-rw-r--r-- | pkgs/by-name/di/diesel-cli/package.nix | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/pkgs/by-name/di/diesel-cli/package.nix b/pkgs/by-name/di/diesel-cli/package.nix new file mode 100644 index 0000000000000..970d4458077ae --- /dev/null +++ b/pkgs/by-name/di/diesel-cli/package.nix @@ -0,0 +1,109 @@ +{ + lib, + stdenv, + fetchCrate, + rustPlatform, + installShellFiles, + darwin, + libiconv, + libmysqlclient, + nix-update-script, + openssl, + pkg-config, + postgresql, + sqlite, + testers, + zlib, + diesel-cli, + sqliteSupport ? true, + postgresqlSupport ? true, + mysqlSupport ? true, +}: +assert lib.assertMsg (lib.elem true [ + postgresqlSupport + mysqlSupport + sqliteSupport +]) "support for at least one database must be enabled"; + +rustPlatform.buildRustPackage rec { + pname = "diesel-cli"; + version = "2.2.1"; + + src = fetchCrate { + inherit version; + crateName = "diesel_cli"; + hash = "sha256-B+AHTJgOBUGVc4J2VcwuqVwAbm0wpsFHc9+gc5g2RAM="; + }; + + cargoHash = "sha256-HFhkePq2fZ7MxZfH0jLlS5B10jqf15+RUcGZnDbML5Q="; + + nativeBuildInputs = [ + installShellFiles + pkg-config + ]; + + buildInputs = + [ openssl ] + ++ lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.Security + ++ lib.optional (stdenv.isDarwin && mysqlSupport) libiconv + ++ lib.optional sqliteSupport sqlite + ++ lib.optional postgresqlSupport postgresql + ++ lib.optionals mysqlSupport [ + libmysqlclient + zlib + ]; + + buildNoDefaultFeatures = true; + buildFeatures = + lib.optional sqliteSupport "sqlite" + ++ lib.optional postgresqlSupport "postgres" + ++ lib.optional mysqlSupport "mysql"; + + checkFlags = [ + # all of these require a live database to be running + # `DATABASE_URL must be set in order to run tests: NotPresent` + "--skip=infer_schema_internals::information_schema::tests::get_primary_keys_only_includes_primary_key" + "--skip=infer_schema_internals::information_schema::tests::load_table_names_loads_from_custom_schema" + "--skip=infer_schema_internals::information_schema::tests::load_table_names_loads_from_public_schema_if_none_given" + "--skip=infer_schema_internals::information_schema::tests::load_table_names_output_is_ordered" + "--skip=infer_schema_internals::information_schema::tests::skip_views" + "--skip=infer_schema_internals::mysql::test::get_table_data_loads_column_information" + "--skip=infer_schema_internals::mysql::test::gets_table_comment" + "--skip=infer_schema_internals::pg::test::get_foreign_keys_loads_foreign_keys" + "--skip=infer_schema_internals::pg::test::get_foreign_keys_loads_foreign_keys_with_same_name" + "--skip=infer_schema_internals::pg::test::get_table_data_loads_column_information" + "--skip=infer_schema_internals::pg::test::gets_table_comment" + ]; + cargoCheckFeatures = buildFeatures; + + # Tests currently fail due to *many* duplicate definition errors + doCheck = false; + + postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' + installShellCompletion --cmd diesel \ + --bash <($out/bin/diesel completions bash) \ + --fish <($out/bin/diesel completions fish) \ + --zsh <($out/bin/diesel completions zsh) + ''; + + # Fix the build with mariadb, which otherwise shows "error adding symbols: + # DSO missing from command line" errors for libz and libssl. + env.NIX_LDFLAGS = lib.optionalString mysqlSupport "-lz -lssl -lcrypto"; + + passthru = { + tests.version = testers.testVersion { package = diesel-cli; }; + updateScript = nix-update-script { }; + }; + + meta = { + description = "Database tool for working with Rust projects that use Diesel"; + homepage = "https://diesel.rs"; + changelog = "https://github.com/diesel-rs/diesel/releases/tag/v${version}"; + license = with lib.licenses; [ + mit + asl20 + ]; + maintainers = with lib.maintainers; [ getchoo ]; + mainProgram = "diesel"; + }; +} |