diff --git a/lib/MusicBrainz/Script/JSONDump.pm b/lib/MusicBrainz/Script/JSONDump.pm index 42f38a6dd93..67fccaefe4d 100644 --- a/lib/MusicBrainz/Script/JSONDump.pm +++ b/lib/MusicBrainz/Script/JSONDump.pm @@ -91,6 +91,13 @@ sub create_json_dump { local $MusicBrainz::Script::MBDump::readme_text = <<'EOF'; The file under mbdump/ contains one document (entity) per line, in JSON format, and is named according to the type of entity in the dump. +EOF + + my $copying_text = <<'EOF'; +The content of this dump is licensed under the CC0 license +(see COPYING-PublicDomain), except for any data under keys "annotation", +"genres", "ratings" and "tags", which is licensed under a Creative Commons +Attribution-NonCommercial-ShareAlike 3.0 license (see COPYING-CCShareAlike). EOF my $mbdump = MusicBrainz::Script::MBDump->new( @@ -100,9 +107,16 @@ EOF %mbdump_options, ); + $mbdump->write_file('COPYING', $copying_text); + $mbdump->copy_file( catfile(DBDefs->MB_SERVER_ROOT, 'admin', 'COPYING-PublicDomain'), - 'COPYING' + 'COPYING-PublicDomain' + ) or die $OS_ERROR; + + $mbdump->copy_file( + catfile(DBDefs->MB_SERVER_ROOT, 'admin', 'COPYING-CCShareAlike'), + 'COPYING-CCShareAlike' ) or die $OS_ERROR; $mbdump->write_file('JSON_DUMPS_SCHEMA_NUMBER', "1\n"); @@ -114,7 +128,11 @@ EOF if ($self->compression_enabled) { $mbdump->make_tar( "$dump_fname.tar.xz", - "mbdump/$dump_fname", + ( + "mbdump/$dump_fname", + 'COPYING-PublicDomain', + 'COPYING-CCShareAlike', + ), 'JSON_DUMPS_SCHEMA_NUMBER', ); } else { diff --git a/t/script/DumpJSON.t b/t/script/DumpJSON.t index 7447eda0aa7..c6f68f9900a 100755 --- a/t/script/DumpJSON.t +++ b/t/script/DumpJSON.t @@ -127,6 +127,24 @@ test all => sub { File::Spec->catfile($dir, $entity, 'JSON_DUMPS_SCHEMA_NUMBER')); chomp $got; is($got, '1'); + + $got = read_file( + File::Spec->catfile($dir, $entity, 'COPYING')); + chomp $got; + ok( + $got =~ 'see COPYING-CCShareAlike', + 'The COPYING file refers users to the per-license COPYING files', + ); + + ok( + -f File::Spec->catfile($dir, $entity, 'COPYING-PublicDomain'), + 'The COPYING-PublicDomain file is included in the bundle', + ); + + ok( + -f File::Spec->catfile($dir, $entity, 'COPYING-CCShareAlike'), + 'The COPYING-CCShareAlike file is included in the bundle', + ); }; my $test_dumps_empty_except = sub {