Universal package builder system
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Mk
bucket_00
bucket_01
bucket_02
bucket_03
bucket_04
bucket_05
bucket_06
bucket_07
bucket_08
bucket_09
bucket_0A
bucket_0B
bucket_0C
bucket_0D
bucket_0E
bucket_0F
bucket_10
bucket_11
bucket_12
bucket_13
bucket_14
bucket_15
bucket_16
bucket_17
bucket_18
bucket_19
bucket_1A
bucket_1B
bucket_1C
bucket_1D
bucket_1E
bucket_1F
bucket_20
bucket_21
bucket_22
bucket_23
bucket_24
bucket_25
bucket_26
bucket_27
bucket_28
bucket_29
bucket_2A
bucket_2B
bucket_2C
bucket_2D
bucket_2E
bucket_2F
bucket_30
bucket_31
bucket_32
bucket_33
bucket_34
bucket_35
bucket_36
bucket_37
bucket_38
bucket_39
bucket_3A
bucket_3B
bucket_3C
bucket_3D
bucket_3E
bucket_3F
bucket_40
bucket_41
bucket_42
bucket_43
bucket_44
bucket_45
bucket_46
bucket_47
bucket_48
bucket_49
bucket_4A
bucket_4B
bucket_4C
bucket_4D
bucket_4E
bucket_4F
bucket_50
bucket_51
bucket_52
bucket_53
bucket_54
bucket_55
bucket_56
bucket_57
bucket_58
bucket_59
bucket_5A
bucket_5B
bucket_5C
bucket_5D
bucket_5E
bucket_5F
bucket_60
bucket_61
bucket_62
bucket_63
bucket_64
bucket_65
bucket_66
bucket_67
bucket_68
bucket_69
bucket_6A
bucket_6B
bucket_6C
bucket_6D
bucket_6E
bucket_6F
bucket_70
bucket_71
bucket_72
bucket_73
bucket_74
bucket_75
bucket_76
bucket_77
bucket_78
bucket_79
bucket_7A
bucket_7B
bucket_7C
bucket_7D
bucket_7E
bucket_7F
bucket_80
bucket_81
bucket_82
bucket_83
bucket_84
bucket_85
bucket_86
bucket_87
bucket_88
bucket_89
bucket_8A
bucket_8B
bucket_8C
bucket_8D
bucket_8E
bucket_8F
bucket_90
bucket_91
bucket_92
bucket_93
bucket_94
bucket_95
bucket_96
bucket_97
bucket_98
bucket_99
bucket_9A
bucket_9B
bucket_9C
bucket_9D
bucket_9E
bucket_9F
bucket_A0
bucket_A1
bucket_A2
bucket_A3
bucket_A4
bucket_A5
bucket_A6
bucket_A7
bucket_A8
bucket_A9
bucket_AA
bucket_AB
bucket_AC
bucket_AD
bucket_AE
bucket_AF
bucket_B0
bucket_B1
bucket_B2
bucket_B3
bucket_B4
bucket_B5
bucket_B6
bucket_B7
bucket_B8
bucket_B9
bucket_BA
bucket_BB
bucket_BC
bucket_BD
bucket_BE
bucket_BF
bucket_C0
bucket_C1
bucket_C2
bucket_C3
bucket_C4
bucket_C5
bucket_C6
bucket_C7
bucket_C8
bucket_C9
bucket_CA
bucket_CB
bucket_CC
bucket_CD
bucket_CE
bucket_CF
bucket_D0
bucket_D1
bucket_D2
bucket_D3
bucket_D4
bucket_D5
bucket_D6
bucket_D7
bucket_D8
bucket_D9
bucket_DA
bucket_DB
bucket_DC
bucket_DD
bucket_DE
bucket_DF
bucket_E0
bucket_E1
bucket_E2
bucket_E3
bucket_E4
bucket_E5
bucket_E6
bucket_E7
bucket_E8
bucket_E9
bucket_EA
bucket_EB
bucket_EC
bucket_ED
bucket_EE
bucket_EF
bucket_F0
bucket_F1
bucket_F2
bucket_F3
bucket_F4
bucket_F5
bucket_F6
bucket_F7
bucket_F8
bucket_F9
bucket_FA
bucket_FB
bucket_FC
bucket_FD
bucket_FE
bucket_FF
README.md

README.md

Ravenports

Universal package builder system

Objective

To develop the next generation software collection builder and packager that is also truly cross-platform. Think FreeBSD ports with several new cutting edge features and enhancements, but with equal support to Linux, Solaris(like), MacOS, and all BSD platforms.

