BryanDavis has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/400999 )

Change subject: wikidata: Install wikibase using individual extensions
......................................................................

wikidata: Install wikibase using individual extensions

The wikidatabuild repo has been deprecated and is no longer being
updated. Change install method to provision individual extensions as is
now done in the Wikimedia production deployment.

Bug: T181769
Bug: T183307
Co-Authored-By: Bryan Davis <bd...@wikimedia.org>
Change-Id: I3e90b08e518505b0a1111f1b57dda73b4b690627
---
M puppet/modules/role/manifests/wikidata.pp
M puppet/modules/role/templates/wikidata/init.php.erb
M puppet/modules/role/templates/wikidata/shared.php.erb
3 files changed, 114 insertions(+), 51 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/vagrant 
refs/changes/99/400999/1

diff --git a/puppet/modules/role/manifests/wikidata.pp 
b/puppet/modules/role/manifests/wikidata.pp
index 9ef3ada..8bfcb87 100644
--- a/puppet/modules/role/manifests/wikidata.pp
+++ b/puppet/modules/role/manifests/wikidata.pp
@@ -12,7 +12,67 @@
     include ::role::sitematrix
     include ::role::langwikis
 
-    mediawiki::wiki { 'wikidata': }
+    mediawiki::wiki { 'wikidata':
+        wgconf => {
+            'wmvExtensions' => {
+                  'ArticlePlaceholder' => false,
+            },
+        },
+    }
+
+    # Bootstrapping settings
+    mediawiki::settings { 'WikiData-Init':
+        priority => $::load_early,
+        values   => template('role/wikidata/init.php.erb'),
+    }
+
+    # Note composer installing all of the extensions will run into duplicate
+    # libs being installed. The first one that is loaded will actually be
+    # used, in theory we could run into issues here but as long as each
+    # extension is checked out at the same time / to the same version there
+    # shouldnt be issues...
+
+    # NOTE: there is always a wikibase_repo role, maybe we should use that?
+    mediawiki::extension { 'Wikibase':
+        composer     => true,
+        needs_update => true,
+        settings     => template('role/wikidata/shared.php.erb'),
+    }
+
+    mediawiki::extension { 'Wikidata.org':
+        needs_update => true,
+        wiki         => 'wikidata',
+    }
+
+    mediawiki::extension { 'PropertySuggester':
+        needs_update => true,
+        wiki         => 'wikidata',
+    }
+
+    mediawiki::extension { 'WikibaseQuality':
+        needs_update => true,
+        wiki         => 'wikidata',
+    }
+
+    mediawiki::extension { 'WikibaseQualityConstraints':
+        needs_update => true,
+        wiki         => 'wikidata',
+    }
+
+    mediawiki::extension { 'WikimediaBadges':
+        needs_update => true,
+    }
+
+    mediawiki::extension { 'ArticlePlaceholder':
+        needs_update => true,
+    }
+
+    mediawiki::maintenance { 'wikidata-populate-site-tables':
+        command     => "/usr/local/bin/foreachwikiwithextension Wikibase 
extensions/Wikibase/lib/maintenance/populateSitesTable.php --load-from 
http://en${mediawiki::multiwiki::base_domain}${::port_fragment}/w/api.php";,
+        refreshonly => true,
+    }
+
+    Mediawiki::Wiki<| |> ~> 
Mediawiki::Maintenance['wikidata-populate-site-tables']
 
     # TODO: Going to http://wikidata.wiki.local.wmftest.net:8080/
     # will work, but if you explicitly visit Main_Page in the main
@@ -31,32 +91,4 @@
         wiki    => 'wikidata',
         db_name => 'wikidatawiki',
     }
-
-    mediawiki::extension { 'WikidataBuildResources':
-        remote       => 
'https://gerrit.wikimedia.org/r/wikidata/build-resources',
-        entrypoint   => 'Wikidata.php',
-        composer     => true,
-        needs_update => true,
-        settings     => template('role/wikidata/shared.php.erb'),
-    }
-
-    mediawiki::settings { 'WikiData-Init':
-        priority => $::load_early,
-        values   => template('role/wikidata/init.php.erb'),
-    }
-
-    exec { 'wikidata-update-git-remote':
-        command => '/usr/bin/git remote set-url origin 
https://gerrit.wikimedia.org/r/wikidata/build-resources',
-        unless  => "/usr/bin/git remote -v | grep -q 
'https://gerrit.wikimedia.org/r/wikidata/build-resources'",
-        cwd     => "${::mediawiki::dir}/extensions/WikidataBuildResources",
-        require => Mediawiki::Extension['WikidataBuildResources'],
-    }
-
-    mediawiki::maintenance { 'wikidata-populate-site-tables':
-        command     => "/usr/local/bin/foreachwikiwithextension 
WikidataBuildResources 
extensions/WikidataBuildResources/extensions/Wikibase/lib/maintenance/populateSitesTable.php
 --load-from 
http://en${mediawiki::multiwiki::base_domain}${::port_fragment}/w/api.php";,
-        refreshonly => true,
-    }
-
-    Mediawiki::Wiki<| |> ~> 
Mediawiki::Maintenance['wikidata-populate-site-tables']
-
 }
