Giter Club home page Giter Club logo

general's Introduction

General

Workflow Status
AutoMerge AutoMerge status
Continuous Integration (CI) Continuous Integration (CI) status
TagBot Triggers TagBot Triggers status
Update Manifests Update Manifests status

General is the default Julia package registry. Package registries are used by Julia's package manager Pkg.jl and includes information about packages such as versions, dependencies and compatibility constraints.

The General registry is open for everyone to use and provides access to a large ecosystem of packages.

If you are registering a new package, please make sure that you have read the package naming guidelines.

Follow along new package registrations with the #new-packages-feed channels in the community Slack or Zulip!

See our Contributing Guidelines for ways to get involved!

Registering a package in General

New packages and new versions of packages are added to the General registry by pull requests against this GitHub repository. It is highly recommended that you use Registrator.jl to automate this process. Registrator can either be used as a GitHub App or through a web interface, as decribed in the Registrator README.

When Registrator is triggered a pull request is opened against this repository. Pull requests that meet certain guidelines is merged automatically, see Automatic merging of pull requests. Other pull requests need to be manually reviewed and merged by a human.

It is highly recommended to also use TagBot, which automatically tags a release in your repository after the new release of your package is merged into the registry.

Registered packages MUST have an Open Source Initiative approved license, clearly marked via the license file (see below for definition) in the package repository. Packages that wrap proprietary libraries (or otherwise restrictive libraries) are acceptable if the licenses of those libraries permit open source distribution of the Julia wrapper code. The more restrictive license of the wrapped code:

  1. MUST be mentioned in either the third party notice file or the license file (preferably the third party notice file).
  2. SHOULD be mentioned in the README file.

Please note that:

  • "README file" refers to the plain text file named README.md, README, or something similar.
  • "License file" refers to the plain text file named LICENSE.md, LICENSE, COPYING, or something similar.
  • "Third party notice file" refers to the plain text file named THIRD_PARTY_NOTICE.md, THIRD_PARTY_NOTICE, or something similar.

Automatic merging of pull requests

Pull requests that meet certain criteria are automatically merged periodically. Only pull requests that are opened by Registrator are candidates for automatic merging.

The full list of AutoMerge guidelines is available in the RegistryCI documentation.

Please report issues with automatic merging to the RegistryCI repo.

Currently the waiting period is as follows:

  • New Julia packages: 3 days (this allows time for community feedback)
  • New versions of existing packages: 15 minutes
  • JLL package (binary dependencies): 15 minutes, for either a new package or a new version

FAQ

Do I need to register a package to install it?

No, you can simply do using Pkg; Pkg.add(url="https://github.com/JuliaLang/Example.jl") or ] add https://github.com/JuliaLang/Example.jl in the Pkg REPL mode to e.g. install the package Example.jl, even if it was not registered. When a package is installed this way, the URL is saved in the Manifest.toml, so that file is needed to resolve Pkg environments that have unregistered packages installed.

Registering allows the package to be added by Pkg.add("Example") or ] add Example in the Pkg REPL mode. This is true if the package is installed in any registry you have installed, not just General; you can even create your own registry!

Should I register my package now?

If your package is at a stage where it might be useful to others, or provide functionality other packages in General might want to rely on, go for it!

We ask that you consider the following best practices.

  • It is easier for others to use your package if it has documentation that explains what the package is for and how to use it. This could be in the form of a README or hosted documentation such as that generated by Documenter.jl.
  • And in order to provide reliable functionality for your users, it is also important to setup tests (see the Pkg.jl docs and the Test stdlib docs), which can be automatically run by free continuous integration services such as GitHub Actions. As part of the test suite, tools like Aqua.jl and JET.jl can help you remove bugs or typos and improve the general quality of your code.

Packages like PkgTemplates.jl or PkgSkeleton.jl provide easy ways to setup documentation, tests, and continuous integration.

Some types of packages should not be registered, or are not yet ready for registration:

  • The General registry is not a place for "personal packages" that consist of collections of "utility functions" nor for packages that are only useful for a closed group (like a research group or a company). For that, it is easy to set up your own registry using for example LocalRegistry.jl. The Pkg documentation about registries might be useful if you decide to go this route.
  • "Empty" packages that do not yet have functionality are not ready to be registered.

