Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • fabiao/cookbook
  • redox-os/cookbook
  • stratact/cookbook
  • carrot93/cookbook
  • microcolonel/cookbook
  • feliwir/cookbook
  • xTibor/cookbook
  • jD91mZM2/cookbook
  • mpajkowski/cookbook
  • rw_van/cookbook
  • athei/cookbook
  • kblobr/cookbook
  • VitalyAnkh/cookbook
  • sajattack/cookbook
  • sainath14/cookbook
  • ackxolotl/cookbook
  • AdminXVII/cookbook
  • coolreader18/cookbook
  • deepaksirone/cookbook
  • smckay/cookbook
  • 4lDO2/cookbook
  • tomasritter/cookbook
  • alfredoyang/cookbook
  • samuela/cookbook
  • andrewdavidmackenzie/cookbook
  • uuuvn/cookbook
  • josh_williams/cookbook
  • bjorn3/cookbook
  • ids1024/cookbook
  • Chocimier/cookbook
  • bpisch/cookbook
  • willnode/cookbook
  • grnmeira/cookbook
  • andrey.turkin/cookbook
  • cameronbraid/cookbook
  • kamirr/cookbook
  • freewilll/cookbook
  • kivimango/cookbook
  • rukai/cookbook
  • mattmadeofpasta/cookbook
  • jordan_mccallum/cookbook
  • dahc/cookbook
  • Forest0923/cookbook
  • LLeny/cookbook
  • doriancodes/cookbook
  • ashton/cookbook
  • gmacd/cookbook
  • mojo/cookbook
  • wt/cookbook
  • red15/cookbook
  • hasheddan/cookbook
  • dimymark/cookbook
  • andypython/cookbook
  • enygmator/cookbook
  • Ivan/cookbook
  • argslc/cookbook
  • adi-g15/cookbook
  • tfinnegan937/cookbook
  • raffaeleragni/cookbook
  • Lekkit/cookbook
  • bitstr0m/cookbook
  • josh/cookbook
  • zhaozhao/cookbook
  • blueskyson/cookbook
  • Xunjin/cookbook
  • StaringAtEditor/cookbook
  • monk_programmer/cookbook
  • DimitarGj/cookbook
  • njskalski/cookbook