diff --git a/puppet/modules/role/templates/wikidata/init.php.erb 
b/puppet/modules/role/templates/wikidata/init.php.erb
index f1e3c67..cab28fd 100644
--- a/puppet/modules/role/templates/wikidata/init.php.erb
+++ b/puppet/modules/role/templates/wikidata/init.php.erb
@@ -1,8 +1,3 @@
-if ( $wgDBname === 'wikidatawiki' ) {
-       $wmgUseWikibaseRepo = true;
-       $wmgUseWikibaseClient = true;
-       $wmgUseWikibasePropertySuggester = true;
-} else {
-       $wmgUseWikibaseRepo = false;
-       $wmgUseWikibaseClient = true;
-}
+$wgEnableWikibaseRepo = ( $wgDBname === 'wikidatawiki' );
+$wgEnableWikibaseClient = true;
+$wmgUseWikibasePropertySuggester = ( $wgDBname === 'wikidatawiki' );
diff --git a/puppet/modules/role/templates/wikidata/shared.php.erb 
b/puppet/modules/role/templates/wikidata/shared.php.erb
index b4949a8..b299ef4 100644
--- a/puppet/modules/role/templates/wikidata/shared.php.erb
+++ b/puppet/modules/role/templates/wikidata/shared.php.erb
@@ -1,27 +1,50 @@
+/*<?php*/
+
+// NOTE: do *not* define WB_NS_ITEM and WB_NS_ITEM_TALK when using a core
+// namespace for items!
 define( 'WB_NS_PROPERTY', 122 );
 define( 'WB_NS_PROPERTY_TALK', 123 );
+define( 'WB_NS_QUERY', 124 );
+define( 'WB_NS_QUERY_TALK', 125 );
 
 require_once "<%= scope['::mediawiki::multiwiki::script_dir'] %>/dblist.php";
+
+$wgWBSharedSettings = [];
 
 // Tell Wikibase which namespace to use for which kind of entity.
 // WikibaseClient wikis also need to know how this is configured on
 // WikibaseRepo wikis that it accesses, thus these are shared settings.
-$wgWBEntityNamespaces = [
+$wgWBSharedSettings['entityNamespaces'] = [
        'item' => NS_MAIN,
        'property' => WB_NS_PROPERTY
 ];
 
-if ( $wmgUseWikibaseRepo ) {
-       // Define custom namespaces. Use these exact constant names.
+$wgWBSharedSettings['specialSiteLinkGroups'][] = 'wikidata';
+
+if ( $wgEnableWikibaseRepo ) {
+       // Setup and alias for the main namespace
        $wgNamespaceAliases['Item'] = NS_MAIN;
        $wgNamespaceAliases['Item_talk'] = NS_TALK;
 
        // Register extra namespaces.
-       $wgWBNamespaces[WB_NS_PROPERTY] = 'Property';
-       $wgWBNamespaces[WB_NS_PROPERTY_TALK] = 'Property_talk';
+       $wgExtraNamespaces[WB_NS_PROPERTY] = 'Property';
+       $wgExtraNamespaces[WB_NS_PROPERTY_TALK] = 'Property_talk';
+       $wgExtraNamespaces[WB_NS_QUERY] = 'Query';
+       $wgExtraNamespaces[WB_NS_QUERY_TALK] = 'Query_talk';
 
-       $wgWBRepoSettings['entityNamespaces'] = $wgWBEntityNamespaces;
-       $wgExtraNamespaces = $wgWBNamespaces + $wgExtraNamespaces;
+       $wgWBRepoSettings = $wgWBSharedSettings + $wgWBRepoSettings;
+
+       $wgWBRepoSettings['statementSections'] = [
+               'item' => [
+                       'statements' => null,
+                       'identifiers' => [
+                               'type' => 'dataType',
+                               'dataTypes' => [ 'external-id' ],
+                       ],
+               ],
+       ];
+
+       $wgWBRepoSettings['normalizeItemByTitlePageNames'] = true;
 
        $wgWBRepoSettings['localClientDatabases'] = [];
        foreach ( $wgLocalDatabases as $db ) {
@@ -30,13 +53,26 @@
                }
        }
 
-} else {
-       $wgWBClientSettings['siteGlobalID'] = 'enwiki';
+       $wgPropertySuggesterMinProbability = 0.069;
 
-       $wgWBClientSettings['changesDatabase'] = 'wikidatawiki';
-       $wgWBClientSettings['repoDatabase'] = 'wikidatawiki';
-
-       $wgWBClientSettings['entityNamespaces'] = $wgWBEntityNamespaces;
+       require_once "<%= scope['::mediawiki::multiwiki::script_dir'] 
%>/dblist.php";
+       $wgWBRepoSettings['localClientDatabases'] = [];
+       foreach ( $wgLocalDatabases as $db ) {
+               if ( $db !== 'wikidatawiki' ) {
+                       $wgWBRepoSettings['localClientDatabases'][] = $db;
+               }
+       }
 }
 
-$wgWBClientSettings['repoUrl'] = '//wikidata<%= 
scope['::mediawiki::multiwiki::base_domain'] %><%= scope['::port_fragment'] %>';
+if ( $wgEnableWikibaseClient ) {
+       $wgWBClientSettings = $wgWBSharedSettings + $wgWBClientSettings;
+       $wgWBClientSettings['siteGlobalID'] = 'enwiki';
+       $wgWBClientSettings['changesDatabase'] = 'wikidatawiki';
+       $wgWBClientSettings['repoDatabase'] = 'wikidatawiki';
+       $wgWBClientSettings['repoNamespaces'] = [
+               'item' => '',
+               'property' => 'Property'
+       ];
+       $wgWBClientSettings['repoUrl'] = '//wikidata<%= 
scope['::mediawiki::multiwiki::base_domain'] %><%= scope['::port_fragment'] %>';
+}
+

-- 
To view, visit https://gerrit.wikimedia.org/r/400999
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3e90b08e518505b0a1111f1b57dda73b4b690627
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/vagrant
Gerrit-Branch: stretch-migration
Gerrit-Owner: BryanDavis <bda...@wikimedia.org>
Gerrit-Reviewer: Addshore <addshorew...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to