Can my package in this registry depend on unregistered packages?

No. In this registry, your package cannot depend on other packages that are unregistered. In addition, your package cannot depend on an unregistered version of an otherwise registered package. Both of these scenarios would cause this registry to be unreproducible.

Can my package be registered if it requires a version of Julia that is not yet released?

Yes, if your package is ready for use, it can be registered before Julia itself has a compatible release. The compat mechanism should be used to indicate which versions of Julia your package is compatible with. However, AutoMerge will fail to load your package (as currently it only operates on the latest release of Julia), so the initial package registration and every new version will require manual merging until a compatible version of Julia has been released.

My pull request was not approved for automatic merging, what do I do?

It is recommended that you fix the release to conform to the guidelines and then retrigger Registrator on the branch/commit that includes the fix.

If you for some reason can't (or won't) adhere to the guidelines you will have to wait for a human to review/merge the pull request. You can contact a human in the #pkg-registration channel in the official Julia Slack to expedite this process.

My package fails to load because it needs proprietary software/additional setup to work, what can I do?

Before merging a pull request, AutoMerge will check that your package can be installed and loaded. It is OK for your package to not be fully functional, but making it at least load successfully would streamline registration, as it does not require manual intervention from the registry maintainers. This would also let other packages depend on it, and use its functionalities only when the proprietary software is available in the system, as done for example by the CUDA.jl package. If you are not able or willing to make your package always loadable without the proprietary dependency (which is the preferred solution), you can check if the environment variable JULIA_REGISTRYCI_AUTOMERGE is equal to true and make your package loadable during AutoMerge at least, so that it can be registered without manual intervention. Examples of packages with proprietary software that use the environment variable check include Gurobi.jl and CPLEX.jl.

My pull request has a merge conflict, what do I do?

Retrigger Registrator.

How do I retrigger Registrator in order to update my pull request?

Do what you did when you triggered Registrator the first time.

For more details, please see the Registrator.jl README.

I commented @JuliaRegistrator register on a pull request in the General registry, but nothing happened.

If you want to retrigger Registrator by using the Registrator comment-bot, you need to post the @JuliaRegistrator register comment on a commit in your repository (the repository that contains your package). Do not post any comments of the form @JuliaRegistrator ... in the JuliaRegistries/General repository.

AutoMerge is blocked by one of my comments, how do I unblock it?

Simply edit [noblock] into all your comments. AutoMerge periodically checks each PR, and if there are no blocking comments when it checks (i.e. all comments have [noblock] present), it will continue to merge (assuming of course that all of its other checks have passed).

Are there any requirements for package names in the General registry?

There are no hard requirements, but it is highly recommended to follow the package naming guidelines.

What to do when asked to reconsider/update the package name?

If someone comments on the name of your package when you first release it it is often because it does not follow the naming guidelines. If you think that your package should not follow those conventions for some reason or another, just explain why. Otherwise, it is often a good idea to just rename the package -- it is more disruptive to do so after it is already registered, and sticking to the conventions makes it easier for users to navigate Julia's many varied packages.

As long as the package is not yet registered, renaming the package from OldName.jl to NewName.jl is reasonably straightforward:

  • Rename the GitHub repository to NewName.jl
  • Rename the file src/OldName.jl to src/NewName.jl
  • Rename the top-level module to NewName
  • Rename the package name in Project.toml from OldName to NewName
  • Update tests, documentation, etc, to reference the new name
  • Once you are done renaming the package, retrigger registration. This will make a new pull request to General. It is helpful to comment in the old pull request that it can be closed, linking to the new one.

How do I rename an existing registered package?

Technically, you can't rename a package once registered, as this would break existing users. But you can re-register the package again under a new name with a new UUID, which basically has the same effect.

  • Follow the instructions above for renaming a package: rename on GitHub, rename files etc.
    • if you rename the repository so it has a new URL, make a PR to edit the URL stored in the registry for the old package name to point to the new URL (example). This allows the old versions of the package under the previous name to continue to work.
  • Generate a new UUID for the Project.toml
  • Increment the version in the Project.toml as a breaking change.
  • Register it as if it were a new package
  • Comment on the PR, that this is a rename.
  • It will have to go though the normal criteria for registring a new package.
    • In particular, even if you get it merged manually, it will need to wait 3 days from the PR being opened.
    • This gives others and yourself the chance to point out any naming issues.