It is not a reinvention of pkgsrc. The approach is new and not based on make.

Ravenports Triad

There are three main components of Ravenports.

  1. Source ports: This component, known as "ravensource" is not seen or utilized by regular users. It resembles the ports tree seen in FreeBSD and pkgsrc, but only at the individual port directory level. It is not arranged in categories. The contents of each port directory is used to generate a port buildsheet.

  2. Conspiracy: The conspiracy repository contains all the buildsheets, separated into 256 bucket directories. These single files are the complete recipe for building the software for which they were created. These buildsheets are not meant to be viewed directly, as their information can be queried by the ravenadm tool. The conspiracy buildsheets are "compiled" from ravensource and getting the latest ports is accomplished by updating the repository. This README is contained within the Conspiracy repository.

  3. Raven administration tool: The administration tool for Ravenports is "ravenadm". It can query the ports for many types of information like a database. It can build packages in parallel (think synth interface). It controls the build environment such that it is the same across users, even if those users are on different operating systems. Raven also plays a part in the development of ports and features inbuilt lint, sanity checks and compile checks. If somebody develops a buildsheet that passes all checks and builds, it likely can be incorporated in the source tree as submitted, especially if the submission process includes automated testing on all supported platforms.

Make has really been eliminated?

Actually, not really. Make is pretty good at the actual building of the port. A significant chunk of FreeBSD's build logic will be retained (although improved upon). Raven will generate a makefile dynamically depending on options and variants requested for the purpose of building and packaging the software. The logic will be straight-forward without recursion or shell forking. Keeping this logic at ${RAVENBASE}/share/mk will ensure adaptability.

The options handling and other complex logic that affect package dependencies will be done by the ravenadm internally. This will enable speedups by magnitudes as compared to other ports systems.

Official Website

Please visit http://www.ravenports.com for additional and current information.

License

The contents of this repository are available under the conditions defined by the Internet Systems Consortium (ISC) license:


Copyright (c) 2017-2018, The Ravenports Project.

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

SHA256 digests for Ravenports bootstrap files

Currently the repositories are only available via HTTP. The SHA256 digests are listed before for confidence the bootstrap pkg(8) binaries are the ones we generated.

11f8493ebfc55b4c461065a883f26ee6f9ec52162785d08f2f8580db6235caaf raven-dragonfly-50-bootstrap.tar.gz
8e0a6b1fdedcc6f9c6ef89c98030d79bde52450b56e09aa51c7fbc9eefd134e6 raven-dragonfly-54-bootstrap.tar.gz
4589a6262d79f7111353bb68b49afe4d0fcdfa7b743413acaf3333de3a2da38b raven-freebsd64-bootstrap.tar.gz
77ee4ac0e3e3f09bc92bdd38a6bbb76689cdb32877e6ee4a3546cc5f3b0efd6f raven-linux-bootstrap.tar.gz
92b6c5d8dc4d5e0e419dfa16d35d88f6b2b31d705fd09bcc0a8e17cd0ec4dda8 raven-sunos-bootstrap.tar.gz

Ravenports public key

All Ravenports repositories are signed by the following key.

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4rhIOkp+aJS04AOz/V0S
gKOg7Ol/rUTUeHUwzbE45vvGq+M7s00MKDhzdU6QBPnhRLaPdRf8jJNCcNIEIjQ4
fON43BNJfJX1q5T1jnT4Dd+pyyejPv3gOQdDARYt4risfeey3BBYQMuOghGoCNDt
DYPsWaBUPHUR+Um96U0CYHl3ZeAbovq466Wn3OuYX3gvg4QPaMPKmx1fgI3V9bDA
KuOBD5JEVzhJgtzv33e7C0murs4WWJpRv3eSinZsUKoFbt4F4To+YrIXnOQPrNdr
u25Z5hSBdNT5gM43JKWWqM57Zi60Poj5nG6p+GxGePWrraOQY68mgDEScTrJLIXj
UwIDAQAB
-----END PUBLIC KEY-----

An example of use is to save the contents to /raven/etc/pkg/keys/ravenports.key. The pkg repository configuration file might look like this:

> cat /raven/etc/pkg/repos/01_raven.conf
Raven: {
    url            : http://www.ravenports.com/repository/${ABI},
    pubkey         : /raven/etc/pkg/keys/ravenports.key,
    signature_type : PUBKEY,
    priority       : 0,
    enabled        : yes
}