{"action":"closed","issue":{"url":"https://api.github.com/repos/gap-system/gap/issues/10","labels_url":"https://api.github.com/repos/gap-system/gap/issues/10/labels{/name}","comments_url":"https://api.github.com/repos/gap-system/gap/issues/10/comments","events_url":"https://api.github.com/repos/gap-system/gap/issues/10/events","html_url":"https://github.com/gap-system/gap/issues/10","id":59820320,"number":10,"title":"Allow starting GAP without GAPDoc, or ship GAPDoc with GAP","user":{"login":"fingolfin","id":241512,"avatar_url":"https://avatars.githubusercontent.com/u/241512?v=3","gravatar_id":"","url":"https://api.github.com/users/fingolfin","html_url":"https://github.com/fingolfin","followers_url":"https://api.github.com/users/fingolfin/followers","following_url":"https://api.github.com/users/fingolfin/following{/other_user}","gists_url":"https://api.github.com/users/fingolfin/gists{/gist_id}","starred_url":"https://api.github.com/users/fingolfin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fingolfin/subscriptions","organizations_url":"https://api.github.com/users/fingolfin/orgs","repos_url":"https://api.github.com/users/fingolfin/repos","events_url":"https://api.github.com/users/fingolfin/events{/privacy}","received_events_url":"https://api.github.com/users/fingolfin/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/gap-system/gap/labels/gapdays2015","name":"gapdays2015","color":"fbca04"}],"state":"closed","locked":false,"assignee":{"login":"markuspf","id":3589190,"avatar_url":"https://avatars.githubusercontent.com/u/3589190?v=3","gravatar_id":"","url":"https://api.github.com/users/markuspf","html_url":"https://github.com/markuspf","followers_url":"https://api.github.com/users/markuspf/followers","following_url":"https://api.github.com/users/markuspf/following{/other_user}","gists_url":"https://api.github.com/users/markuspf/gists{/gist_id}","starred_url":"https://api.github.com/users/markuspf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/markuspf/subscriptions","organizations_url":"https://api.github.com/users/markuspf/orgs","repos_url":"https://api.github.com/users/markuspf/repos","events_url":"https://api.github.com/users/markuspf/events{/privacy}","received_events_url":"https://api.github.com/users/markuspf/received_events","type":"User","site_admin":false},"milestone":null,"comments":27,"created_at":"2015-03-04T16:15:03Z","updated_at":"2015-06-22T13:28:56Z","closed_at":"2015-06-22T13:28:56Z","body":"Disclaimer: I like GAPDoc a lot, and this is not about getting rid of it, or not using it, or not installing it, or anything like that -- just making it easier to bootstrap a fresh GAP instance from source (see issue #5).\r\n\r\nI think GAP should be a stand-alone project in the sense that it should be possible to download its source code, compile and then run it, without further extras. (I do not consider GMP and readline \"extras\" in this sense, as they are easily installable via package managers on most / all Unix systems, including most Linux distros and Mac OS X; and in any case, GAP works without readline, and by default builds its own GMP).\r\n\r\nThis is currently not possible, because GAP refuses to start if it cannot find GAPDoc. I see two ways around that:\r\n\r\n1. Ship GAPDoc with GAP.\r\n2. Allow starting GAP without GAPDoc.\r\n\r\nRegarding the first option: We could include a copy of it in the repository. Or if Frank made a public git repository for GAPDoc somewhere, we could include it as a git submodule into the repository. I'd be happy with this/\r\n\r\nAs to the second option: Of course we should then print a big warning, as the documentation may not work. (Thinking about that, we probably should also print such a warning if GAPDoc is present, but the user has not compiled the manual...).\r\n\r\nI just tested, and this minimal diff actually allowed me to start GAP without GAPDoc:\r\n\r\n```diff\r\ndiff --git a/lib/package.gi b/lib/package.gi\r\nindex 375ebb2..4411a36 100644\r\n--- a/lib/package.gi\r\n+++ b/lib/package.gi\r\n@@ -1832,6 +1832,10 @@ BindGlobal( \"BANNER\", false );\r\n       fi;\r\n     fi;\r\n\r\n+    if not IsBound( GAPInfo.LoadPackageLevel ) then\r\n+      GAPInfo.LoadPackageLevel:= 0;\r\n+    fi;\r\n+\r\n     # If necessary then load the implementation part of the GAP library,\r\n     # and the implementation parts of the packages loaded up to now.\r\n     if not IsBound( GAPInfo.LibraryLoaded ) then\r\ndiff --git a/lib/system.g b/lib/system.g\r\nindex e4f5570..b11a880 100644\r\n--- a/lib/system.g\r\n+++ b/lib/system.g\r\n@@ -28,7 +28,7 @@ BIND_GLOBAL( \"GAPInfo\", rec(\r\n\r\n # Without the needed packages, GAP does not start.\r\n     Dependencies := rec(\r\n-      NeededOtherPackages := [\r\n+      SuggestedOtherPackages := [\r\n         [ \"gapdoc\", \">= 1.2\" ],\r\n       ],\r\n     ),\r\n```\r\n\r\nSome caveats apply:\r\n1. There is an error in `transatl.g`, because it uses `SubstitutionSublist` which is supplied by GAPDoc. Solution: Add a copy of `SubstitutionSublist` (under a different name) to `transatl.g`\r\n2. A big warning should be printed if GAPDoc is not present.\r\n3. Tests should be run to see if other parts of GAP (or possibly packages) indirectly depend on GAPDoc functions. For code in GAP itself, I think we should then try to cut the dependency; for packages that use GAPDoc functions, I think those are fine, we just should suggest to their authors that they add GAPDoc to the `NeededOtherPackages` list.\r\n\r\nOverall, this doesn't sound too difficult to me.\r\n\r\nThoughts?"}}