You also should let your users know about the rename, e.g. by placing a note in the README, or opening PRs/issues on downstream packages to change over.

How do I transfer a package to an organization or another user?

  • Use the GitHub transfer option in the settings.
  • Make a pull request to this repository in which you edit the repo URL in the package's Package.toml file (e.g E/Example/Package.toml).
  • If the PR is not attended to, or if you have any questions, you can ask for help in the #pkg-registration Slack channel.

Technically if you skip the second step things will keep working, because GitHub will redirect; but it is best practice. For this reason, when you try to register a new release, the Julia Registrator will complain if the second step is skipped.

How do I move a subdirectory package to its own repository?

Follow these steps to move a subdirectory package to its own repository:

How do I transfer a package to General from another registry?

You can simply register your next release in General (and don't change the package's name or UUID!). This will be treated as a new package registration in General and be subject to the usual 3-day waiting period. Once registered, Pkg.jl will look at all the versions from all registries it knows about, and use the compat mechanism to figure out what version to resolve to as usual, regardless if some versions are in different registries from others.

Where do I report a problem with a package in the General registry?

Report it to the package repository.

How do I remove a package or version from the registry?

You can't. Package registrations are permanent. A version can not be overwritten in the registry, and code cannot be deleted.

Can my package be registered without an OSI approved license?

No, sorry. The registry is maintained by volunteers, and we don't have a legal team who can thoroughly review licenses. It is very easy to accidentally wander into legally murky territory when combining common OSI licenses1 like GPL with non-OSI licenses and we don't want to subject Julia users to that risk when installing packages registered in General. See these comments for more discussion. We are not lawyers and this is not legal advice.

Can my package registration PR be merged early?

New packages must typically wait for the 3 day timer to expire before they are merged, either automatically by the bot or manually. This waiting period allows time for community comment and review, and to provide time to check things like:

  • the name is appropriate (e.g. "safe for work", not typosquatting, and fitting with the Pkg naming guidelines)
  • the package is functional and non-empty
  • the code is not malicious (e.g. exploiting security vulnerabilities)
  • there is some form of README or documentation to enable users to use the package

If there is some urgent need for the package to be registered (for example, an upcoming talk featuring the package or other external deadline), the waiting period can be expedited by request made in the #pkg-registration channel on the public Julia Language Slack, or directly on the PR itself. This request should include a link to the registration PR and why an expedited merge is needed. In this case, a registry maintainer (see below) can manually review the package (often with stricter standards than the typical package faces, given the lack of bandwidth to review all packages thoroughly).

Who can approve an early merge?

Any registry maintainer may merge a package registration PR early. Early merges should still be discussed on the #pkg-registration slack channel before merging. Registry maintainers are discouraged from merging packages they directly or indirectly maintain as mentioned in CONTRIBUTING.md.

When is yanking a release appropriate?

Releases that have already merged can be marked as "yanked" by adding yanked = true under the release entry in Versions.toml (example). This tells Pkg to no longer resolve those versions (e.g. when running Pkg.add() or Pkg.resolve()). However, to maintain perfect reproducibility of environments specified with a full manifest, yanked versions that are specifically listed in a manifest will continue to instantiate when running Pkg.instantiate() and yanked versions cannot be re-registered in General with different source code.

If a release is very broken (e.g. contains security vulnerabilities or bugs that are significantly worse than the package erroring on load), then it may be yanked. Releasing an ordinary patch release—potentially reusing the exact same source code as a previous release without the major bug—is a faster, easier to deploy, and less disruptive way to prevent most users from installing a specific version. If you seek to yank a very broken release, you should typically also release a patch release.

There is however, a special category of bugged releases that can not be resolved by having a patch release. These also may to be resolved by yanking. That special category is when the compat bounds have been set too wide. i.e. say v2.10.0 was released using a feature not on julia v1.6 but the compat entry for julia was not raised in the release. In this case releasing a v2.10.1 with the corrected julia compat would not solve the issue as on julia v1.6 Pkg would still resolve the broken v2.10.0, and as a minor bump, reverting the code changes would not be valid in a patch bump. In this case one may either submit a PR to retroactively adjust the compat bounds of previous versions (best user-facing results, but slow and error-prone to implement) or yank the offending release. See the SciML collaborative practices for more guidance.

