|
1 | 1 | global HOMALG_PROJECT_PATH = dirname(@__DIR__)
|
2 | 2 |
|
3 |
| -## |
| 3 | +""" |
| 4 | + HomalgProject.PKG_DIR |
| 5 | +
|
| 6 | +The directory in which to install bundled |
| 7 | +[GAP](https://www.gap-system.org) packages from the github organization |
| 8 | +[https://github.com/homalg-project/](https://github.com/homalg-project/). |
| 9 | +It is equal to `joinpath(pathof(HomalgProject),"pkg")`. |
| 10 | +""" |
| 11 | +global PKG_DIR = joinpath(HOMALG_PROJECT_PATH, "pkg") |
| 12 | + |
| 13 | +""" |
| 14 | + DownloadPackageFromHomalgProject(pkgname) |
| 15 | +
|
| 16 | +Clone the package named `pkgname` from the github organization |
| 17 | +[https://github.com/homalg-project/](https://github.com/homalg-project/) to the subdirectory |
| 18 | +[`HomalgProject.PKG_DIR`](@ref). |
| 19 | +On success return `true` and on failure `false`. |
| 20 | +""" |
4 | 21 | function DownloadPackageFromHomalgProject(pkgname)
|
5 | 22 |
|
6 | 23 | res = GAP.Globals.LoadPackage(julia_to_gap("PackageManager"), false)
|
7 | 24 | @assert res
|
8 |
| - dir = HOMALG_PROJECT_PATH * "/pkg/" |
9 | 25 | git = julia_to_gap("git")
|
10 | 26 | clone = julia_to_gap("clone")
|
11 | 27 |
|
12 |
| - dir = dir * pkgname |
| 28 | + dir = joinpath(PKG_DIR, pkgname) |
13 | 29 |
|
14 | 30 | if isdir(dir)
|
15 | 31 | return true
|
|
31 | 47 |
|
32 | 48 | export DownloadPackageFromHomalgProject
|
33 | 49 |
|
34 |
| -## |
| 50 | +""" |
| 51 | + UpdatePackageFromHomalgProject(pkgname) |
| 52 | +
|
| 53 | +Update the package named `pkgname` located in the subdirectory |
| 54 | +[`HomalgProject.PKG_DIR`](@ref) from the github organization |
| 55 | +[https://github.com/homalg-project/](https://github.com/homalg-project/). |
| 56 | +If the package directory does not exist locally then invoke |
| 57 | +[`DownloadPackageFromHomalgProject`](@ref)(`pkgname`). |
| 58 | +On success return `true` and on failure `false`. |
| 59 | +""" |
35 | 60 | function UpdatePackageFromHomalgProject(pkgname)
|
36 | 61 |
|
37 | 62 | res = GAP.Globals.LoadPackage(julia_to_gap("PackageManager"), false)
|
38 | 63 | @assert res
|
39 |
| - dir = HOMALG_PROJECT_PATH * "/pkg/" |
40 | 64 | git = julia_to_gap("git")
|
41 | 65 | pull = julia_to_gap("pull")
|
42 | 66 |
|
43 |
| - dir = dir * pkgname |
| 67 | + dir = joinpath(PKG_DIR, pkgname) |
44 | 68 |
|
45 | 69 | if !isdir(dir)
|
46 | 70 | return DownloadPackageFromHomalgProject(pkgname)
|
|
62 | 86 |
|
63 | 87 | export UpdatePackageFromHomalgProject
|
64 | 88 |
|
65 |
| -## |
| 89 | +""" |
| 90 | + RemovePackageFromHomalgProject(pkgname) |
| 91 | +
|
| 92 | +Delete the package named `pkgname` from the subdirectory |
| 93 | +[`HomalgProject.PKG_DIR`](@ref). |
| 94 | +On success return `true` and on failure `false`. |
| 95 | +Removing a package and re-downloading it might be useful if udpating it fails. |
| 96 | +""" |
66 | 97 | function RemovePackageFromHomalgProject(pkgname)
|
67 | 98 |
|
68 | 99 | res = GAP.Globals.LoadPackage(julia_to_gap("PackageManager"), false)
|
69 | 100 | @assert res
|
70 |
| - dir = HOMALG_PROJECT_PATH * "/pkg/" |
71 | 101 | rm = julia_to_gap("rm")
|
72 | 102 | opt = julia_to_gap("-rf")
|
73 | 103 |
|
74 |
| - dir = dir * pkgname |
| 104 | + dir = joinpath(PKG_DIR, pkgname) |
75 | 105 |
|
76 | 106 | if !isdir(dir)
|
77 | 107 | return false
|
@@ -143,8 +173,22 @@ global PACKAGES_BASED_ON_CAP = [
|
143 | 173 | "ZariskiFrames",
|
144 | 174 | ]
|
145 | 175 |
|
| 176 | +""" |
| 177 | + HomalgProject.PACKAGES_TO_DOWNLOAD |
| 178 | +
|
| 179 | +List of packages which will be considered by |
| 180 | +* [`DownloadAllPackagesFromHomalgProject`](@ref)() |
| 181 | +* [`UpdateAllPackagesFromHomalgProject`](@ref)() |
| 182 | +* [`RemoveAllPackagesFromHomalgProject`](@ref)() |
| 183 | +""" |
146 | 184 | global PACKAGES_TO_DOWNLOAD = vcat(PACKAGES_BASED_ON_HOMALG, PACKAGES_BASED_ON_CAP)
|
147 | 185 |
|
| 186 | +""" |
| 187 | + DownloadAllPackagesFromHomalgProject() |
| 188 | +
|
| 189 | +Apply [`DownloadPackageFromHomalgProject`](@ref) to all packages |
| 190 | +listed in [`PACKAGES_TO_DOWNLOAD`](@ref). |
| 191 | +""" |
148 | 192 | function DownloadAllPackagesFromHomalgProject()
|
149 | 193 |
|
150 | 194 | for pkg in PACKAGES_TO_DOWNLOAD
|
|
155 | 199 |
|
156 | 200 | export DownloadAllPackagesFromHomalgProject
|
157 | 201 |
|
| 202 | +""" |
| 203 | + UpdateAllPackagesFromHomalgProject() |
| 204 | +
|
| 205 | +Apply [`UpdatePackageFromHomalgProject`](@ref) to all packages listed |
| 206 | +in [`PACKAGES_TO_DOWNLOAD`](@ref). |
| 207 | +""" |
158 | 208 | function UpdateAllPackagesFromHomalgProject()
|
159 | 209 |
|
160 | 210 | for pkg in PACKAGES_TO_DOWNLOAD
|
|
165 | 215 |
|
166 | 216 | export UpdateAllPackagesFromHomalgProject
|
167 | 217 |
|
| 218 | +""" |
| 219 | + RemoveAllPackagesFromHomalgProject() |
| 220 | +
|
| 221 | +Apply [`RemovePackageFromHomalgProject`](@ref) to all packages listed |
| 222 | +in [`PACKAGES_TO_DOWNLOAD`](@ref). |
| 223 | +""" |
168 | 224 | function RemoveAllPackagesFromHomalgProject()
|
169 | 225 |
|
170 | 226 | for pkg in PACKAGES_TO_DOWNLOAD
|
|
175 | 231 |
|
176 | 232 | export RemoveAllPackagesFromHomalgProject
|
177 | 233 |
|
| 234 | +""" |
| 235 | + HomalgProject.PACKAGES_TO_COMPILE |
| 236 | +
|
| 237 | +The list of all [GAP](https://www.gap-system.org) packages that will |
| 238 | +downloaded (once) and installed by `GAP.Packages.install` when `using |
| 239 | +Pkg; Pkg.build("HomalgProject")` is invoked. The latter should be |
| 240 | +called once `GAP.jl` gets updated. |
| 241 | +""" |
178 | 242 | global PACKAGES_TO_COMPILE = [
|
179 | 243 | "Gauss",
|
180 | 244 | #"Browse", ## do not compile browse as it results into GAP raising the error "Error opening terminal: xterm-256color."
|
|
0 commit comments