Skip to content

Instantly share code, notes, and snippets.

View zeldin's full-sized avatar

Marcus Comstedt zeldin

View GitHub Profile
@zeldin
zeldin / gist:8418c17f489c2240c2cb9cb900bcb4c3
Last active August 26, 2018 13:42
DK5Q firmware upload format
FW upload starts with a packet of type 8:
byte 0 : 00
byte 1 : 08 = FW upload start command
byte 2 : 03 = packet sequence number
byte 3 : 01 = upload protocol version? Must be 1
byte 4-5 : 00 00 = total number of bytes (16-bit little endian), 0 means 64K (max size)
byte 6-7 : 7e 04 = total number of data blocks (16-bit little endian)
byte 8-9 : 00 00 = ? (not used)
byte 10: 39 = bytes of flash data per data block (decimal: 57) (not used)
@zeldin
zeldin / hello.s
Created December 4, 2018 18:54
Small ppc32 assembler program that will run on Linux without any 32-bit libs
# compile with: gcc -m32 -static -nostdlib -o hello hello.s
.text
.globl _start
_start:
bl 1f
1:
@zeldin
zeldin / external_link_ppc64.patch
Created March 21, 2019 09:18
golang patch to enable external linking on ppc64
@zeldin
zeldin / onelevel_riscv.md
Created October 1, 2021 06:00
Unmerging with and without UNINSTALL_IGNORE in one level riscv profile
vanadis ~ # cat /usr/local/portage/app-misc/twoleveltest/twoleveltest-0.ebuild
EAPI=7
SLOT=0
KEYWORDS="riscv"
S="${WORKDIR}"
src_install() {
  echo "hello" > foobar
  insinto /usr/lib64/lp64d
  doins foobar
@zeldin
zeldin / gist:9bfd020b7fa2a92a95bf2e0a15a61dea
Created August 17, 2022 06:06
Boostrapping Gentoo ghc package
1) Build the Docker at https://github.com/gregwebs/ghc-docker-dev.git
for the target arch
2) Inside the Docker, make a manual build from the upstreams ghc
sources, with all the Debian patches applied, with a prefix of
/tmp/ghcfoo
3) Copy /tmp/ghcfoo from the Docker to the target system
4) Set up /etc/portage/env/dev-lang/ghc to add the ghc binary in
/tmp/ghcfoo to the path
5) Build the ebuild with USE=ghcbootstrap
6) Delete the /etc/portage/env file and rebuild the ebuild again, to
#!/bin/sh
version="$@"
if [ -z "$version" ]; then
version="`equery l -F '$fullversion' -p dev-lang/ghc | tail -1`"
fi
PKGDIR="/tmp/`uname -m`/packages"
[ -d "$PKGDIR" ] || mkdir -p "$PKGDIR"
export PKGDIR
CFLAGS="-O2 -pipe"
export CFLAGS
Debian patches needed for riscv64:
latomic-subword.patch
Debian patches needed for ppc (32-bit):
latomic-subword.patch
latomic-64bit.patch
// Copyright Oliver Kowalke 2016.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// libcontext adaptation by Marcus Comstedt 2022
#include <cstdlib>
#include <iostream>
#include <memory>
@zeldin
zeldin / bootstrap_haskell_packages_test.txt
Last active December 6, 2022 17:35
The most(?) efficient way of bootstrapping haskell packages with tests enabled
FEATURES=test USE=test emerge -1a dev-haskell/mtl dev-haskell/text dev-haskell/fail dev-haskell/transformers dev-haskell/parsec dev-haskell/transformers-compat dev-haskell/cabal dev-haskell/tagged dev-haskell/splitmix dev-haskell/primitive dev-haskell/colour dev-haskell/nanospec dev-haskell/cabal-doctest dev-haskell/th-abstraction dev-haskell/clock dev-haskell/setenv dev-haskell/stm dev-haskell/random dev-haskell/call-stack dev-haskell/ansi-terminal dev-haskell/quickcheck dev-haskell/hunit dev-haskell/tf-random dev-haskell/quickcheck-io dev-haskell/hspec-expectations
FEATURES=-test USE=-test emerge -1a dev-haskell/hspec-discover dev-haskell/hspec-core # check only these 2 are merged
FEATURES=test USE=test emerge -1a dev-haskell/hspec-discover dev-haskell/hspec-core
FEATURES=test USE=test emerge -a @preserved-rebuild # Should rebuild dev-haskell/hspec
Only three rebuilds are needed; dev-haskell/hspec-discover dev-haskell/hspec-core and dev-haskell/hspec
Build list for first command (25 builds)
@zeldin
zeldin / Dockerfile
Created April 2, 2023 06:41
Recipe for reproducing breezy bug on Ubuntu
FROM ubuntu:jammy
ENV DEBIAN_FRONTEND=noninteractive
RUN sed -i -e '/deb-src/s/^#//' /etc/apt/sources.list && apt-get update
RUN apt-get install -y --no-install-recommends dpkg-dev
WORKDIR /tmp
RUN apt-get source breezy