If yanking is urgent, open a PR and raise it on the #pkg-registration slack channel

For releases with actively exploited security vulnerabilities (i.e. malicious code) yanking is not suficient. In this case, the release should be completely deleted from the registry and a new patch release should be issued. This is a drastic measure that breaks reproducibility guarantees and has never been performed as of April, 2024.

Registry maintenance

The General registry is a shared resource that belongs to the entire Julia community. Therefore, we welcome comments and suggestions from everyone in the Julia community. However, all decisions regarding the General registry are ultimately up to the discretion of the registry maintainers.

See our Contributing Guidelines for ways to get involved!

Disclaimer

The General registry is open for everyone to register packages in. The General registry is not a curated list of Julia packages. In particular this means that:

  • packages included in the General registry are not reviewed/scrutinized;
  • packages included in the General registry are not "official" packages and not endorsed/approved by the JuliaLang organization;
  • the General registry and its maintainers are not responsible for the package code you install through the General registry -- you are responsible for reviewing your code dependencies.

Footnotes

  1. Note that even within the world of OSI licenses, there are combinations of OSI licenses which are not legal to use together, such as GPL2 with Apache2.

general's People

Contributors

ablaom avatar ararslan avatar chriselrod avatar chrisrackauckas avatar christopher-dg avatar davidanthoff avatar dependabot[bot] avatar devmotion avatar dilumaluthge avatar dlfivefifty avatar edls-group avatar ericphanson avatar fredrikekre avatar giordano avatar github-actions[bot] avatar jlbuild avatar johnnychen94 avatar juliaregistrator avatar juliatagbot avatar juliohm avatar kristofferc avatar maleadt avatar mlubin avatar odow avatar oxinabox avatar staticfloat avatar stefankarpinski avatar timholy avatar vchuravy avatar viralbshah avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

general's Issues

What to do after renaming a package?

I moved my package from https://github.com/tkf/ProgressMeterLogging.jl to https://github.com/tkf/ConsoleProgressMonitor.jl and re-registered it with a different UUID. ProgressMeterLogging is still installable presumably because github redirects the old repository to the new one. I renamed old tags so the old release of ProgressMeterLogging.jl is "rooted" (and it's accessible via ConsoleProgressMonitor#master anyway).

