Ravenports generated: 08 Oct 2019 11:13
[ravenports.git] / README.md
1 # Ravenports
2 Universal package builder system
3
4 ## Objective
5
6 To develop the next generation software collection builder and packager
7 that is also truly cross-platform.  Think FreeBSD ports with several new
8 cutting edge features and enhancements, but with equal support to Linux,
9 Solaris(like), MacOS, and all BSD platforms.
10
11 It is not a reinvention of pkgsrc.  The approach is new and not based
12 on make.
13
14 ## Ravenports Triad
15
16 There are three main components of Ravenports.
17
18   1. **Source ports:**
19 This component, known as "ravensource" is not seen or utilized by
20 regular users.  It resembles
21 the ports tree seen in FreeBSD and pkgsrc, but only at the individual
22 port directory level.  It is not arranged in categories.  The contents
23 of each port directory is used to generate a port buildsheet.
24
25   2. **Conspiracy:**
26 The conspiracy repository contains all the buildsheets, separated into
27 256 bucket directories.  These single files are the complete recipe for
28 building the software for which they were created.  These buildsheets
29 are not meant to be viewed directly, as their information can be queried
30 by the ravenadm tool.  The conspiracy buildsheets are "compiled" from
31 ravensource and getting the latest ports is accomplished by updating the
32 repository.  This README is contained within the Conspiracy repository.
33
34   3. **Raven administration tool:**
35 The administration tool for Ravenports is "ravenadm".  It can query the
36 ports for many types of information like a database.  It can build
37 packages in parallel (think synth interface).  It controls the build
38 environment such that it is the same across users, even if those
39 users are on different operating systems.  Raven also plays a part
40 in the development of ports and features inbuilt lint, sanity checks
41 and compile checks.  If somebody develops a buildsheet that passes
42 all checks and builds, it likely can be incorporated in the source
43 tree as submitted, especially if the submission process includes
44 automated testing on all supported platforms.
45
46 ## Make has really been eliminated?
47
48 Actually, not really.  Make is pretty good at the actual building of the
49 port.  A significant chunk of FreeBSD's build logic will be retained
50 (although improved upon).  Raven will generate a makefile dynamically
51 depending on options and variants requested for the purpose of
52 building and packaging the software.  The logic will be straight-forward
53 without recursion or shell forking.  Keeping this logic at
54 ${RAVENBASE}/share/mk will ensure adaptability.
55
56 The options handling and other complex logic that affect package
57 dependencies will be done by the ravenadm internally.  This will
58 enable speedups by magnitudes as compared to other ports systems.
59
60 ## Official Website
61
62 Please visit
63 [http://www.ravenports.com](http://www.ravenports.com)
64 for additional and current information.
65
66 ## License
67
68 The contents of this repository are available under the
69 conditions defined by the Internet Systems Consortium (ISC) license:
70
71 ---
72
73 ```
74 Copyright (c) 2017-2019, The Ravenports Project.
75
76 Permission to use, copy, modify, and/or distribute this software for any
77 purpose with or without fee is hereby granted, provided that the above
78 copyright notice and this permission notice appear in all copies.
79
80 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
81 WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
82 MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
83 ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
84 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
85 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
86 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
87 ```
88
89 ## SHA256 digests for Ravenports bootstrap files
90
91 Currently the repositories are only available via HTTP.  The SHA256 digests
92 are listed before for confidence the bootstrap pkg(8) binaries are the ones
93 we generated.
94
95 ```
96 11f8493ebfc55b4c461065a883f26ee6f9ec52162785d08f2f8580db6235caaf raven-dragonfly-50-bootstrap.tar.gz
97 8e0a6b1fdedcc6f9c6ef89c98030d79bde52450b56e09aa51c7fbc9eefd134e6 raven-dragonfly-54-bootstrap.tar.gz
98 4589a6262d79f7111353bb68b49afe4d0fcdfa7b743413acaf3333de3a2da38b raven-freebsd64-bootstrap.tar.gz
99 77ee4ac0e3e3f09bc92bdd38a6bbb76689cdb32877e6ee4a3546cc5f3b0efd6f raven-linux-bootstrap.tar.gz
100 92b6c5d8dc4d5e0e419dfa16d35d88f6b2b31d705fd09bcc0a8e17cd0ec4dda8 raven-sunos-bootstrap.tar.gz
101 ```
102
103 ## Ravenports public key
104
105 All Ravenports repositories are signed by the following key.
106
107 ```
108 -----BEGIN PUBLIC KEY-----
109 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4rhIOkp+aJS04AOz/V0S
110 gKOg7Ol/rUTUeHUwzbE45vvGq+M7s00MKDhzdU6QBPnhRLaPdRf8jJNCcNIEIjQ4
111 fON43BNJfJX1q5T1jnT4Dd+pyyejPv3gOQdDARYt4risfeey3BBYQMuOghGoCNDt
112 DYPsWaBUPHUR+Um96U0CYHl3ZeAbovq466Wn3OuYX3gvg4QPaMPKmx1fgI3V9bDA
113 KuOBD5JEVzhJgtzv33e7C0murs4WWJpRv3eSinZsUKoFbt4F4To+YrIXnOQPrNdr
114 u25Z5hSBdNT5gM43JKWWqM57Zi60Poj5nG6p+GxGePWrraOQY68mgDEScTrJLIXj
115 UwIDAQAB
116 -----END PUBLIC KEY-----
117 ```
118
119 An example of use is to save the contents to
120 /raven/etc/pkg/keys/ravenports.key.  The pkg repository
121 configuration file might look like this:
122
123 ```
124 > cat /raven/etc/pkg/repos/01_raven.conf
125 Raven: {
126     url            : http://www.ravenports.com/repository/${ABI},
127     pubkey         : /raven/etc/pkg/keys/ravenports.key,
128     signature_type : PUBKEY,
129     priority       : 0,
130     enabled        : yes
131 }
132 ```