From: Jacob Sparre Andersen <jacob@jacob-sparre.dk>
Subject: Re: CPAN style Ada repository
Date: Thu, 12 Dec 2013 09:23:05 +0100
Date: 2013-12-12T09:23:05+01:00 [thread overview]
Message-ID: <87iouubhqu.fsf@adaheads.sparre-andersen.dk> (raw)
In-Reply-To: 52976431$1@news.actrix.co.nz
banjo <banjo@actrix.co.nz> wrote:
> Would there be interest in a Perl CPAN style Ada repository?
Something like it, yes.
I have earlier discussed the subject with Thomas Løcke and Kim Rostgaard
Christensen in terms of the tools and infrastructure provided with the
Go programming language from Google.
Step one must be to decide what the purpose of the project is. Some
possibilities:
a) Make it easier for newcomers to Ada to get started.
b) Make it easier to find and install Open Source libraries and
applications written in Ada.
c) Document how (and how well) Open Source libraries and applications
written in Ada build and run on various platforms and with various
compilers.
d) Advertise the existence of other Ada compilers than GNAT.
e) Survive, grow, and encompass all published Open Source Ada source
texts.
I know that not all contributors to this thread weigh these purposes
equally, but I think they all have value for the Ada community as a
whole.
Based on these objectives I propose:
1) Make a "first download" package, which provides (or downloads or
validates the existence of) a compiler and a client (developer) tool.
(Like for Go. A step towards objective a.)
2) Besides the "first download", the system provides "projects", which
may be libraries, applications or a mix of both. (A "library" is
basically a project without any non-test executables.) The
collection of projects can be queried and downloaded through the
client tool.
(A step towards objectives a and b.)
3) All projects are required to have some built-in tests. As a minimum
there should be test applications which ensure that all compilation
units in the project sources are compiled.
(A step towards objective c.)
4) Support multiple compilers. Tero Koskinen has both GNAT, Irvine
ICCAda and Janus/Ada on his <http://build.ada-language.com/> site, so
it should be possible.
(A step towards objectives c and d.)
5) Make it easy for developers to submit new projects to the system.
(A step towards objective e.)
Refining the proposals above:
6) Each project needs some build rules. As we want to support multiple
compilers (proposal 4), it makes sense to have a very simple
(proposal 5) build rule format, which then can be compiled to build
rules for the various supported compilers.
The minimum requirements for the build rules might be as simple as
three lists:
- Which projects this project depends on.
- Which applications are to be generated by this project.
- Which test programs are included in the project.
7) If an up-stream project is parametrised (or uses different sources
for different hosts/compilers/targets), our view of it is multiple
unparametrised projects. This will allow for simpler build rules
(proposal 5 and 6) and at the same time simplify testing (objective c
and proposal 3)
----------------------------------------------------------------------------
The following is a collection of various ideas for the project on a more
practical level. These ideas are not (yet) tied properly to the
objectives listed above.
General:
========
- Source-only projects - Skip the whole problem of generating dynamic
libraries. Not many systems will have more than one application
running using large parts of the same Ada library.
- Use ISO dates plus a single latin letter as version identifiers for
projects. This will allow about one version per hour per project. Is
this an unreasonable limit?
- Project naming: As Ada identifiers with the extra constraint that they
can't end in "_" & Possible_Version_Identifier or "_" &
Possible_Version_Identifier & "_test". (Other constraints?) This is
to allow GPR files to reference either the "head" version of a project
or a specific revision.
- Project parameters:
+ Build rules.
+ Version control link.
+ Provides: API ID's.
+ Dependencies: Both other projects in the system, API ID's _and_
operating system specific dependencies.
+ (plus revision information)
Client (developer tool):
========================
- Keep track of which projects the developer has fetched explicitly (and
which specific versions have been requested, where that is relevant)
- Keep track of the dependencies of the installed projects, and make
sure they are fulfilled.
- When updating; only pull the newest versions of previously requested
projects, when the developer hasn't asked for a specific version or
has asked for "head".
- The Go command-line tool has (at least) the following operations: get,
build, test, run, install. I'm not sure I care about "run", but
"drop" (sort-of "uninstall") and "select-compiler" (as we want to
support more than one) would be nice additions.
Service:
========
- Generate new project versions from up-stream commits automatically.
- Test new project versions automatically as they are generated.
- Only release project versions which pass the tests on at least one
host-compiler-target combination.
- It would be nice if it automatically could test which revisions of the
dependencies of a project result in a working (test-passing) system.
- Should we host copies of the sources of the projects as a part of the
service? Jim Kimball doesn't like to do it, but I like the idea of
fetching sources and build rules from a single location.
----------------------------------------------------------------------------
Greetings,
Jacob
PS: I like a name like "go Ada" better than "something-CPAN".
--
Those who can't laugh at themselves leave the job to others.
next prev parent reply other threads:[~2013-12-12 8:23 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-28 15:41 CPAN style Ada repository banjo
2013-11-29 7:04 ` Thomas Løcke
2013-12-12 10:17 ` Lucretia
2013-12-13 6:54 ` J Kimball
2013-12-13 9:58 ` Lucretia
2013-11-29 19:22 ` Felix Krause
2013-11-29 20:17 ` Simon Wright
2013-11-29 22:53 ` Dennis Lee Bieber
2013-12-09 23:45 ` Yannick Duchêne (Hibou57)
2013-11-29 22:13 ` Jeffrey Carter
2013-11-29 22:15 ` Georg Bauhaus
2013-12-03 18:12 ` Martin
2013-12-03 19:03 ` Randy Brukardt
2013-11-30 1:20 ` Shark8
2013-11-30 13:46 ` gautier_niouzes
2013-11-29 22:07 ` Stephen Leake
2013-11-30 13:12 ` Jacob Sparre Andersen
2013-12-02 17:10 ` Tero Koskinen
2013-12-01 6:36 ` johannes falcone
2013-12-01 7:08 ` Simon Wright
2013-12-01 11:18 ` Brian Drummond
2013-12-01 11:19 ` Brian Drummond
2013-12-01 12:18 ` Jacob Sparre Andersen
2013-12-01 8:24 ` Jacob Sparre Andersen
2013-12-11 20:49 ` Björn Persson
2013-12-12 16:12 ` Stephen Leake
2013-12-13 11:52 ` darkestkhan
2013-12-13 18:38 ` Björn Persson
2013-12-15 5:40 ` Stephen Leake
2013-12-12 8:23 ` Jacob Sparre Andersen [this message]
2013-12-12 9:55 ` Yannick Duchêne (Hibou57)
2013-12-12 10:26 ` Jacob Sparre Andersen
2013-12-12 10:37 ` Brian Drummond
2013-12-12 11:39 ` G.B.
2013-12-12 22:20 ` Jacob Sparre Andersen
2013-12-13 5:43 ` Randy Brukardt
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox