• Stars
    star
    203
  • Rank 192,890 (Top 4 %)
  • Language
    Java
  • License
    GNU General Publi...
  • Created over 5 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

https://openjdk.org/projects/skara

OpenJDK Project Skara

The goal of Project Skara is to investigate alternative SCM and code review options for the OpenJDK source code, including options based upon Git rather than Mercurial, and including options hosted by third parties.

This repository contains tooling for working with OpenJDK projects and their repositories. The following CLI tools are available as part of this repository:

  • git-jcheck - a backwards compatible Git port of jcheck
  • git-webrev - a backwards compatible Git port of webrev
  • git-defpath - a backwards compatible Git port of defpath
  • git-fork - fork a project on an external Git source code hosting provider to your personal space and optionally clone it
  • git-sync - sync the personal fork of the project with the current state of the upstream repository
  • git-pr - interact with pull requests for a project on an external Git source code hosting provider
  • git-info - show OpenJDK information about commits, e.g. issue links, authors, contributors, etc.
  • git-token - interact with a Git credential manager for handling personal access tokens
  • git-translate - translate between Mercurial and Git hashes
  • git-skara - learn about and update the Skara CLI tools
  • git-trees - run a git command in a tree of repositories
  • git-publish - publishes a local branch to a remote repository
  • git-backport - backports a commit from another repository onto the current branch

There are also CLI tools available for importing OpenJDK Mercurial repositories into Git repositories and vice versa:

  • git-openjdk-import
  • git-verify-import
  • hg-openjdk-import

The following server-side tools (so called "bots") for interacting with external Git source code hosting providers are available:

  • hgbridge - continuously convert Mercurial repositories to git
  • mlbridge - bridge messages between mailing lists and pull requests
  • notify - send email notifications when repositories are updated
  • pr - add OpenJDK workflow support for pull requests
  • submit - example pull request test runner
  • forward - forward commits to various repositories
  • mirror - mirror repositories
  • merge - merge commits between different repositories and/or branches
  • test - test runner

Building

JDK 17 or later and Gradle 7.2 or later is required for building. To build the project on macOS or GNU/Linux x64, just run the following command from the source tree root:

$ sh gradlew

To build the project on Windows x64, run the following command from the source tree root:

> gradlew

The extracted jlinked image will end up in the build directory in the source tree root. Note that the above commands will build the CLI tools, if you also want to build the bot images run sh gradlew images on GNU/Linux or gradlew images on Windows.

Other operating systems and CPU architectures

If you want to build on an operating system other than GNU/Linux, macOS or Windows or if you want to build on a CPU architecture other than x64, then ensure that you have JDK 17 or later installed locally and JAVA_HOME set to point to it. You can then run the following command from the source tree root:

$ sh gradlew

The extracted jlinked image will end up in the build directory in the source tree root.

Offline builds

If you don't want the build to automatically download any dependencies, then you must ensure that you have installed the following software locally:

  • JDK 17 or later
  • Gradle 7.2 or later

To create a build then run the command:

$ gradle offline

Please note that the above command does not make use of gradlew to avoid downloading Gradle.

The extracted jlinked image will end up in the build directory in the source tree root.

Cross-linking

It is also supported to cross-jlink jimages to GNU/Linux, macOS and/or Windows from any of the aforementioned operating systems. To build all applicable jimages (including the server-side tooling), run the following command from the source tree root:

sh gradlew images

Makefile wrapper

Skara also has a very thin Makefile wrapper for contributors who prefer to build using make. To build the jlinked image for the CLI tools using make, run:

make

Installing

There are multiple way to install the Skara CLI tools. The easiest way is to just include skara.gitconfig in your global Git configuration file. You can also install the Skara tools on your $PATH.

Including skara.gitconfig

To install the Skara tools, include the skara.gitconfig Git configuration file in your user-level Git configuration file. On macOS or GNU/Linux:

$ git config --global include.path "$PWD/skara.gitconfig"

On Windows:

> git config --global include.path "%CD%/skara.gitconfig"

To check that everything works as expected, run the command git skara help.

Adding to PATH