But are there any other actions I should take after re-registration? In particular:

  • Should I re-create the old repository (https://github.com/tkf/ProgressMeterLogging.jl) with all the releases? (and maybe archive it afterward.)

  • Is there any recommended way to discourage people from installing the old package? Ideally, Pkg.add should fail and it should not be listed in pkg.julialang.org (although it looks like it hasn't been updated for a while ATM). An approximation I can implement is to recommend installing the new package via @error in __init__ of the old package.

If auto merge fails, provide next steps

So based on the text below, does this mean I should push to the original branch with the updated criteria to auto-merge? Or do I need to re-do the whole process? I think this could be more clear.

Note that the guidelines are only required for the pull request to be merged automatically. However, it is strongly recommended to follow them, since otherwise the pull request needs to be manually reviewed and merged by a human.

please advise on package name

I am about to convert skeleton.jl, a script that generates package skeletons, to a package itself, and plan to register it.

Should I

  1. just capitalize to Skeleton,
  2. consider keeping the lowercase skeleton,
  3. or change to something more descriptive, eg PkgSkeleton?

(I hope it is OK to ask things like this here, would prefer to make these decisions now instead of after a registration attempt).

Weaken auto-merge criteria on sequential versioning

I was slightly surprised that I tagging new patches for previous versions is not auto-merged, e.g., tagging v0.6.1 after v0.7:

#5751

This seems like a very "normal" situation where, for whatever reason, older versions need to be maintained, in fact Julia does it as well (v1.0.5 tagged after v1.1 for example). This isn't the case for me, but one could imagine that this might arise from security bug fixes, in which case rapid merging would be ideal.

I'd propose changing auto-merge to allow for older tags, perhaps under the condition that the tag is on a separate branch to master, e.g., the tag above was on the branch release-0.6.

Is it possible to remove a package ?

Hi, I registered VTKView.jl , which will have several serious binary dependencies which will take some time to become stable. So I continue to develop the package complex in my own registry. The idea is to transfer things here at a certain point of time. In order to avoid confusion I think it would be better to remove it here. Would this be possible ?

Cap older versions breaking everything?

I've been pulling my hair out the past two hours because all of a sudden packages will not update, install, resolve, remove, anything...

I keep getting this error when using Pkg3:
restricted by julia compatibility requirements to versions: uninstalled — no versions left

When I inspected the Compat.toml of the offending packages, I saw that indeed, packages which had been working on 0.7/1.0 were now only accepting julia 0.6.

Then I noticed the most recent commit 0c75a4d, which made this change, intentionally?

So what am I supposed to do? I can no longer use the package manager. Am I not using pkg3 correctly, or is this a bug?

OpenCL

Hello, there is a version of OpenCL which is compatible with Julia version > 0.7.0 (i.e. 1.0.0, and 1.1.0). Is the version that the package manager install specified here? Pkg now only get those earlier versions, where there are syntax changes that breaks it.

What are the steps to migrate a registered package to an organization?

I would like to migrate some package that are already registered in the registry to a GitHub organization I've just created. I couldn't find the steps in the README FAQ, could you please confirm that I can just proceed with the normal GitHub steps to migrate, and then later submit a PR here to update the URL?

Move package files to subdirectory?

Things are not as bad here as in METADATA where the README is not visible, but if we add a README to this repo, it would still show up fairly low on the site. Might be better to put all the package file in a single directory such that the root directory has relatively few files.

No warning for meaningless compat entry

#7046

To register WebIO v0.8.13 (lucky number 13!), I added JSExpr to the compat because I was trying to fix an issue where JSExpr v1 has just been released and was incompatible.

The merge bot yelled at me because I didn't have compat for other things so I decided to also add everything else. However, it looks like when I re-triggered the merge bot, it lost the compat entry for JSExpr?

JSExpr v0.5 depends on WebIO, but in v1.0, we dropped the dependency (and were planning on reversing it for WebIO v1.0). I forgot that WebIO doesn't actually depend on JSExpr though when I added the compat entry.

The registrator bot should probably(?) yell at me because JSExpr is not a dependency of WebIO (which I discovered with #7145).

Unexisting dependencies

Hi, I might be wrong but there are uuids used in dependencies that do not have a corresponding package, is this expected? I found those that are actually referred (if my script is right) by the highest package version. Like N/NetworkLearning/Versions.toml containing "0.1.0", N/NetworkLearning/Deps.toml containing Future "9fa8497b-333b-5362-9e8d-4d0656e87820", but this package does not exists:

  • 2a0f44e-6c83-55bd-87e4-b1978d98bd5f
  • b77e0a4c-d291-57a0-90e8-8db25a27a240
  • 8bf52ea8-c179-5cab-976a-9e18b702a9bc
  • a63ad114-7e13-5084-954f-fe012c677804
  • 37e2e46d-f89d-539d-b4ee-838fcccc9c8e
  • 8bb1440f-4735-579b-a4ab-409b98df4dab
  • 2f01184e-e22b-5df5-ae63-d93ebab69eaf
  • 7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee
  • 8dfed614-e22c-5e08-85e1-65c5234f0b40
  • de0858da-6303-5e67-8744-51eddeeeb8d7
  • 44cfe95a-1eb2-52ea-b672-e2afdf69b78f
  • 8ba89e20-285c-5b6f-9357-94700520ee1b
  • 9abbd945-dff8-562f-b5e8-e1ebf5ef1b79
  • 1a1011a3-84de-559e-8e89-a11a2f7dc383
  • 9a3f8284-a2c9-5f02-9a11-845980a1fd5c
  • 8f399da3-3557-5675-b5ff-fb832c97cbdb
  • 4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5
  • de555fa4-b82f-55e7-8b71-53f60bbc027d
  • 6462fe0b-24de-5631-8697-dd941f90decc
  • 9fa8497b-333b-5362-9e8d-4d0656e87820

New cap breaks installation

The newly introduced cap seems too harsh! For example I use the UnalignedVectors package in Julia 1.0 without any problems, but suddenly I just cannot install it: ERROR: LoadError: Unsatisfiable requirements detected for package UnalignedVectors [f306ff79]. And I cannot find a way to ignore this error and proceed with installation, as I know that this package works completely fine.

This is a single example, and I'm sure there are many other cases.

change ApproxFun{Base,Fourier} bounds?

@dlfivefifty, these bounds on your packages look suspicious:

A/ApproxFunBase/Compat.toml
32-["0.0.4"]
33:julia = "0.7-1.1"

A/ApproxFunFourier/Compat.toml
27-["0.0.2-0"]
31:julia = "0.7-1.1"

A/ApproxManifoldProducts/Compat.toml
14-["0.0.2-0"]
16:julia = "0.7-1.1"

Can you confirm or deny that these should be changed to 0.7-1?

GPG-sign the commits made by @JuliaRegistrator and @jlbuild

Since so many users rely on the General registry, it would be nice to increase the level of security.

I don't think that it is feasible to ask all users that make manual PRs to General to GPG-sign their commits.

I do think, however, that is it reasonable for the two main bot users that generate automated PRs to General (@JuliaRegistrator and @jlbuild) to GPG-sign their automatically generated commits.

Related issues:

Add README with basic documentation?

This could clarify both

  • what the General registry is, how one is expected to interact with it as a package developer (i.e. Registrator, optionally TagBot, but also you can make PRs to edit files directly)
  • how to do a few things beyond tagging a new release e.g. how do I rename a package? How do I "blacklist" a version?

installing MAT Pkg

screenshot from 2019-02-02 15-31-57
screenshot from 2019-02-02 15-32-22
incorrect files are installed in the .julia directory when using Pkg.add("MAT")
I had to clone https://github.com/JuliaIO/MAT.jl and replace the file in .julia/packages directory in order to get it to precompile successfully and work.

Unable to add General registry due to git branch name collision

I am trying to perform Pkg.Registry.add("General") using a pristine Julia 1.1.1 distribution in Docker (from amazonlinux:2). It seems there are two branches register/secp256k1 and register/Secp256k1, which are causing a name collision in git clone and preventing adding the General registry. This means I cannot add any package, and as a result am completely blocked from using Julia. It seems like this would affect everyone. Probably the resolution will be to remove the register/secp256k1 branch by someone with write access to the repository.

[ Info: registry status
Registry Status
(no registries found)
[ Info: registry add General
Cloning registry from "https://github.com/JuliaRegistries/General.git"
ERROR: LoadError: ArgumentError: '/var/package/depot/registries/General/.git/logs/refs/remotes/origin/register/secp256k1' exists. force=true is required to remove '/var/package/depot/registries/General/.git/logs/refs/remotes/origin/register/secp256k1' before copying.
Stacktrace:
[1] #checkfor_mv_cp_cptree#10(::Bool, ::Function, ::String, ::String, ::String) at ./file.jl:293
[2] #checkfor_mv_cp_cptree at ./none:0 [inlined]
[3] #cptree#11(::Bool, ::Bool, ::Function, ::String, ::String) at ./file.jl:302
[4] #cptree at ./none:0 [inlined]
[5] #cptree#11(::Bool, ::Bool, ::Function, ::String, ::String) at ./file.jl:309
[6] #cptree at ./none:0 [inlined]
[7] #cptree#11(::Bool, ::Bool, ::Function, ::String, ::String) at ./file.jl:309
[8] #cptree at ./none:0 [inlined]
[9] #cptree#11(::Bool, ::Bool, ::Function, ::String, ::String) at ./file.jl:309
[10] #cptree at ./none:0 [inlined]
[11] #cptree#11(::Bool, ::Bool, ::Function, ::String, ::String) at ./file.jl:309
[12] #cptree at ./none:0 [inlined]
[13] #cptree#11(::Bool, ::Bool, ::Function, ::String, ::String) at ./file.jl:309
[14] #cptree at ./none:0 [inlined]
[15] #cptree#11(::Bool, ::Bool, ::Function, ::String, ::String) at ./file.jl:309
[16] #cptree at ./none:0 [inlined]
[17] #cptree#11(::Bool, ::Bool, ::Function, ::String, ::String) at ./file.jl:309
[18] #cptree at ./none:0 [inlined]
[19] #cp#12(::Bool, ::Bool, ::Function, ::String, ::String) at ./file.jl:334
[20] cp(::String, ::String) at ./file.jl:330
[21] clone_or_cp_registries(::Pkg.Types.Context, ::Array{Pkg.Types.RegistrySpec,1}, ::String) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.1/Pkg/src/Types.jl:1131
[22] clone_or_cp_registries at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.1/Pkg/src/Types.jl:1090 [inlined]
[23] add at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.1/Pkg/src/Registry.jl:28 [inlined]
[24] add at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.1/Pkg/src/Registry.jl:27 [inlined]
[25] add(::Array{String,1}) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.1/Pkg/src/Registry.jl:26
[26] add(::String) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.1/Pkg/src/Registry.jl:25
[27] top-level scope at none:0
[28] include at ./boot.jl:326 [inlined]
[29] include_relative(::Module, ::String) at ./loading.jl:1038
[30] include(::Module, ::String) at ./sysimg.jl:29
[31] exec_options(::Base.JLOptions) at ./client.jl:267
[32] _start() at ./client.jl:436
in expression starting at /var/scripts/package.jl:18

Registry appears broken for Julia 1.0

As of the last commit (6595025 @StefanKarpinski ) performing an update in the package manager results in Unsatisfiable requirements detected for package ... for nearly all packages.
For anybody encountering this, I was able to git checkout the General repository at the commit before it and it now functions as expected.

Untracked packages in General registry

Following folders (And the relevant toml’s) are present in the registry, but the relevant package entry is not present in Registry.toml , so users cannot install these packages

  • Arduino = https:/github.com/JuliaRegistries/General/tree/master/A/Arduino
  • Chunks = https:/github.com/JuliaRegistries/General/tree/master/C/Chunks
  • ControlCore = https:/github.com/JuliaRegistries/General/tree/master/C/ControlCore
  • DotOverloading = https:/github.com/JuliaRegistries/General/tree/master/D/DotOverloading
  • DynamicalBilliardsPlotting = https:/github.com/JuliaRegistries/General/tree/master/D/DynamicalBilliardsPlotting
  • GetC = https:/github.com/JuliaRegistries/General/tree/master/G/GetC
  • GLUT = https:/github.com/JuliaRegistries/General/tree/master/G/GLUT
  • KeyedTables = https:/github.com/JuliaRegistries/General/tree/master/K/KeyedTables
  • LazyCall = https:/github.com/JuliaRegistries/General/tree/master/L/LazyCall
  • LazyContext = https:/github.com/JuliaRegistries/General/tree/master/L/LazyContext
  • LazyQuery = "https:/github.com/JuliaRegistries/General/tree/master/L/LazyQuery"
  • NanoTimes = https:/github.com/JuliaRegistries/General/tree/master/N/NanoTimes
  • OnlineMoments = "https:/github.com/JuliaRegistries/General/tree/master/O/OnlineMoments"
  • OpenGL = "https:/github.com/JuliaRegistries/General/tree/master/O/OpenGL"
  • OrthogonalPolynomials = https:/github.com/JuliaRegistries/General/tree/master/O/OrthogonalPolynomials
  • Parts = https:/github.com/JuliaRegistries/General/tree/master/P/Parts
  • PhasedArrayTracking = https:/github.com/JuliaRegistries/General/tree/master/P/PhasedArrayTracking
  • ProjectiveDictionaryPairLearning = https:/github.com/JuliaRegistries/General/tree/master/P/ProjectiveDictionaryPairLearning
  • React = https:/github.com/JuliaRegistries/General/tree/master/R/React
  • RecurUnroll = https:/github.com/JuliaRegistries/General/tree/master/R/RecurUnroll
  • RequirementVersions = "https:/github.com/JuliaRegistries/General/tree/master/R/RequirementVersions"
  • SDL = https:/github.com/JuliaRegistries/General/tree/master/S/SDL
  • SessionHacker = https:/github.com/JuliaRegistries/General/tree/master/S/SessionHacker
  • SimilarReferences = https:/github.com/JuliaRegistries/General/tree/master/S/SimilarReferences
  • Sparrow = https:/github.com/JuliaRegistries/General/tree/master/S/Sparrow
  • StringArrays = https:/github.com/JuliaRegistries/General/tree/master/S/StringArrays
  • TypedBools = https:/github.com/JuliaRegistries/General/tree/master/T/TypedBools
  • ValuedTuples = https:/github.com/JuliaRegistries/General/tree/master/V/ValuedTuples
  • ZippedArrays = https:/github.com/JuliaRegistries/General/tree/master/Z/ZippedArrays

automatic merging guidelines

These guidelines are intended not as requirements for packages but as very conservative guidelines, which, if your new package or new version of a package meets them, it may be automatically merged.

New package

  1. Normal capitalization
    • name should match r"^[A-Z]\w*[a-z][0-9]?$"
      • i.e. starts with a capital letter, ASCII alphanumerics only, ends in lowercase
  2. Not too short
    • at least five letters
      • you can register names shorter than this, but doing so requires someone to approve
  3. Standard initial version number
    • one of 0.0.1, 0.1.0, 1.0.0
  4. Repo URL ends with /$name.jl.git where name is the package name

New version

  1. Sequential version number
    • if the last version was 1.2.3 then the next can be 1.2.4, 1.3.0 or 2.0.0
  2. Compat for all dependencies
    • all [deps] should also have [compat] entries (and Julia itself)
    • [compat] entries should have upper bounds
  3. Version can be installed
    • given the proposed changes to the registry, can we resolve and install the new version of the package?
  4. Version can be loaded
    • once it's been installed (and built?), can we load the code?

ERROR: SystemError: opening file "..." : Permission denied

Hey there,
I'm having an issue adding Julia to anaconda. After downloading I give the commands;

using Pkg
Pkg.add("IJulia")

It seems like it will download but then it smacks me with this error. I have tried running the executable as administrator but I have not had any luck.

Idea: Install the probot-stale app on the General registry

I figure we might as well automate as much of the General registry maintenance as possible.

What do y'all think about installing the probot-stale app on the General registry? That way, registry maintainers wouldn't need to manually close stale PR's (e.g. PR's in which an author reply is requested, and the author never replies).

Provide instructions on how to add the compat entry.

Hey all, I get the below message. How do I add a compat entry to my project file?

Your new package pull request does not meet the following guidelines for auto-merging:

The following dependencies do not have a compat entry that has an upper bound: CodecZlib, HTTP, JSON, Revise
Note that the guidelines are only required for the pull request to be merged automatically. However, it is strongly recommended to follow them, since otherwise the pull request needs to be manually reviewed and merged by a human.



Convert some (or all) of the automerge guidelines into hard requirements

Currently, the official stance is that the automerge guidelines are simply guidelines. They are strongly recommended, but they are not required.

On a regular basis, registry maintainers (including myself) go through the list of open pull requests and manually merge pull requests that do not adhere to the automerge guidelines.


I think that we should convert some (or all) of the automerge guidelines into hard requirements.

Here are the current automerge guidelines. Which ones should we convert into hard requirements, and which ones should stay as guidelines?

Guidelines for all registrations:

  1. Version can be installed, i.e. Pkg.add("Foo") works
  2. Version can be loaded, i.e. import Foo works

Guidelines only for registrations of new packages:

  1. Normal capitalization
  2. At least five letters long
  3. Standard initial version number
  4. Repo URL ends with /$name.jl.git where name is the package name

Guidelines only for registrations of new versions of existing packages:

  1. Version number does not skip versions
  2. Upper-bounded compat entries for all dependencies (including Julia)

Now of course I am biased. I think we should just convert all the guidelines into requirements and call it a day. But I know that not everyone will agree with that.

Idea: make squash-merge the only allowed merge option

I like the idea of using only squash merges in the General registry. It makes reading the commit history much easier.

Automerge now exclusively uses squash merge. However, humans that perform manual merges still have the option of selecting a merge type when they use the big green button?

Should we disable regular merges and rebase merges in the repo settings? Then all merges will be squash merges.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.