Compare commits

...

4 Commits

Author SHA1 Message Date
mae
b4348a3db3 internal/rosa/jdk: incomplete gnu classpath 0.93 artifact 2026-05-23 14:22:26 -05:00
mae
486180c11f internal/rosa/gtk: gdk-pixbuf artifact 2026-05-17 23:36:59 -05:00
mae
d3d68ad472 internal/rosa/x: libxtst artifact 2026-05-17 19:20:04 -05:00
mae
d2dc6a716d internal/rosa/x: libxi artifact 2026-05-17 19:19:26 -05:00
7 changed files with 678 additions and 0 deletions

View File

@@ -45,6 +45,7 @@ const (
Binutils Binutils
Bison Bison
Bzip2 Bzip2
Cairo
CMake CMake
Connman Connman
Coreutils Coreutils
@@ -56,9 +57,12 @@ const (
Fakeroot Fakeroot
Findutils Findutils
Flex Flex
FontConfig
FontUtil FontUtil
Freetype Freetype
Fribidi
Fuse Fuse
Gconf
GMP GMP
GLib GLib
Gawk Gawk
@@ -68,13 +72,16 @@ const (
Glslang Glslang
GnuTLS GnuTLS
Go Go
GObjectIntrospection
Gperf Gperf
Grep Grep
Gzip Gzip
Hakurei Hakurei
HakureiDist HakureiDist
HarfBuzz
Hwdata Hwdata
IPTables IPTables
JDK
Kmod Kmod
LIT LIT
LibX11 LibX11
@@ -83,13 +90,17 @@ const (
LibXext LibXext
LibXfixes LibXfixes
LibXfont2 LibXfont2
LibXft
LibXi
LibXrandr LibXrandr
LibXrender LibXrender
LibXtst
LibXxf86vm LibXxf86vm
Libarchive Libarchive
Libbsd Libbsd
Libcap Libcap
Libconfig Libconfig
Libdatrie
LibdisplayInfo LibdisplayInfo
Libdrm Libdrm
Libepoxy Libepoxy
@@ -100,6 +111,7 @@ const (
Libgd Libgd
Libglvnd Libglvnd
Libiconv Libiconv
Libjpeg
Libmd Libmd
Libmnl Libmnl
Libnftnl Libnftnl
@@ -108,6 +120,7 @@ const (
Libpsl Libpsl
Libseccomp Libseccomp
Libtasn1 Libtasn1
Libthai
Libtirpc Libtirpc
Libtool Libtool
Libucontext Libucontext
@@ -142,6 +155,7 @@ const (
OpenSSL OpenSSL
P11Kit P11Kit
PCRE2 PCRE2
Pango
Parallel Parallel
Patch Patch
Perl Perl
@@ -182,6 +196,7 @@ const (
Readline Readline
Rsync Rsync
Sed Sed
SharedMimeInfo
SPIRVHeaders SPIRVHeaders
SPIRVLLVMTranslator SPIRVLLVMTranslator
SPIRVTools SPIRVTools
@@ -205,6 +220,7 @@ const (
XkeyboardConfig XkeyboardConfig
XorgProto XorgProto
Xserver Xserver
Zip
Zlib Zlib
Zstd Zstd

196
internal/rosa/fontstack.go Normal file
View File

@@ -0,0 +1,196 @@
package rosa
import "hakurei.app/internal/pkg"
func (t Toolchain) newFontConfig() (pkg.Artifact, string) {
const (
version = "2.15.0"
checksum = "rvlTL_zn-RwVkTBFdsOacUmEdLmwa3whTkuTzV8JH7kKbsFmnbG2qof3hN9ghr9d"
)
return t.NewPackage("fontconfig", version, newFromGitLab("gitlab.freedesktop.org", "fontconfig/fontconfig", version, checksum),
nil,
(*MesonHelper)(nil),
Gperf,
Freetype,
Libexpat,
Python,
), version
}
func init() {
artifactsM[FontConfig] = Metadata{
f: Toolchain.newFontConfig,
Name: "fontconfig",
Description: "freedesktop font discovery",
Website: "https://fontconfig.pages.freedesktop.org/fontconfig/fontconfig-user.html",
ID: 827,
}
}
func (t Toolchain) newCairo() (pkg.Artifact, string) {
const (
version = "1.18.4"
checksum = "_Ztw0ttmYLIiElqS27x2Iu4EneXOMNHp2or6bJA6suLeF3NRvORzUMPPQy9Wr5gT"
)
return t.NewPackage("cairo", version, newFromGitLab("gitlab.freedesktop.org", "cairo/cairo", version, checksum),
nil,
&MesonHelper{
SkipTest: true,
Setup: []KV{{"Dfreetype", "enabled"}, {"Dfontconfig", "enabled"}},
},
Automake,
Libtool,
Libpng,
PkgConfig,
FontConfig,
Libexpat,
Freetype,
Pixman,
Gawk,
), version
}
func init() {
artifactsM[Cairo] = Metadata{
f: Toolchain.newCairo,
Name: "cairo",
Description: "freedesktop 2d rendering library",
Website: "https://cairographics.org",
ID: 247,
}
}
func (t Toolchain) newHarfbuzz() (pkg.Artifact, string) {
const (
version = "14.2.0"
checksum = "2VgjUmcPeIbleafZaGk5l7iGnag2qj0HTqrJ5770GzivebryZ2pbwVIha5j_24PH"
)
return t.NewPackage("harfbuzz", version, newFromGitHub("harfbuzz/harfbuzz", version, checksum),
nil,
(*MesonHelper)(nil),
Freetype,
GLib,
Cairo,
), version
}
func init() {
artifactsM[HarfBuzz] = Metadata{
f: Toolchain.newHarfbuzz,
Name: "harfbuzz",
Description: "text shaping library",
Website: "https://harfbuzz.github.io",
ID: 1299,
}
}
func (t Toolchain) newFribidi() (pkg.Artifact, string) {
const (
version = "1.0.16"
checksum = "Sn9hwdgViXW9_MOi8ovAcBgQy6s6o4cc0o260k76nqCRzxmxxD1-B37GVkJ2EoMy"
)
return t.NewPackage("fribidi", version, newFromGitHub("fribidi/fribidi", "v"+version, checksum),
nil,
&MesonHelper{
Setup: []KV{[2]string{"Ddocs", "false"}},
},
PkgConfig,
), version
}
func init() {
artifactsM[Fribidi] = Metadata{
f: Toolchain.newFribidi,
Name: "fribidi",
Description: "bidirectional text library",
Website: "https://www.gnu.org/software/fribidi/",
ID: 857,
}
}
func (t Toolchain) newLibdatrie() (pkg.Artifact, string) {
const (
version = "0.2.14"
checksum = "JnJBEFrA8xYscXOSRJNGb1ZyRqrdsfP1_sdRIQeeSujdcsxmYT5Yl9m4byTsLozp"
)
return t.NewPackage("libdatrie", version, newFromGitHub("tlwg/libdatrie", "v"+version, checksum),
nil,
&MakeHelper{
Generate: "sh autogen.sh",
},
Libtool,
Automake,
M4,
), version
}
func init() {
artifactsM[Libdatrie] = Metadata{
f: Toolchain.newLibdatrie,
Name: "libdatrie",
Description: "double-array trie library",
Website: "https://linux.thai.net/~thep/datrie/datrie.html",
ID: 7342,
}
}
func (t Toolchain) newLibThai() (pkg.Artifact, string) {
const (
version = "0.1.30"
checksum = "jQxUviF-lSiVrnqXebc4kROp0hrIeQbke2gvaeTfkCDp-wHkpxb3xP18fsNOF_F-"
)
return t.NewPackage("libthai", version, newFromGitHub("tlwg/libthai", "v"+version, checksum),
nil,
&MakeHelper{
Generate: "sh autogen.sh",
},
Libtool,
Automake,
M4,
Libdatrie,
PkgConfig,
), version
}
func init() {
artifactsM[Libthai] = Metadata{
f: Toolchain.newLibThai,
Name: "libthai",
Description: "thai language handling library",
Website: "https://linux.thai.net/",
ID: 1737,
}
}
func (t Toolchain) newPango() (pkg.Artifact, string) {
const (
version = "1.56.3"
checksum = "O73sc8axQyjIFpW4XkV7wi4HVSvmdUnx1uTn-HtbewXgrCVWX9Du-pssL5BK7rf1"
)
return t.NewPackage("pango", version, newFromGitLab("gitlab.gnome.org", "GNOME/pango", version, checksum),
nil,
&MesonHelper{
SkipTest: true,
},
GLib,
GObjectIntrospection,
Freetype,
PkgConfig,
FontConfig,
HarfBuzz,
Fribidi,
Cairo,
Pixman,
Libpng,
Libexpat,
Libdatrie,
Libthai,
Libtool,
LibX11,
LibXrender,
LibXft,
Diffutils,
), version
}
func init() {
artifactsM[Pango] = Metadata{
f: Toolchain.newPango,
Name: "pango",
Description: "text rendering library",
Website: "https://pango.org",
ID: 11783,
}
}

View File

@@ -58,3 +58,91 @@ func init() {
ID: 10024, ID: 10024,
} }
} }
func (t Toolchain) newSharedMimeInfo() (pkg.Artifact, string) {
const (
version = "2.4"
checksum = "RrqfOT1gGuYfN7pkwgeLPfljkk9eL5BwRsNTuJNZjOk1vT5frTJ1EshDvaSqKwiL"
)
return t.NewPackage("shared-mime-info", version, newFromGitLab("gitlab.freedesktop.org", "xdg/shared-mime-info", version, checksum),
nil,
&MesonHelper{
SkipTest: true,
},
GLib,
Meson,
Libxml2,
Gettext,
Libpng,
Libjpeg,
), version
}
func init() {
artifactsM[SharedMimeInfo] = Metadata{
f: Toolchain.newSharedMimeInfo,
Name: "shared-mime-info",
Description: "xdg MIME repository",
Website: "https://www.freedesktop.org/wiki/Software/shared-mime-info/",
ID: 5524,
}
}
func (t Toolchain) newGobjectIntrospection() (pkg.Artifact, string) {
const (
version = "1.86.0"
checksum = "M-eq1kEEX215x0VMfTIfJXNfVnZwiC41QK33tlCeK0_GDwGUILQm0SqvRSySNoka"
)
return t.NewPackage("gobject-introspection", version, t.NewViaGit("https://gitlab.gnome.org/GNOME/gobject-introspection.git", version, mustDecode(checksum)),
&PackageAttr{
Writable: true,
},
&MesonHelper{
SkipTest: true,
},
GLib,
PythonSetuptools,
Flex,
Bison,
Cairo,
Libffi,
Libpng,
M4,
PythonMako,
Pixman,
), version
}
func init() {
artifactsM[GObjectIntrospection] = Metadata{
f: Toolchain.newGobjectIntrospection,
Name: "gobject-introspection",
Description: "introspection toolkit",
Website: "https://gi.readthedocs.io/",
ID: 1223,
}
}
func (t Toolchain) newGconf() (pkg.Artifact, string) {
const (
version = "3.2.6"
checksum = "oSoPCk8J4Xd1gF1RLPqzdvHQfEn2eOE9qpLoT2CyDwnkUERgg2990dHN_AKhVgJp"
)
return t.NewPackage("gconf", version, newFromGitLab("gitlab.gnome.org", "Archive/gconf", version, checksum),
nil,
&MakeHelper{
Configure: []KV{{"disable-orbit"}, {"disable-introspection"}},
Generate: "autoreconf -if",
},
Automake,
Libtool,
GLib,
), version
}
func init() {
artifactsM[Gconf] = Metadata{
f: Toolchain.newGconf,
Name: "gconf",
Description: "outdated configuration database library",
Website: "http://projects.gnome.org/gconf/",
ID: 8423,
}
}

139
internal/rosa/jdk.go Normal file
View File

@@ -0,0 +1,139 @@
package rosa
import (
"slices"
"hakurei.app/internal/pkg"
)
func (t Toolchain) newJikes() pkg.Artifact {
const (
version = "1.22"
checksum = "qb5Pf6P7RBrXRVLNEwfGxqhb05WW-MjJyJw7O-fYKizNGDNJEpsttbmOsFge0MO1"
)
return t.NewPackage("jikes", version,
newTar("https://sourceforge.net/projects/jikes/files/Jikes/"+version+"/jikes-"+version+".tar.bz2/download",
checksum, pkg.TarBzip2),
&PackageAttr{},
&MakeHelper{
Generate: "autoreconf -if",
Make: []string{
"CXXFLAGS='-std=c++03'",
},
},
Automake,
)
}
func (t Toolchain) newClasspath(version, checksum string, extra ...pkg.Artifact) pkg.Artifact {
attr := &PackageAttr{
Patches: []KV{{"classpath0.93-include-stdlib",
`diff --git a/native/fdlibm/dtoa.c b/native/fdlibm/dtoa.c
index 5fb6aae..e710d96 100644
--- a/native/fdlibm/dtoa.c
+++ b/native/fdlibm/dtoa.c
@@ -28,6 +28,7 @@
#include "mprec.h"
#include <string.h>
+#include <stdlib.h>
static int
_DEFUN (quorem,
`}},
}
helper := &MakeHelper{
SkipCheck: true,
Generate: "autoreconf -if",
Configure: []KV{{"with-jikes"}, {"disable-gtk-peer"}, {"disable-gconf-peer"}, {"disable-Werror"}, {"disable-plugin"}},
}
script := attr.ScriptEarly
script += helper.scriptEarly()
source := newTar(
"https://ftp.gnu.org/gnu/classpath/classpath-"+version+".tar.gz",
checksum,
pkg.TarGzip,
)
wantsChmod, wantsWrite := helper.wantsChmod(), helper.wantsWrite()
pExtra := []PArtifact{Automake, Libtool, LibX11, LibXtst, LibXi, PkgConfig, Gzip, GLib, Findutils, Unzip}
extraRes := make([]pkg.Artifact, 0, 1<<3+len(pExtra))
{
pv := paGet()
for _, p := range helper.extra(attr.Flag) {
extraRes = t.appendPreset(extraRes, pv, p)
}
for _, p := range pExtra {
extraRes = t.appendPreset(extraRes, pv, p)
}
paPut(pv)
}
var (
scriptEarly string
sourceSuffix string
)
if _, ok := source.(pkg.FileArtifact); ok {
if attr.Writable || attr.Chmod ||
wantsChmod || wantsWrite ||
len(attr.Patches) > 0 {
panic("source processing requested on a xz-compressed tarball")
}
sourceSuffix = ".tar.xz"
scriptEarly += `
tar -C /usr/src/ -xf '/usr/src/` + "classpath" + `.tar.xz'
mv '/usr/src/` + "classpath" + `-` + version + `' '/usr/src/` + "classpath" + `'
`
}
dir := helper.wantsDir()
helperScriptEarly := helper.scriptEarly()
if attr.EnterSource ||
dir == "" ||
attr.ScriptEarly != "" ||
helperScriptEarly != "" {
scriptEarly += `
cd '/usr/src/` + "classpath" + `/'
`
}
scriptEarly += attr.ScriptEarly + helperScriptEarly
if dir != "" && dir != helperInPlace {
if helper.createDir() {
scriptEarly += "\nmkdir -p " + dir
}
scriptEarly += "\ncd " + dir + "\n"
} else if !attr.EnterSource && attr.ScriptEarly == "" {
panic("cannot remain in root")
}
return t.New(
"classpath"+"-"+version,
attr.Flag,
slices.Concat(extra, extraRes),
attr.KnownChecksum,
attr.Env,
scriptEarly+helper.script("classpath"),
slices.Concat(attr.Paths, []pkg.ExecPath{
pkg.Path(AbsUsrSrc.Append(
"classpath"+sourceSuffix,
), attr.Writable || wantsWrite, t.NewPatchedSource(
"classpath", version, source, !attr.Chmod && !wantsChmod, attr.Patches...,
)),
})...,
)
}
func (t Toolchain) newLatestJdk() (pkg.Artifact, string) {
jikes := t.newJikes()
classpath093 := t.newClasspath("0.93", "WKsqDegi4rVCdQ2uJc3BOPuMnovU_cbiQy7nAzvYYtYnw75V6--sZFyRKnfiwGg9", jikes)
return classpath093, "0.93"
}
func init() {
artifactsM[JDK] = Metadata{
f: Toolchain.newLatestJdk,
Name: "jdk",
Description: "java toolchain",
Website: "https://jikes.sourceforge.net/",
}
}

24
internal/rosa/libjpeg.go Normal file
View File

@@ -0,0 +1,24 @@
package rosa
import "hakurei.app/internal/pkg"
func (t Toolchain) newLibjpeg() (pkg.Artifact, string) {
const (
version = "10"
checksum = "N-o4pq6wO8fPeIePdi6-fZtiiRUzdizja_B-BYpmx-GU2Qesdgg0QF0ub-jtiYmd"
)
return t.NewPackage("libjpeg", version, newTar("https://www.ijg.org/files/jpegsrc.v"+version+".tar.gz", checksum, pkg.TarGzip),
nil,
(*MakeHelper)(nil),
), version
}
func init() {
artifactsM[Libjpeg] = Metadata{
f: Toolchain.newLibjpeg,
Name: "libjpeg",
Description: "jpeg library",
Website: "https://www.ijg.org",
ID: 21362,
}
}

View File

@@ -465,6 +465,85 @@ func init() {
} }
} }
func (t Toolchain) newLibXi() (pkg.Artifact, string) {
const (
version = "1.8.2"
checksum = "F5g6yRPPql5QQDCFMiIpl3tvwm0_5Y-anUXX_mX-u5F5E0mSB22azREW99p6Zwso"
)
return t.NewPackage("libXi", version, newFromGitLab(
"gitlab.freedesktop.org",
"xorg/lib/libxi",
"libXi-"+version,
checksum), nil, &MakeHelper{
Generate: "NOCONFIGURE=1 ./autogen.sh",
},
Automake,
Libtool,
PkgConfig,
utilMacros,
LibX11,
LibXext,
Libxslt,
LibXfixes,
), version
}
func init() {
artifactsM[LibXi] = Metadata{
f: Toolchain.newLibXi,
Name: "libXi",
Description: "Xlib-based library for input",
Website: "https://gitlab.freedesktop.org/xorg/lib/libxi",
Dependencies: P{
LibX11,
},
ID: 1778,
}
}
func (t Toolchain) newLibXtst() (pkg.Artifact, string) {
const (
version = "1.2.5"
checksum = "WOoDvv1aUbkupcuo3I4dMe9rH2eGoi7CF2ncA_RRX1JAekqGr3_YQfYiQtakNCiP"
)
return t.NewPackage("libXtst", version, newFromGitLab(
"gitlab.freedesktop.org",
"xorg/lib/libxtst",
"libXtst-"+version,
checksum), nil, &MakeHelper{
Generate: "NOCONFIGURE=1 ./autogen.sh",
},
Automake,
Libtool,
PkgConfig,
utilMacros,
LibX11,
LibXext,
Libxslt,
LibXi,
LibXfixes,
), version
}
func init() {
artifactsM[LibXtst] = Metadata{
f: Toolchain.newLibXtst,
Name: "libXtst",
Description: "Xlib-based library for XTST",
Website: "https://gitlab.freedesktop.org/xorg/lib/libxtst",
Dependencies: P{
LibX11,
},
ID: 1794,
}
}
func (t Toolchain) newLibXrender() (pkg.Artifact, string) { func (t Toolchain) newLibXrender() (pkg.Artifact, string) {
const ( const (
version = "0.9.12" version = "0.9.12"
@@ -502,6 +581,42 @@ func init() {
} }
} }
func (t Toolchain) newLibxft() (pkg.Artifact, string) {
const (
version = "2.3.9"
checksum = "uHJtVwC4G9SnUSE8_KMnUR6SxSfLxEaausYSexZ0I8p4tgdxOqjKMuX_rKzfJR79"
)
return t.NewPackage("libxft", version, newFromGitLab(
"gitlab.freedesktop.org",
"xorg/lib/libxft",
"libXft-"+version,
checksum),
nil,
&MakeHelper{
Generate: "NOCONFIGURE=1 ./autogen.sh",
},
Automake,
Libtool,
PkgConfig,
Freetype,
FontConfig,
utilMacros,
LibX11,
LibXext,
LibXrender,
Libexpat,
), version
}
func init() {
artifactsM[LibXft] = Metadata{
f: Toolchain.newLibxft,
Name: "libxft",
Description: "Xorg font library",
Website: "https://www.freedesktop.org/wiki/Software/Xft/",
ID: 1777,
}
}
func (t Toolchain) newLibxshmfence() (pkg.Artifact, string) { func (t Toolchain) newLibxshmfence() (pkg.Artifact, string) {
const ( const (
version = "1.3.3" version = "1.3.3"

100
internal/rosa/zip.go Normal file
View File

@@ -0,0 +1,100 @@
package rosa
import (
"strings"
"hakurei.app/internal/pkg"
)
func (t Toolchain) newZip() (pkg.Artifact, string) {
const (
version = "3.0"
checksum = "4-fw0fXSm7qMvJ6FyRs9VRsURdkJ_1A8f8ihjxXWtj2ulEL-Io6ouKXTn0cE0wtT"
)
return t.New("zip-"+version, 0, t.AppendPresets(nil,
Make,
Coreutils,
Unzip,
), nil, nil, `
cd /usr/src/zip/
chmod +x unix/configure
unix/configure
make -f unix/Makefile generic
mkdir -p /work/system/bin/
mv zip /work/system/bin/
`, pkg.Path(AbsUsrSrc.Append("zip"), true, t.NewPatchedSource(
"zip", version, newTar(
"https://downloads.sourceforge.net/project/infozip/"+
"Zip%203.x%20%28latest%29/"+version+"/"+
"zip"+strings.ReplaceAll(version, ".", "")+".tar.gz",
checksum,
pkg.TarGzip,
), false,
KV{"zip-gentoo-patch",
`https://bugs.gentoo.org/869203
See also OE's variant: https://cgit.openembedded.org/openembedded-core/commit/?id=f898db2607ba3837f81292af92bc8cb605b96cb3
--- a/unix/configure
+++ b/unix/configure
@@ -507,18 +507,18 @@ $CC $CFLAGS -c conftest.c >/dev/null 2>/
# add NO_'function_name' to flags if missing
for func in rmdir strchr strrchr rename mktemp mktime mkstemp
do
echo Check for $func
- echo "int main(){ $func(); return 0; }" > conftest.c
+ echo "char $func(); int main(){ return $func(); }" > conftest.c
$CC $BFLAG -o conftest conftest.c >/dev/null 2>/dev/null
[ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_` + "`echo $func | tr '[a-z]' '[A-Z]'`" + `
done
echo Check for memset
-echo "int main(){ char k; memset(&k,0,0); return 0; }" > conftest.c
+echo "int main(){ char memset(); return memset(); }" > conftest.c
$CC -o conftest conftest.c >/dev/null 2>/dev/null
[ $? -ne 0 ] && CFLAGS="${CFLAGS} -DZMEM"
echo Check for memmove
@@ -551,11 +551,11 @@ $CC $CFLAGS -c conftest.c >/dev/null 2>/
[ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_ERRNO"
echo Check for directory libraries
cat > conftest.c << _EOF_
-int main() { return closedir(opendir(".")); }
+int main() { char closedir(); char opendir(); return closedir(opendir()); }
_EOF_
$CC -o conftest conftest.c >/dev/null 2>/dev/null
if [ $? -ne 0 ]; then
OPT=""
@@ -573,11 +573,11 @@ fi
# Dynix/ptx 1.3 needed this
echo Check for readlink
-echo "int main(){ return readlink(); }" > conftest.c
+echo "int main(){ char readlink(); return readlink(); }" > conftest.c
$CC -o conftest conftest.c >/dev/null 2>/dev/null
if [ $? -ne 0 ]; then
$CC -o conftest conftest.c -lseq >/dev/null 2>/dev/null
[ $? -eq 0 ] && LFLAGS2="${LFLAGS2} -lseq"
fi
`}))), version
}
func init() {
artifactsM[Zip] = Metadata{
f: Toolchain.newZip,
Name: "zip",
Description: "portable compression/archiver utilities",
Website: "https://infozip.sourceforge.net/",
ID: 10080,
}
}