69 results
Show changes
Commits on Source (974)
Showing
with 1952 additions and 898 deletions
......@@ -9,3 +9,10 @@ rustflags = []
[target.x86_64-unknown-redox]
linker = "x86_64-unknown-redox-gcc"
rustflags = []
[target.riscv64gc-unknown-redox]
linker = "riscv64-unknown-redox-gcc"
rustflags = []
[env]
CFLAGS_riscv64gc_unknown_redox="-march=rv64gc -mabi=lp64d"
......@@ -6,7 +6,3 @@
path = pkgar
url = https://gitlab.redox-os.org/redox-os/pkgar.git
branch = master
[submodule "pkgutils"]
path = pkgutils
url = https://gitlab.redox-os.org/redox-os/pkgutils.git
branch = master
This diff is collapsed.
......@@ -20,12 +20,12 @@ name = "cookbook"
path = "src/lib.rs"
[dependencies]
blake3 = "1.5"
blake3 = "=1.5.3" # 1.5.4 is incompatible with blake3 0.3 dependency from pkgar
pbr = "1.0.2"
pkgar = "0.1.7"
pkgar-keys = "0.1.0"
pkgar = { path = "pkgar/pkgar" }
pkgar-keys = { path = "pkgar/pkgar-keys" }
redoxer = "0.2"
serde = { version = "1.0.110", features = ["derive"] }
termion = "1.5.5"
toml = "0.5.6"
serde = { version = "=1.0.197", features = ["derive"] }
termion = "4"
toml = "0.8"
walkdir = "2.3.1"
......@@ -6,7 +6,7 @@ This repository contains the system source code and packages inside the `recipes
- A recipe can be a software port or system package (they use `pkgar` or `tar.gz` formats).
**Read [this](https://doc.redox-os.org/book/ch09-03-porting-applications.html) page before porting programs to Redox**
**Read [this](https://doc.redox-os.org/book/porting-applications.html) page before porting programs to Redox**
In order for this repository to be useful, it must be set up with an environment
from the [redox](https://gitlab.redox-os.org/redox-os/redox) repository.
......@@ -14,6 +14,7 @@ from the [redox](https://gitlab.redox-os.org/redox-os/redox) repository.
[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
- [Recipe Categories](#recipe-categories)
- [Search Recipes](#search-recipes)
- [Package Policy](#package-policy)
- [Cross-Compilation](#cross-compilation)
- [Library Linking](#library-linking)
......@@ -29,36 +30,41 @@ from the [redox](https://gitlab.redox-os.org/redox-os/redox) repository.
The categories inside the `recipes` folder.
- `backends` - Middlewares, like SDL2
- `core` - System components (included on `server` build)
- `demos` - Software with demos
- `development` - Any software used for development, like compilers and dependency managers
- `documentation` - Software used for documentation
- `emulators` - Console emulators or compatibility/translation layers
- `examples` - Softwares with examples
- `core` - System components
- `demos` - Programs with demos and examples
- `dev` - Programs used for development and programming languages, like compilers and dependency managers
- `doc` - Programs used for documentation
- `emulators` - Console emulators or compatibility layers
- `fonts` - Fonts and programs for fonts
- `games` - Any kind of game
- `gui` - Graphical interfaces
- `graphics` - Programs used for graphics processing or production
- `gui` - Orbital
- `icons` - Icon packs
- `libraries` - Software with functions for other softwares, like OpenSSL
- `network` - Networking tools
- `libs` - Software with functions for other softwares, like OpenSSL
- `math` - Programs used for calculations
- `net` - Networking tools
- `other` - Software that can't fit on other categories
- `shells` - Terminal interpreters
- `sound` - Software used for sound processing/production
- `shells` - Terminal interpreters and extensions
- `sound` - Software used for sound processing or production
- `tests` - Software used to test other softwares
- `toolkits` - Software used to create other softwares with a framework-like approach
- `tools` - Text editors, terminal tools and any other kind of tools
- `tui` - Graphical terminal interfaces
- `video` - Video players and video processing/production tools
- `tui` - Programs with a [terminal user interface](https://en.wikipedia.org/wiki/Text-based_user_interface)
- `video` - Programs used for video playback, processing and production
- `web` - World Wide Web browsers and tools
- `wip` - Software that needs porting or incomplete recipes
### Search Recipes
Click in the button named "Find file" on the top of this repository to search for recipe names.
### Package Policy
Before sending your recipe to upstream (to become a public package), you must follow these rules:
#### Cross-Compilation
- All recipes must use our cross-compilers, a Cookbook [template](https://doc.redox-os.org/book/ch09-03-porting-applications.html#templates) does this automatically but it's not always possible, study the build system of your program/library to find these options or patch the configuration files.
- Don't hardcode the CPU architecture on the recipe script.
- All recipes must use our cross-compilers, a Cookbook [template](https://doc.redox-os.org/book/porting-applications.html#templates) does this automatically but it's not always possible, study the build system of your program or library to find these options or patch the configuration files.
- Don't hardcode the CPU architecture on the recipe script (this would break the multi-arch support).
#### Tarballs
......@@ -66,7 +72,8 @@ Before sending your recipe to upstream (to become a public package), you must fo
#### Library Linking
- Keep the static linking of libraries, there's an exception if the package become bigger than 100MB, big libraries/runtimes like LLVM can be dynamically linked.
- Keep the static linking of libraries to reduce the launch time and improve security.
- If your package is bigger than 50MB, dynamic link big libraries until your package is equal or less than 50MB (to reduce the RAM usage).
#### ABI stability
......@@ -74,12 +81,13 @@ Before sending your recipe to upstream (to become a public package), you must fo
#### Checksum
- If your recipe download a tarball, you will need to create a BLAKE3 hash for it. You can learn how to do it [here](https://doc.redox-os.org/book/ch09-03-porting-applications.html#create-a-blake3-hash-for-your-recipee).
- If your recipe download a tarball, you will need to create a BLAKE3 hash for it. You can learn how to do it [here](https://doc.redox-os.org/book/porting-applications.html#create-a-blake3-hash-for-your-recipe).
#### License
- Don't package programs/libraries lacking a license.
- Verify if the program has some license violation, in case of doubt ask us on the [chat](https://doc.redox-os.org/book/ch13-01-chat.html).
- Don't package programs or libraries lacking a license.
- Verify if the program has some license violation, in case of doubt ask us on the [chat](https://doc.redox-os.org/book/chat.html).
- Non-free programs and assets should go to a subcategory of the `nonfree` category and be approved per license.
### Testing Area
......@@ -101,6 +109,7 @@ These TODOs improve the packagers cooperation and understanding.
- `probably wrong script, see insert-the-link-for-build-instructions-here` - It means that you don't know if your script will work.
- `probably wrong template, see insert-the-link-for-build-instructions-here` - It means that you don't know if the Cookbook template will work.
- `probably missing dependencies, see insert-the-link-for-required-dependencies-here` - It means that you don't know if the required dependencies are satisfied.
- `promote` - It means that the recipe is working and should be moved to the equivalent category at `cookbook/recipes`
Other TODOs are specific and won't be covered on this list.
......
#!/usr/bin/env bash
export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}"
export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig"
export PKG_CONFIG_PATH="${PKG_CONFIG_SYSROOT_DIR}/share/pkgconfig"
exec pkg-config --static "$@"
This diff is collapsed.
......@@ -10,7 +10,7 @@ else
recipes="$@"
fi
for recipe in $recipes
for recipe_path in $recipes
do
./cook.sh "$recipe" distclean
./cook.sh "$recipe_path" distclean
done
......@@ -8,6 +8,9 @@ then
fi
ARCH="${TARGET%%-*}"
HOST="$TARGET"
if [ x"${HOST}" == x"riscv64gc-unknown-redox" ] ; then
HOST="riscv64-unknown-redox"
fi
# Automatic variables
ROOT="$(cd `dirname "$0"` && pwd)"
......@@ -54,3 +57,14 @@ fi
export FIND
export STAT
if [ ! "$(uname -s)" = "Redox" ]
then
function docgen {
"$ROOT/docgen/target/release/docgen" "$@"
}
function pkgar {
"$ROOT/pkgar/target/release/pkgar" "$@"
}
fi
......@@ -20,21 +20,6 @@ else
SHASUM="shasum -a 256"
fi
if [ ! "$(uname -s)" = "Redox" ]
then
function docgen {
CC=cc AR=ar RANLIB=ranlib cargo run --release --manifest-path "$ROOT/docgen/Cargo.toml" --bin docgen -- "$@"
}
function pkg {
CC=cc AR=ar RANLIB=ranlib cargo run --release --manifest-path "$ROOT/pkgutils/Cargo.toml" --bin pkg -- "$@"
}
function pkgar {
CC=cc AR=ar RANLIB=ranlib cargo run --release --manifest-path "$ROOT/pkgar/Cargo.toml" --bin pkgar -- "$@"
}
fi
function usage {
echo "cook.sh $1 <op>" >&2
echo " dist" >&2
......@@ -47,12 +32,8 @@ function usage {
echo " unpkg" >&2
echo " prepare" >&2
echo " unprepare" >&2
echo " publish" >&2
echo " unpublish" >&2
echo " stage" >&2
echo " unstage" >&2
echo " tar" >&2
echo " untar" >&2
echo " version" >&2
}
......@@ -67,12 +48,10 @@ function op {
op $1 prepare
op $1 build
op $1 stage
op $1 tar
op $1 pkg
;;
distclean)
op $1 unpkg
op $1 untar
op $1 unstage
op $1 unprepare
;;
......@@ -154,6 +133,14 @@ function op {
rm -rf "${COOKBOOK_SYSROOT}"
mkdir "${COOKBOOK_SYSROOT}"
# usrmerge
mkdir "${COOKBOOK_SYSROOT}/usr"
for folder in bin include lib share
do
mkdir "${COOKBOOK_SYSROOT}/usr/${folder}"
ln -s "usr/${folder}" "${COOKBOOK_SYSROOT}/${folder}"
done
if [ ${#BUILD_DEPENDS} -gt 0 ]
then
pushd $ROOT
......@@ -310,11 +297,8 @@ function op {
--archive "${COOKBOOK_STAGE}.pkgar" \
--skey "${ROOT}/build/id_ed25519.toml" \
"${COOKBOOK_STAGE}"
;;
unpkg)
rm -fv "${COOKBOOK_STAGE}.pkgar"
;;
tar)
# Generate stage.toml
echo "name = \"$1\"" > "${COOKBOOK_STAGE}.toml"
echo "version = \"$(op $1 version)\"" >> "${COOKBOOK_STAGE}.toml"
echo "target = \"$TARGET\"" >> "${COOKBOOK_STAGE}.toml"
......@@ -329,33 +313,9 @@ function op {
else
echo "depends = []" >> "${COOKBOOK_STAGE}.toml"
fi
rm -rf "${COOKBOOK_STAGE}/pkg"
mkdir -p "${COOKBOOK_STAGE}/pkg"
pushd "${COOKBOOK_STAGE}" > /dev/null
find -L . -type f | cut -d / -f 2- | sort | while read file
do
$SHASUM "$file" >> "pkg/$1.sha256sums"
done
popd > /dev/null
cp -v "${COOKBOOK_STAGE}.toml" "${COOKBOOK_STAGE}/pkg/$1.toml"
pushd "$(dirname "${COOKBOOK_STAGE}")" > /dev/null
pkg --target="$TARGET" create "$(basename "${COOKBOOK_STAGE}")"
popd > /dev/null
;;
untar)
rm -rfv "${COOKBOOK_STAGE}.tar.gz" "${COOKBOOK_STAGE}.sig" "${COOKBOOK_STAGE}.toml"
;;
publish)
mkdir -p "$REPO"
cp -v "${COOKBOOK_STAGE}.tar.gz" "$REPO/$1.tar.gz"
cp -v "${COOKBOOK_STAGE}.sig" "$REPO/$1.sig"
cp -v "${COOKBOOK_STAGE}.toml" "$REPO/$1.toml"
;;
unpublish)
rm -rfv "$REPO/$1.tar.gz" "$REPO/$1.sig" "$REPO/$1.toml"
unpkg)
rm -fv "${COOKBOOK_STAGE}.pkgar" "${COOKBOOK_STAGE}.toml"
;;
*)
usage $1
......@@ -365,7 +325,14 @@ function op {
if [ -n "$1" ]
then
recipe_path=`target/release/find_recipe $1`
if (echo "$1" | grep '.*/.*' >/dev/null); then
recipe_name=$(basename "$1")
recipe_path="recipes/$1"
else
recipe_name="$1"
recipe_path=`target/release/find_recipe $recipe_name`
fi
if [ -d "$ROOT/$recipe_path" ]
then
export COOKBOOK_RECIPE="${ROOT}/$recipe_path"
......@@ -402,10 +369,10 @@ then
for i in "${ops[@]}"
do
op "$1" "$i"
op "$recipe_name" "$i"
done
else
echo "cook.sh: recipe '$1' not found" >&2
echo "cook.sh: recipe '$recipe_name' at not found" >&2
exit 1
fi
else
......
......@@ -10,14 +10,20 @@ else
recipes="$@"
fi
for recipe in $recipes
for recipe_path in $recipes
do
recipe_path=`target/release/find_recipe $recipe`
if (echo "$recipe_path" | grep '.*/.*' >/dev/null); then
recipe_name=$(basename "$recipe_path")
recipe_path="recipes/$recipe_path"
else
recipe_name="$recipe_path"
recipe_path=`target/release/find_recipe $recipe_name`
fi
if [ -e "$recipe_path/recipe.toml" ]
then
target/release/cook --fetch-only "$recipe"
continue
target/release/cook --fetch-only "$recipe_name"
else
./cook.sh "$recipe_name" fetch
fi
./cook.sh "$recipe" fetch
done
Subproject commit 7a316443046eef7cce87f62ccc5ea26e6fb33de2
Subproject commit 0ccbc9914b1ec655e23d4babc5afed87e42e9a0f
Subproject commit 410b9b0761d9c933490e9ee2c0668eea9d9af181
[source]
tar = "https://github.com/lz4/lz4/releases/download/v1.10.0/lz4-1.10.0.tar.gz"
blake3 = "3e69fd475e7852e17594985528b5232afeba7d3d56cfebe2e89071768b2ab36a"
patches = ["redox.patch"]
[build]
template = "custom"
script = """
rsync -av --delete "${COOKBOOK_SOURCE}/" ./
# No configure provided
COOKBOOK_CONFIGURE="true"
COOKBOOK_CONFIGURE_FLAGS=""
export CPPFLAGS="${CPPFLAGS} -D_REDOX"
cookbook_configure
"""
diff '--color=auto' -ruwN source/programs/util.h source-new/programs/util.h
--- source/programs/util.h 2024-07-21 13:29:49.000000000 -0400
+++ source-new/programs/util.h 2024-12-13 02:21:03.032769559 -0500
@@ -52,6 +52,9 @@
#include <time.h> /* time */
#include <limits.h> /* INT_MAX */
#include <errno.h>
+#if defined(_REDOX)
+# include <sys/time.h> /* utimes */
+#endif
@@ -239,12 +242,20 @@
timebuf.modtime = statbuf->st_mtime;
res += utime(filename, &timebuf); /* set access and modification times */
#else
+ #if defined(_REDOX)
+ struct timeval timebuf[2];
+ memset(timebuf, 0, sizeof(timebuf));
+ timebuf[0].tv_usec = UTIME_NOW;
+ timebuf[1].tv_sec = statbuf->st_mtime;
+ res += utimes(filename, timebuf);
+ #else
struct timespec timebuf[2];
memset(timebuf, 0, sizeof(timebuf));
timebuf[0].tv_nsec = UTIME_NOW;
timebuf[1].tv_sec = statbuf->st_mtime;
res += utimensat(AT_FDCWD, filename, timebuf, 0); /* set access and modification times */
#endif
+#endif
}
#if !defined(_WIN32)
[source]
git = "https://github.com/pop-os/wallpapers"
[build]
template = "custom"
script = """
mkdir -pv "${COOKBOOK_STAGE}"/usr/share/wallpapers
cp -rv "${COOKBOOK_SOURCE}"/original/* "${COOKBOOK_STAGE}"/usr/share/wallpapers
"""
[source]
tar = "https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/ubuntu-wallpapers/23.10.4/ubuntu-wallpapers_23.10.4.orig.tar.gz"
blake3 = "1e479d0aa48fe3f2961a2dac28c3ed397a29616cf6e7d73f5ceb6fabfd6449e1"
[build]
template = "custom"
script = """
mkdir -pv "${COOKBOOK_STAGE}"/usr/share/wallpapers
cp -rv "${COOKBOOK_SOURCE}"/ubuntu-wallpapers-23.10.4/*.{jpg,png} "${COOKBOOK_STAGE}"/usr/share/wallpapers
"""
[source]
same_as = "../base"
[build]
template = "custom"
script = """
mkdir -pv "${COOKBOOK_STAGE}/usr/bin"
for package in init logd ramfs randd zerod; do
"${COOKBOOK_CARGO}" build \
--manifest-path "${COOKBOOK_SOURCE}/${package}/Cargo.toml" \
${build_flags}
cp -v \
"target/${TARGET}/${build_type}/${package}" \
"${COOKBOOK_STAGE}/usr/bin/${package}"
done
# TODO: symlinks aren't supported by redox-initfs
#ln -sv zerod "${COOKBOOK_STAGE}/usr/bin/nulld"
cp "${COOKBOOK_STAGE}/usr/bin/zerod" "${COOKBOOK_STAGE}/usr/bin/nulld"
"""
[source]
git = "https://gitlab.redox-os.org/redox-os/base.git"
[build]
template = "custom"
script = """
mkdir -pv "${COOKBOOK_STAGE}/usr/bin"
for package in ipcd ptyd; do
"${COOKBOOK_CARGO}" build \
--manifest-path "${COOKBOOK_SOURCE}/${package}/Cargo.toml" \
${build_flags}
cp -v \
"target/${TARGET}/${build_type}/${package}" \
"${COOKBOOK_STAGE}/usr/bin/${package}"
done
"${COOKBOOK_CARGO}" build \
--manifest-path "${COOKBOOK_SOURCE}/netstack/Cargo.toml" \
${build_flags}
for bin in smolnetd dnsd; do
cp -v \
"target/${TARGET}/${build_type}/${bin}" \
"${COOKBOOK_STAGE}/usr/bin/${bin}"
done
"""
......@@ -4,16 +4,15 @@ git = "https://gitlab.redox-os.org/redox-os/bootloader.git"
[build]
template = "custom"
script = """
rsync -av --delete "${COOKBOOK_SOURCE}/" ./
OUTDIR="${COOKBOOK_BUILD}"
mkdir -v "${COOKBOOK_STAGE}/boot"
function bootloader {
export TARGET="$1"
src="$2"
dst="$3"
"${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" "build/${TARGET}/${src}"
cp -v "build/${TARGET}/${src}" "${COOKBOOK_STAGE}/boot/${dst}"
"${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" -f "${COOKBOOK_SOURCE}/Makefile" -C "${OUTDIR}" "${OUTDIR}/${src}"
cp -v "${OUTDIR}/${src}" "${COOKBOOK_STAGE}/boot/${dst}"
}
ARCH="$(echo "${TARGET}" | cut -d - -f1)"
......@@ -26,7 +25,7 @@ then
fi
# Build UEFI bootloader for supported architectures
if [ "${ARCH}" == "aarch64" -o "${ARCH}" == "x86_64" ]
if [ "${ARCH}" == "aarch64" -o "${ARCH}" == "x86_64" -o "${ARCH}" == "riscv64gc" ]
then
bootloader "${ARCH}-unknown-uefi" bootloader.efi bootloader.efi
bootloader "${ARCH}-unknown-uefi" bootloader-live.efi bootloader-live.efi
......