The Skara tools can also be added to $PATH on GNU/Linux and macOS and Git will pick them up. You can either just extend $PATH with the build/bin directory or you can copy the tools to a location already on $PATH. To extend $PATH with the build/bin directory, run:

$ sh gradlew
$ export PATH="$PWD/build/bin:$PATH"

To copy the tools to a location already on $PATH, run:

$ make
$ make install prefix=/path/to/install/location

When running make install the default value of prefix is $HOME/.local.

If you want git help <skara tool> (or the equivalent man git-<skara tool> to work, you must also add the build/bin/man directory to $MANPATH. For instance, run this from the Skara top directory to add this to your .bashrc file:

echo "export MANPATH=\$MANPATH":$PWD/build/bin/man >> ~/.bashrc

Testing

JUnit 5.8.2 or later is required to run the unit tests. To run the tests, execute following command from the source tree root:

$ sh gradlew test

If you prefer to use the Makefile wrapper you can also run:

$ make test

The tests expect Git version 2.19.3 or later and Mercurial 4.7.2 or later to be installed on your system.

This repository also contains a Dockerfile, test.dockerfile, that allows for running the tests in a reproducible way with the proper dependencies configured. To run the tests in this way, run the following command from the source tree root:

$ sh gradlew reproduce

If you prefer to use the Makefile wrapper you can also run:

$ make reproduce

Developing

There are no additional dependencies required for developing Skara if you can already build and test it (see above for instructions). The command-line tools and libraries supports all of GNU/Linux, macOS and Windows and can therefore be developed on any of those operating systems. The bots primarily support macOS and GNU/Linux and may require Windows Subsystem for Linux on Windows.

Please see the sections below for instructions on setting up a particular editor or IDE.

IntelliJ IDEA

If you choose to use IntelliJ IDEA as your IDE when working on Skara you can simply open the root folder and the project should be automatically imported. You will need to configure a Platform SDK that is JDK 17 or above. Either set this up manually, or build once from the terminal, which will download a suitable JDK. Configure IntelliJ to use it at File → Project Structure → Platform Settings → SDKs → + → Add JDK... and browse to the downloaded JDK found in <skara-folder>/.jdk/. For example, on macOS, select the <skara-folder>/.jdk/openjdk-17_osx-x64_bin/jdk-17.jdk/Contents/Home folder.

Vim

If you choose to use Vim as your editor when working on Skara then you probably also want to utilize the Makefile wrapper. The Makefile wrapper enables to you to run :make and :make tests in Vim.

Wiki

Project Skara's wiki is available at https://wiki.openjdk.org/display/skara.

Issues

Issues are tracked in the JDK Bug System under project Skara at https://bugs.openjdk.org/projects/SKARA/.

Contributing

We are more than happy to accept contributions to the Skara tooling, both via patches sent to the Skara mailing list and in the form of pull requests on GitHub.

Members

See http://openjdk.org/census#skara for the current Skara Reviewers, Committers and Authors. See https://openjdk.org/projects/ for how to become an author, committer or reviewer in an OpenJDK project.

Discuss

Development discussions take place on the project Skara mailing list [email protected], see https://mail.openjdk.org/mailman/listinfo/skara-dev for instructions on how to subscribe of if you want to read the archives. You can also reach many project Skara developers in the #openjdk IRC channel on OFTC, see https://openjdk.org/irc/ for details.

License

See the file LICENSE for details.

More Repositories

1

jdk

JDK main-line development https://openjdk.org/projects/jdk
Java
17,577
star
2

jfx

JavaFX mainline development
C++
2,700
star
3

loom

https://openjdk.org/projects/loom
Java
1,873
star
4

jmh

https://openjdk.org/projects/code-tools/jmh
Java
1,857
star
5

jmc

Repository for OpenJDK Mission Control, a production time profiling and diagnostics tools suite. https://openjdk.org/projects/jmc
Java
836
star
6

jol

https://openjdk.org/projects/code-tools/jol
Java
810
star
7

valhalla

https://openjdk.org/projects/valhalla
Java
538
star
8

nashorn

https://openjdk.org/projects/nashorn
Java
399
star
9

jcstress

https://openjdk.org/projects/code-tools/jcstress
Java
368
star
10

panama-foreign

https://openjdk.org/projects/panama
Java
291
star
11

jextract

https://openjdk.org/projects/code-tools
Java
237
star
12

jdk8u

https://wiki.openjdk.org/display/jdk8u
Java
187
star
13

wakefield

https://openjdk.org/projects/wakefield
Java
186
star
14

amber

https://openjdk.org/projects/amber
Java
181
star
15

crac

https://openjdk.org/projects/crac
Java
175
star
16

jdk17

https://openjdk.org/projects/jdk/17 released 2021-09-14
Java
164
star
17

zgc

The Z Garbage Collector https://wiki.openjdk.org/display/zgc
Java
164
star
18

amber-docs

https://openjdk.org/projects/amber
HTML
144
star
19

mobile

https://openjdk.org/projects/mobile
Java
134
star
20

jdk11u

https://openjdk.org/projects/jdk-updates
Java
130
star
21

shenandoah

https://openjdk.org/projects/shenandoah
Java
117
star
22

leyden

https://openjdk.org/projects/leyden
Java
97
star
23

panama-vector

https://openjdk.org/projects/panama
Java
82
star
24

shenandoah-visualizer

https://openjdk.org/projects/shenandoah
Java
78
star
25

jdk17u

https://wiki.openjdk.org/display/JDKUpdates/JDK+17u
Java
76
star
26

aarch64-port

Port: AArch64 Project
Java
71
star
27

babylon

https://openjdk.org/projects/babylon
Java
69
star
28

asmtools

https://wiki.openjdk.org/display/CodeTools/asmtools
Java
66
star
29

jdk21

https://openjdk.org/projects/jdk/21 released 2023-09-19
Java
65
star
30

valhalla-docs

https://openjdk.org/projects/valhalla
CSS
59
star
31

jdk-sandbox

JDK Committers Sandbox
Java
59
star
32

guide

OpenJDK Developers' Guide https://openjdk.org/guide
Makefile
58
star
33

jdk16

https://openjdk.org/projects/jdk/16 released 2021-03-16
Java
57
star
34

jtreg

https://openjdk.org/projects/code-tools/jtreg
Java
56
star
35

jdk11u-dev

https://openjdk.org/projects/jdk-updates
Java
54
star
36

lilliput

https://openjdk.org/projects/lilliput
Java
50
star
37

riscv-port

https://openjdk.org/projects/riscv-port
Java
46
star
38

jdk8

https://openjdk.org/projects/jdk8 released 2014-03-18
Java
40
star
39

jdk8u-dev

https://wiki.openjdk.org/display/jdk8u
Java
40
star
40

jdk15

https://openjdk.org/projects/jdk/15 released 2020-09-15
Java
39
star
41

jdk19

https://openjdk.org/projects/jdk/19 released 2022-09-20
Java
39
star
42

jmh-jdk-microbenchmarks

https://openjdk.org/projects/code-tools/jmh-jdk-microbenchmarks
Java
38
star
43

jdk17u-dev

https://openjdk.org/projects/jdk-updates
Java
32
star
44

jdk13

https://openjdk.org/projects/jdk/13 released 2019-09-17
Java
32
star
45

jdk21u

https://openjdk.org/projects/jdk-updates
Java
30
star
46

jdk16u

https://openjdk.org/projects/jdk-updates last released 2021-07-20
Java
26
star
47

lanai

https://openjdk.org/projects/lanai
Java
26
star
48

tsan

https://openjdk.org/projects/tsan
Java
25
star
49

portola

https://openjdk.org/projects/portola
Java
24
star
50

jdk18

https://openjdk.org/projects/jdk/18 released 2022-03-22
Java
23
star
51

duke

https://openjdk.org/projects/duke
Mathematica
21
star
52

jdk19u

https://openjdk.org/projects/jdk-updates last released 2023-01-17
Java
20
star
53

jdk11

https://openjdk.org/projects/jdk/11 released 2018-09-25
20
star
54

jdk20

https://openjdk.org/projects/jdk/20 released 2023-03-21
Java
20
star
55

jdk13u-dev

https://openjdk.org/projects/jdk-updates development (identical to jdk13u)
Java
17
star
56

jcov

https://wiki.openjdk.org/display/CodeTools/jcov
Java
17
star
57

jdk14u

https://openjdk.org/projects/jdk-updates last released 2020-07-14
Java
16
star
58

jdk12u

https://openjdk.org/projects/jdk-updates last released 2019-07-16
Java
16
star
59

metropolis

https://openjdk.org/projects/metropolis
Java
16
star
60

jdk20u

https://openjdk.org/projects/jdk-updates last released 2023-07-18
Java
15
star
61

jdk14

https://openjdk.org/projects/jdk/14 released 2020-03-17
Java
15
star
62

galahad

https://openjdk.org/projects/galahad
Java
15
star
63

jfx-sandbox

OpenJFX Committers Sandbox
C++
14
star
64

jdk6

https://openjdk.org/projects/jdk6
Java
14
star
65

jtharness

https://wiki.openjdk.org/display/CodeTools/JT+Harness
Java
13
star
66

jdk7u

https://wiki.openjdk.org/display/jdk7u last released 2022-07-19
Java
12
star
67

jfx11u

JavaFX 11 updates development
C++
12
star
68

jmc7

https://openjdk.org/projects/jmc
Java
12
star
69

jdk15u

https://wiki.openjdk.org/display/JDKUpdates/JDK+15u last released 2023-01-18
Java
11
star
70

jemmy-v2

UI test automation library - v2
Java
11
star
71

jfx20u

JavaFX 20.x: last released 2023-07-18
C++
10
star
72

jdk7

https://openjdk.org/projects/jdk7 released 2011-07-28
Java
10
star
73

jdk12

https://openjdk.org/projects/jdk/12 released 2019-03-19
8
star
74

webrevs

Automatically generated JSON files for webrevs
8
star
75

jdk15u-dev

https://openjdk.org/projects/jdk-updates development (identical to jdk15u)
Java
8
star
76

jfx21u

JavaFX 21 updates development
C++
7
star
77

jdk13u

https://wiki.openjdk.org/display/JDKUpdates/JDK+13u last released 2023-01-18
Java
7
star
78

client

JDK 16 era Client Libraries development
Java
7
star
79

jfx17u

JavaFX 17 updates development
C++
6
star
80

jdk18u

https://openjdk.org/projects/jdk-updates last released 2022-08-18
Java
6
star
81

playground

Repository for experimenting. May be synced and/or reset at any time without notice.
Java
6
star
82

lilliput-jdk17u

https://openjdk.org/projects/lilliput
Java
6
star
83

cr

https://openjdk.org/projects/skara
HTML
6
star
84

jdk22

https://openjdk.org/projects/jdk/22
Java
6
star
85

riscv-port-jdk17u

https://openjdk.org/projects/riscv-port
Java
6
star
86

sigtest

https://wiki.openjdk.org/display/CodeTools/sigtest
Java
5
star
87

shenandoah-jdk8u

https://openjdk.org/projects/shenandoah
Java
5
star
88

friday-stats

https://openjdk.org/projects/code-tools/friday-stats
Java
4
star
89

jdk9

https://openjdk.org/projects/jdk9 released 2017-09-21
Java
4
star
90

aarch32-port-jdk8u

https://openjdk.org/projects/aarch32-port
Java
4
star
91

jdk11u-ri

JSR 384 Reference Implementation (Java SE 11) [not for production use]
Java
4
star
92

jdk9u

https://openjdk.org/projects/jdk-updates last released 2018-01-16
Java
3
star
93

jfx12

JavaFX 12.x : last released 2019-07-19
C++
3
star
94

jfx13

JavaFX 13.x : last released 2020-01-15
C++
3
star
95

jmc-graphics

https://openjdk.org/projects/jmc
3
star
96

jdk10u

https://openjdk.org/projects/jdk-updates last released 2018-07-17
3
star
97

jemmy-v3

UI test automation library - v3
Java
2
star
98

webrev

https://openjdk.org/projects/code-tools/webrev
Shell
2
star
99

riscv-port-jdk11u

https://openjdk.org/projects/riscv-port
Java
2
star
100

lilliput-jdk21u

https://openjdk.org/projects/lilliput
Java
2
star