First commit
For now xserver refuse to compile dues to missing dependencies
This commit is contained in:
		
						commit
						3d3a37d79f
					
				
					 34 changed files with 1570 additions and 0 deletions
				
			
		
							
								
								
									
										21
									
								
								Dockerfile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								Dockerfile
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
FROM debian:bullseye-slim
 | 
			
		||||
 | 
			
		||||
RUN apt update \
 | 
			
		||||
    && apt install --no-install-recommends -y libext2fs2 \
 | 
			
		||||
                      mmdebstrap \
 | 
			
		||||
                      parted \
 | 
			
		||||
                      multistrap \
 | 
			
		||||
                      udisks2 \
 | 
			
		||||
                      qemu-system-aarch64 \
 | 
			
		||||
                      qemu-user-static \
 | 
			
		||||
                      binfmt-support \
 | 
			
		||||
                      arch-test \
 | 
			
		||||
                      curl \
 | 
			
		||||
                      bash 
 | 
			
		||||
 | 
			
		||||
RUN echo "none  /proc/sys/fs/binfmt_misc binfmt_misc defaults 0 0" > /etc/fstab 
 | 
			
		||||
COPY docker/entrypoint.sh /tmp
 | 
			
		||||
COPY src/ /tmp
 | 
			
		||||
WORKDIR /tmp
 | 
			
		||||
CMD bash
 | 
			
		||||
# CMD /tmp/entrypoint.sh
 | 
			
		||||
							
								
								
									
										51
									
								
								README.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								README.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,51 @@
 | 
			
		|||
MNT Reform Debian userland creation
 | 
			
		||||
-----------------------------------
 | 
			
		||||
 | 
			
		||||
This script built an userland "filesystem" for MNT Reform 2 laptop computer.
 | 
			
		||||
**Work in Progress**: for now there is some dependencies missing for compiling
 | 
			
		||||
xservser.
 | 
			
		||||
 | 
			
		||||
## Usage
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
make_userland -r <recipe> -m <mirror> -o <output> -h
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
 * `recipe`: recipe to apply, see recipe section below, default:`default`
 | 
			
		||||
 * `mirroir`: Debian mirror to use, default: `http://ftp.debian.org`
 | 
			
		||||
 * `output`: output directory, default: `/tmp`, a directory named with recipe
 | 
			
		||||
     name will be createdin this directory.
 | 
			
		||||
 | 
			
		||||
## Recipe
 | 
			
		||||
 | 
			
		||||
A recipe is a collection of scripts and attached files  inside a subdirectory 
 | 
			
		||||
of `recipes/`. Theses script are executed into a chroot of the destination
 | 
			
		||||
directory by `mmdebstrap` and use its hook system.
 | 
			
		||||
 | 
			
		||||
## Docker
 | 
			
		||||
 | 
			
		||||
You can find a Dockerfile and an entrypoint script to help you create userland
 | 
			
		||||
filesystem. This container is created to work on a x86 machine then you need to
 | 
			
		||||
run the container with the `-privileged` parameter.
 | 
			
		||||
 | 
			
		||||
First you need to build the container :
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
git clone https://git.epha.se/ephase/reform_mkuserland
 | 
			
		||||
cd reform_mkuserland
 | 
			
		||||
docker build -t reform_make_userland
 | 
			
		||||
[...]
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
And run it :
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
docker run -v /home/docker/output:/output --rm --privileged reform_make_userland
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Licence
 | 
			
		||||
 | 
			
		||||
This work is derivated from MNT script found [here][l_mnt_image] and licenced
 | 
			
		||||
under the GPLv3 Licence
 | 
			
		||||
 | 
			
		||||
[l_mnt_image]:https://source.mnt.re/reform/reform-system-image/
 | 
			
		||||
							
								
								
									
										12
									
								
								docker/entrypoint.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										12
									
								
								docker/entrypoint.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
[[ -z $RECIPE ]] && RECIPE="default"
 | 
			
		||||
 | 
			
		||||
sleep 2
 | 
			
		||||
mount -a
 | 
			
		||||
echo ':qemu-aarch64:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-aarch64-static:OCF' > /proc/sys/fs/binfmt_misc/register
 | 
			
		||||
 | 
			
		||||
if ! ./make_userland.sh -r "$RECIPE" -o /output
 | 
			
		||||
then
 | 
			
		||||
    printf "Error when create userland\n"
 | 
			
		||||
fi
 | 
			
		||||
							
								
								
									
										74
									
								
								src/init_target.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										74
									
								
								src/init_target.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,74 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
# populate Debian image
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# create a file descriptor for storing log
 | 
			
		||||
 | 
			
		||||
exec 3>/tmp/error.log
 | 
			
		||||
 | 
			
		||||
function error {
 | 
			
		||||
    >&2 printf "\e[31mE\e[0m: %s\n" "$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
erase_display_char () {
 | 
			
		||||
    local i
 | 
			
		||||
    local nchar
 | 
			
		||||
    nchar=$1
 | 
			
		||||
    i=0
 | 
			
		||||
 | 
			
		||||
    while [ "$i" -lt "$nchar" ]; do
 | 
			
		||||
        printf "\b \b"
 | 
			
		||||
        ((i=i + 1))
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
install_packages () {
 | 
			
		||||
    local package
 | 
			
		||||
    package="$1"
 | 
			
		||||
 | 
			
		||||
    printf "Install %s: " "$package"
 | 
			
		||||
    apt-get install -y "$package" 2>&3 | while read -r x; do
 | 
			
		||||
    display=""
 | 
			
		||||
    pkg_name=""
 | 
			
		||||
    case $x in
 | 
			
		||||
        Get*)
 | 
			
		||||
            pkg_name=$(echo "$x" | awk '{ printf $5 }')
 | 
			
		||||
            display="downloading $pkg_name"
 | 
			
		||||
        ;;
 | 
			
		||||
        Unpack*)
 | 
			
		||||
            pkg_name=$(echo "$x" | awk '{ printf $2 }')
 | 
			
		||||
            display="Unpacking $pkg_name"
 | 
			
		||||
        ;;
 | 
			
		||||
        *already*newest*)
 | 
			
		||||
            pkg_name=$(echo "$x" | awk '{ printf $1 }')
 | 
			
		||||
            display="Already Installed"
 | 
			
		||||
            break
 | 
			
		||||
        ;;
 | 
			
		||||
    esac
 | 
			
		||||
	if [[ -n "$display" ]]
 | 
			
		||||
        then
 | 
			
		||||
            display="$display $pkg_name"
 | 
			
		||||
            erase_display_char "$nchar"
 | 
			
		||||
            printf "%s" "$display"
 | 
			
		||||
            nchar=${#display}
 | 
			
		||||
        fi 
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )"
 | 
			
		||||
RECIPE_DIR="${SCRIPT_DIR}/recipe"
 | 
			
		||||
 | 
			
		||||
[[ ! -d "$RECIPE_DIR" ]] && { error "Recipe dir ${RECIPE_DIR} does not exist"; exit 10; }
 | 
			
		||||
export DEBIAN_FRONTEND=noninteractive
 | 
			
		||||
export DEBCONF_NONINTERACTIVE_SEEN=true
 | 
			
		||||
export LC_ALL=C
 | 
			
		||||
export LANGUAGE=C
 | 
			
		||||
export LANG=C
 | 
			
		||||
 | 
			
		||||
for i in  $RECIPE_DIR/*.sh
 | 
			
		||||
do
 | 
			
		||||
    source $i
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
exit 0
 | 
			
		||||
							
								
								
									
										157
									
								
								src/make_userland.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										157
									
								
								src/make_userland.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,157 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
function usage {
 | 
			
		||||
 | 
			
		||||
    cat <<EOF
 | 
			
		||||
 | 
			
		||||
Create Debian userland filesystem for MNT Reform
 | 
			
		||||
---
 | 
			
		||||
This script create an userland system for the MNT Reform 2 laptop
 | 
			
		||||
 | 
			
		||||
USAGE:
 | 
			
		||||
make_userland.sh -t <target> -r <recipe> -m <mirror>
 | 
			
		||||
 | 
			
		||||
<target>
 | 
			
		||||
 | 
			
		||||
<recipe>.
 | 
			
		||||
EOF
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function error {
 | 
			
		||||
    >&2 printf "\e[31mE\e[0m %s\n" "$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function clean {
 | 
			
		||||
    rm -rf "$output"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function process_args {
 | 
			
		||||
 | 
			
		||||
    while :; do
 | 
			
		||||
        case $1 in
 | 
			
		||||
            -h|-\?|--help)
 | 
			
		||||
                usage
 | 
			
		||||
                exit 0
 | 
			
		||||
                ;;
 | 
			
		||||
            -r|--recipe)
 | 
			
		||||
                recipe_name="$2"
 | 
			
		||||
                shift
 | 
			
		||||
                ;;
 | 
			
		||||
            -m|--mirror)
 | 
			
		||||
                local http_response
 | 
			
		||||
                http_response=$(curl -o /dev/null -s -L -I -w "%{http_code}\n" "$2")
 | 
			
		||||
                if [ ! "$http_response" -eq 200 ]
 | 
			
		||||
                then
 | 
			
		||||
                    error "Mirror $1 seems to have problem."
 | 
			
		||||
                    exit 5
 | 
			
		||||
                fi
 | 
			
		||||
                debian_mirror="$2"
 | 
			
		||||
                shift
 | 
			
		||||
                ;;
 | 
			
		||||
            -o|--output)
 | 
			
		||||
                if [ ! -d "$2" ]
 | 
			
		||||
                then
 | 
			
		||||
                    error "output directory $2 not exist."
 | 
			
		||||
                    exit 5
 | 
			
		||||
                fi
 | 
			
		||||
                output_dir=$2
 | 
			
		||||
                ;;
 | 
			
		||||
            *)
 | 
			
		||||
            break
 | 
			
		||||
        esac
 | 
			
		||||
        shift
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function process_packagefile () {
 | 
			
		||||
    local packagesfile
 | 
			
		||||
    local packageslist
 | 
			
		||||
    packagesfile="$1"
 | 
			
		||||
    packageslist="$2"
 | 
			
		||||
 | 
			
		||||
    if [ ! -f "$packagesfile" ]
 | 
			
		||||
    then
 | 
			
		||||
        error "Package file $packagesfile not found"
 | 
			
		||||
        return
 | 
			
		||||
    fi
 | 
			
		||||
    while read -r pkg
 | 
			
		||||
    do
 | 
			
		||||
        if [[ -z $packageslist ]]
 | 
			
		||||
        then
 | 
			
		||||
            packageslist="$pkg"
 | 
			
		||||
        else
 | 
			
		||||
            packageslist="${packageslist},${pkg}"
 | 
			
		||||
        fi
 | 
			
		||||
    done < "$packagesfile"
 | 
			
		||||
    printf "%s" "$packageslist"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
for c in curl mmdebstrap
 | 
			
		||||
do
 | 
			
		||||
    if ! command -v "$c" >/dev/null
 | 
			
		||||
    then
 | 
			
		||||
        error "This script need $c to work properly"
 | 
			
		||||
        exit 6
 | 
			
		||||
    fi
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
# default values
 | 
			
		||||
debian_mirror="http://ftp.debian.org/debian"
 | 
			
		||||
output_dir="/tmp"
 | 
			
		||||
recipe_name="default"
 | 
			
		||||
 | 
			
		||||
process_args "$@"
 | 
			
		||||
export RECIPE="recipes/$recipe_name"
 | 
			
		||||
 | 
			
		||||
printf "Make userland script, dir:%s recipe:%s" "$(pwd)" "$recipe"
 | 
			
		||||
 | 
			
		||||
if [ ! -d "$RECIPE" ]
 | 
			
		||||
then
 | 
			
		||||
    error "recipe folder $RECIPE not found"
 | 
			
		||||
    usage
 | 
			
		||||
    exit 2
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
output="$output_dir/$recipe_name"
 | 
			
		||||
if [ -f "$output" ]
 | 
			
		||||
then
 | 
			
		||||
    error "$output directory exist, remove it and launch $0 again"
 | 
			
		||||
    exit 20
 | 
			
		||||
fi
 | 
			
		||||
trap clean ERR SIGINT
 | 
			
		||||
 | 
			
		||||
include=""
 | 
			
		||||
if [ -d "$RECIPE/packages" ]
 | 
			
		||||
then
 | 
			
		||||
 | 
			
		||||
    for f in "$RECIPE"/packages/*.list
 | 
			
		||||
    do
 | 
			
		||||
        printf "Add package list for mmdebstrap: %s\n" "$f"
 | 
			
		||||
        include="$( process_packagefile "$f" "$include")"
 | 
			
		||||
    done
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -d "$RECIPE"/hook ]
 | 
			
		||||
then
 | 
			
		||||
    hook="--hook-directory=$(pwd)/${RECIPE}/hook"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
command="mmdebstrap --architectures=arm64 --components=main --variant=minbase"
 | 
			
		||||
 | 
			
		||||
[[ -n "$include" ]] && command="$command --include=$include"
 | 
			
		||||
[[ -n "$hook" ]] && command="$command $hook"
 | 
			
		||||
command="$command sid $output $debian_mirror" 
 | 
			
		||||
 | 
			
		||||
$command || exit 20
 | 
			
		||||
 | 
			
		||||
exit
 | 
			
		||||
#mkdir "$output/root/recipe" || exit 21 
 | 
			
		||||
#
 | 
			
		||||
#cp init_target.sh "$output/root/" || exit 40
 | 
			
		||||
#cp -r "$recipe"/* "$output/root/recipe" || exit 41
 | 
			
		||||
#
 | 
			
		||||
#chroot "$output" /root/init_target.sh
 | 
			
		||||
#
 | 
			
		||||
#exit 0
 | 
			
		||||
							
								
								
									
										28
									
								
								src/recipes/default/hook/customize.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										28
									
								
								src/recipes/default/hook/customize.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
printf "Customize hook script for mmdebstrap %s\n\n" "$RECIPE"
 | 
			
		||||
 | 
			
		||||
printf "Add MNT repository and key\n"
 | 
			
		||||
chroot $1 apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 376511EB67AD7BAF
 | 
			
		||||
echo "deb https://mntre.com/reform-debian sid/" | chroot $1 tee /etc/apt/sources.list.d/mntre.list
 | 
			
		||||
chroot $1 apt update
 | 
			
		||||
 | 
			
		||||
printf "Install MNT packages\n"
 | 
			
		||||
chroot $1 apt install -y reform-tools reform-handbook
 | 
			
		||||
 | 
			
		||||
source="${RECIPE}/hook/data/overlay"
 | 
			
		||||
printf "Sync overlay directory from %s to %s\n" "$source" "$1"
 | 
			
		||||
if [ -d $source ]
 | 
			
		||||
then
 | 
			
		||||
    printf "  -> source exist\n"
 | 
			
		||||
    cp -Raf ${RECIPE}/hook/data/overlay/* $1
 | 
			
		||||
else
 | 
			
		||||
    printf "Can't find %s directory\n" "$source"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Procfs is needed to build DRM
 | 
			
		||||
mount -t proc /proc $1/proc
 | 
			
		||||
 | 
			
		||||
chroot $1 /root/build_script.sh
 | 
			
		||||
 | 
			
		||||
exit 0
 | 
			
		||||
							
								
								
									
										85
									
								
								src/recipes/default/hook/data/overlay/etc/adduser.conf
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								src/recipes/default/hook/data/overlay/etc/adduser.conf
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,85 @@
 | 
			
		|||
# /etc/adduser.conf: `adduser' configuration.
 | 
			
		||||
# See adduser(8) and adduser.conf(5) for full documentation.
 | 
			
		||||
 | 
			
		||||
# The DSHELL variable specifies the default login shell on your
 | 
			
		||||
# system.
 | 
			
		||||
DSHELL=/bin/bash
 | 
			
		||||
 | 
			
		||||
# The DHOME variable specifies the directory containing users' home
 | 
			
		||||
# directories.
 | 
			
		||||
DHOME=/home
 | 
			
		||||
 | 
			
		||||
# If GROUPHOMES is "yes", then the home directories will be created as
 | 
			
		||||
# /home/groupname/user.
 | 
			
		||||
GROUPHOMES=no
 | 
			
		||||
 | 
			
		||||
# If LETTERHOMES is "yes", then the created home directories will have
 | 
			
		||||
# an extra directory - the first letter of the user name. For example:
 | 
			
		||||
# /home/u/user.
 | 
			
		||||
LETTERHOMES=no
 | 
			
		||||
 | 
			
		||||
# The SKEL variable specifies the directory containing "skeletal" user
 | 
			
		||||
# files; in other words, files such as a sample .profile that will be
 | 
			
		||||
# copied to the new user's home directory when it is created.
 | 
			
		||||
SKEL=/etc/skel
 | 
			
		||||
 | 
			
		||||
# FIRST_SYSTEM_[GU]ID to LAST_SYSTEM_[GU]ID inclusive is the range for UIDs
 | 
			
		||||
# for dynamically allocated administrative and system accounts/groups.
 | 
			
		||||
# Please note that system software, such as the users allocated by the base-passwd
 | 
			
		||||
# package, may assume that UIDs less than 100 are unallocated.
 | 
			
		||||
FIRST_SYSTEM_UID=100
 | 
			
		||||
LAST_SYSTEM_UID=999
 | 
			
		||||
 | 
			
		||||
FIRST_SYSTEM_GID=100
 | 
			
		||||
LAST_SYSTEM_GID=999
 | 
			
		||||
 | 
			
		||||
# FIRST_[GU]ID to LAST_[GU]ID inclusive is the range of UIDs of dynamically
 | 
			
		||||
# allocated user accounts/groups.
 | 
			
		||||
FIRST_UID=1000
 | 
			
		||||
LAST_UID=59999
 | 
			
		||||
 | 
			
		||||
FIRST_GID=1000
 | 
			
		||||
LAST_GID=59999
 | 
			
		||||
 | 
			
		||||
# The USERGROUPS variable can be either "yes" or "no".  If "yes" each
 | 
			
		||||
# created user will be given their own group to use as a default.  If
 | 
			
		||||
# "no", each created user will be placed in the group whose gid is
 | 
			
		||||
# USERS_GID (see below).
 | 
			
		||||
USERGROUPS=yes
 | 
			
		||||
 | 
			
		||||
# If USERGROUPS is "no", then USERS_GID should be the GID of the group
 | 
			
		||||
# `users' (or the equivalent group) on your system.
 | 
			
		||||
USERS_GID=100
 | 
			
		||||
 | 
			
		||||
# If DIR_MODE is set, directories will be created with the specified
 | 
			
		||||
# mode. Otherwise the default mode 0755 will be used.
 | 
			
		||||
DIR_MODE=0755
 | 
			
		||||
 | 
			
		||||
# If SETGID_HOME is "yes" home directories for users with their own
 | 
			
		||||
# group the setgid bit will be set. This was the default for
 | 
			
		||||
# versions << 3.13 of adduser. Because it has some bad side effects we
 | 
			
		||||
# no longer do this per default. If you want it nevertheless you can
 | 
			
		||||
# still set it here.
 | 
			
		||||
SETGID_HOME=no
 | 
			
		||||
 | 
			
		||||
# If QUOTAUSER is set, a default quota will be set from that user with
 | 
			
		||||
# `edquota -p QUOTAUSER newuser'
 | 
			
		||||
QUOTAUSER=""
 | 
			
		||||
 | 
			
		||||
# If SKEL_IGNORE_REGEX is set, adduser will ignore files matching this
 | 
			
		||||
# regular expression when creating a new home directory
 | 
			
		||||
SKEL_IGNORE_REGEX="dpkg-(old|new|dist|save)"
 | 
			
		||||
 | 
			
		||||
# Set this if you want the --add_extra_groups option to adduser to add
 | 
			
		||||
# new users to other groups.
 | 
			
		||||
# This is the list of groups that new non-system users will be added to
 | 
			
		||||
# Default:
 | 
			
		||||
EXTRA_GROUPS="dialout cdrom floppy audio video plugdev users"
 | 
			
		||||
 | 
			
		||||
# If ADD_EXTRA_GROUPS is set to something non-zero, the EXTRA_GROUPS
 | 
			
		||||
# option above will be default behavior for adding new, non-system users
 | 
			
		||||
ADD_EXTRA_GROUPS=1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# check user and group names also against this regular expression.
 | 
			
		||||
#NAME_REGEX="^[a-z][-a-z0-9_]*\$"
 | 
			
		||||
							
								
								
									
										54
									
								
								src/recipes/default/hook/data/overlay/etc/dhcp/dhclient.conf
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								src/recipes/default/hook/data/overlay/etc/dhcp/dhclient.conf
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,54 @@
 | 
			
		|||
# Configuration file for /sbin/dhclient.
 | 
			
		||||
#
 | 
			
		||||
# This is a sample configuration file for dhclient. See dhclient.conf's
 | 
			
		||||
#	man page for more information about the syntax of this file
 | 
			
		||||
#	and a more comprehensive list of the parameters understood by
 | 
			
		||||
#	dhclient.
 | 
			
		||||
#
 | 
			
		||||
# Normally, if the DHCP server provides reasonable information and does
 | 
			
		||||
#	not leave anything out (like the domain name, for example), then
 | 
			
		||||
#	few changes must be made to this file, if any.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
 | 
			
		||||
 | 
			
		||||
send host-name = gethostname();
 | 
			
		||||
request subnet-mask, broadcast-address, time-offset, routers,
 | 
			
		||||
	domain-name, domain-name-servers, domain-search, host-name,
 | 
			
		||||
	dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
 | 
			
		||||
	netbios-name-servers, netbios-scope, interface-mtu,
 | 
			
		||||
	rfc3442-classless-static-routes, ntp-servers;
 | 
			
		||||
 | 
			
		||||
#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
 | 
			
		||||
#send dhcp-lease-time 3600;
 | 
			
		||||
#supersede domain-name "fugue.com home.vix.com";
 | 
			
		||||
#prepend domain-name-servers 127.0.0.1;
 | 
			
		||||
#require subnet-mask, domain-name-servers;
 | 
			
		||||
timeout 5;
 | 
			
		||||
#retry 60;
 | 
			
		||||
#reboot 10;
 | 
			
		||||
#select-timeout 5;
 | 
			
		||||
#initial-interval 2;
 | 
			
		||||
#script "/sbin/dhclient-script";
 | 
			
		||||
#media "-link0 -link1 -link2", "link0 link1";
 | 
			
		||||
#reject 192.33.137.209;
 | 
			
		||||
 | 
			
		||||
#alias {
 | 
			
		||||
#  interface "eth0";
 | 
			
		||||
#  fixed-address 192.5.5.213;
 | 
			
		||||
#  option subnet-mask 255.255.255.255;
 | 
			
		||||
#}
 | 
			
		||||
 | 
			
		||||
#lease {
 | 
			
		||||
#  interface "eth0";
 | 
			
		||||
#  fixed-address 192.33.137.200;
 | 
			
		||||
#  medium "link0 link1";
 | 
			
		||||
#  option host-name "andare.swiftmedia.com";
 | 
			
		||||
#  option subnet-mask 255.255.255.0;
 | 
			
		||||
#  option broadcast-address 192.33.137.255;
 | 
			
		||||
#  option routers 192.33.137.250;
 | 
			
		||||
#  option domain-name-servers 127.0.0.1;
 | 
			
		||||
#  renew 2 2000/1/12 00:00:01;
 | 
			
		||||
#  rebind 2 2000/1/12 00:00:01;
 | 
			
		||||
#  expire 2 2000/1/12 00:00:01;
 | 
			
		||||
#}
 | 
			
		||||
							
								
								
									
										2
									
								
								src/recipes/default/hook/data/overlay/etc/hostname
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								src/recipes/default/hook/data/overlay/etc/hostname
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,2 @@
 | 
			
		|||
reform
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								src/recipes/default/hook/data/overlay/etc/hosts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								src/recipes/default/hook/data/overlay/etc/hosts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,4 @@
 | 
			
		|||
127.0.0.1	localhost reform
 | 
			
		||||
::1		localhost ip6-localhost ip6-loopback reform
 | 
			
		||||
ff02::1		ip6-allnodes
 | 
			
		||||
ff02::2		ip6-allrouters
 | 
			
		||||
							
								
								
									
										4
									
								
								src/recipes/default/hook/data/overlay/etc/ld.so.conf
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								src/recipes/default/hook/data/overlay/etc/ld.so.conf
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,4 @@
 | 
			
		|||
/usr/local/lib
 | 
			
		||||
/usr/local/lib/dri
 | 
			
		||||
 | 
			
		||||
include /etc/ld.so.conf.d/*.conf
 | 
			
		||||
							
								
								
									
										14
									
								
								src/recipes/default/hook/data/overlay/etc/motd
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/recipes/default/hook/data/overlay/etc/motd
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,14 @@
 | 
			
		|||
%G
 | 
			
		||||
 | 
			
		||||
    ▒       ▒       ▒
 | 
			
		||||
    ██▒     ██▒     ██▒                 Welcome to Debian GNU/Linux
 | 
			
		||||
    ████▒   ████▒   ████▒   ██████▒     on MNT Reform
 | 
			
		||||
    ██████▒ ██████▒ ██████▒ ██████▒     System Image: 2021-03-04
 | 
			
		||||
    ███████████████████████████
 | 
			
		||||
    ███▒███████▒███████▒███████         https://mntre.com/reform
 | 
			
		||||
    ███  ▒█████  ▒█████  ▒█████         https://www.debian.org
 | 
			
		||||
           ▒███    ▒███    ▒███
 | 
			
		||||
             ▒█      ▒█      ▒█         [31;1m████[33;1m████[32;1m████[0m[36m████[34;1m████[0m[35m████[0m
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										1
									
								
								src/recipes/default/hook/data/overlay/etc/resolv.conf
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/recipes/default/hook/data/overlay/etc/resolv.conf
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
nameserver 8.8.8.8
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,11 @@
 | 
			
		|||
[Unit]
 | 
			
		||||
Description=MNT Reform Hardware Defaults Setup
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=oneshot
 | 
			
		||||
ExecStart=/usr/sbin/reform-hw-setup.sh
 | 
			
		||||
StandardOutput=journal
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=sysinit.target
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										85
									
								
								src/recipes/default/hook/data/overlay/root/build_script.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										85
									
								
								src/recipes/default/hook/data/overlay/root/build_script.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,85 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
exec 3>/tmp/build_error.log
 | 
			
		||||
 | 
			
		||||
function error {
 | 
			
		||||
    >&2 printf "\e[31mE\e[0m: %s\n" "$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function get_current_dir {
 | 
			
		||||
    # this function return the absolute path of the script
 | 
			
		||||
    
 | 
			
		||||
    local script_path
 | 
			
		||||
    script_path="$(dirname $0)"
 | 
			
		||||
 | 
			
		||||
    # If the path begin with /, this is an absolute part
 | 
			
		||||
    if [[ "$script_path" =~ ^/[[:graph:]]*$ ]]
 | 
			
		||||
    then
 | 
			
		||||
        printf "%s" "$script_path"
 | 
			
		||||
        return 
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    local current_path
 | 
			
		||||
    current_path="$(pwd)"
 | 
			
		||||
    if [[ $script_path == "." ]]
 | 
			
		||||
    then
 | 
			
		||||
        script_path=""
 | 
			
		||||
    elif [[ $script_path =~ ^./[[:graph:]]*$ ]]
 | 
			
		||||
    then
 | 
			
		||||
        script_path=${script_path##./}
 | 
			
		||||
        echo " $current_path trad: $script_path"
 | 
			
		||||
    else
 | 
			
		||||
        while [[ $script_path =~ ^../[[:graph:]]*$ ]]
 | 
			
		||||
        do
 | 
			
		||||
            script_path="${script_path##../}"
 | 
			
		||||
            current_path="${current_path%/*}"
 | 
			
		||||
        done
 | 
			
		||||
    fi
 | 
			
		||||
    printf "%s/%s" "${current_path}" "${script_path}"
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
current_dir=$(get_current_dir)
 | 
			
		||||
scripts_dir="${current_dir}/scripts"
 | 
			
		||||
 | 
			
		||||
for script in ${scripts_dir}/*.sh
 | 
			
		||||
do
 | 
			
		||||
    source $script
 | 
			
		||||
    printf "\nBuilding %s\n" "$name"
 | 
			
		||||
    printf "  >> cloning repository\n"
 | 
			
		||||
    $clone_command 2>&3 || {
 | 
			
		||||
        error "Error when cloning $name"
 | 
			
		||||
        exit 1
 | 
			
		||||
    }
 | 
			
		||||
    post_clone_hook
 | 
			
		||||
 | 
			
		||||
    cd $clone_directory   
 | 
			
		||||
    if [[ ! $patches_dir == 0 ]]
 | 
			
		||||
    then
 | 
			
		||||
        printf "  >> patching\n"
 | 
			
		||||
        for patch in ${current_dir}/${patches_dir}/*
 | 
			
		||||
        do
 | 
			
		||||
            printf "   >  patchfile: %s" "$patch"
 | 
			
		||||
            patch -p1 < "$patch" || {
 | 
			
		||||
                error "Error whan applying patch, check log\n"; 
 | 
			
		||||
                exit 1; 
 | 
			
		||||
            }
 | 
			
		||||
        done
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    printf "  >> configure\n"
 | 
			
		||||
    $configure_command 2>&3 1>/dev/null|| {
 | 
			
		||||
        error "Error when configuring $name, command: $configure_command"
 | 
			
		||||
        exit 1
 | 
			
		||||
    }
 | 
			
		||||
    post_configure_hook
 | 
			
		||||
    
 | 
			
		||||
    printf "  >> Build and install\n"
 | 
			
		||||
    $build_command 2>&3 || {
 | 
			
		||||
        error "Error when buildind and installing $name, command: $build_command"
 | 
			
		||||
        exit 1
 | 
			
		||||
    }
 | 
			
		||||
    cd ..
 | 
			
		||||
    post_install_hook
 | 
			
		||||
done
 | 
			
		||||
exit 0
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,436 @@
 | 
			
		|||
From 96106df17897b862b87937d6222a3e6483f45480 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Lucas Stach <l.stach@pengutronix.de>
 | 
			
		||||
Date: Fri, 13 Nov 2020 14:26:23 +0100
 | 
			
		||||
Subject: [PATCH 1/6] frontend/dri: copy image use in dup_image
 | 
			
		||||
 | 
			
		||||
Don't lose the use flags when dup'ing an image.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
 | 
			
		||||
---
 | 
			
		||||
 src/gallium/frontends/dri/dri2.c | 1 +
 | 
			
		||||
 1 file changed, 1 insertion(+)
 | 
			
		||||
 | 
			
		||||
diff --git a/src/gallium/frontends/dri/dri2.c b/src/gallium/frontends/dri/dri2.c
 | 
			
		||||
index 0c0168497a2..1cd42cd8114 100644
 | 
			
		||||
--- a/src/gallium/frontends/dri/dri2.c
 | 
			
		||||
+++ b/src/gallium/frontends/dri/dri2.c
 | 
			
		||||
@@ -1308,6 +1308,7 @@ dri2_dup_image(__DRIimage *image, void *loaderPrivate)
 | 
			
		||||
    img->dri_format = image->dri_format;
 | 
			
		||||
    /* This should be 0 for sub images, but dup is also used for base images. */
 | 
			
		||||
    img->dri_components = image->dri_components;
 | 
			
		||||
+   img->use = image->use;
 | 
			
		||||
    img->loader_private = loaderPrivate;
 | 
			
		||||
 
 | 
			
		||||
    return img;
 | 
			
		||||
-- 
 | 
			
		||||
GitLab
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
From 00add4be8620175ccc69869e22479962dacdce9d Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Lucas Stach <l.stach@pengutronix.de>
 | 
			
		||||
Date: Fri, 13 Nov 2020 14:38:41 +0100
 | 
			
		||||
Subject: [PATCH 2/6] dri: bring back use flags for createImageWithModifiers
 | 
			
		||||
 | 
			
		||||
createImageWithModifiers dropped the use flags that were present with
 | 
			
		||||
the createImage interface as it was believed at the time that all those
 | 
			
		||||
use flags could be expressed as a modifier. This turned out to be untrue,
 | 
			
		||||
as there are some use flags like SCANOUT and the BACKBUFFER hint that
 | 
			
		||||
won't ever get a eqivalent modifier expression.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
 | 
			
		||||
---
 | 
			
		||||
 include/GL/internal/dri_interface.h      | 1 +
 | 
			
		||||
 src/egl/drivers/dri2/platform_wayland.c  | 4 ++--
 | 
			
		||||
 src/gallium/frontends/dri/dri2.c         | 5 ++---
 | 
			
		||||
 src/gbm/backends/dri/gbm_dri.c           | 2 +-
 | 
			
		||||
 src/loader/loader_dri3_helper.c          | 3 +++
 | 
			
		||||
 src/mesa/drivers/dri/i965/intel_screen.c | 2 +-
 | 
			
		||||
 6 files changed, 10 insertions(+), 7 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h
 | 
			
		||||
index 39d5dd07533..222821428d0 100644
 | 
			
		||||
--- a/include/GL/internal/dri_interface.h
 | 
			
		||||
+++ b/include/GL/internal/dri_interface.h
 | 
			
		||||
@@ -1678,6 +1678,7 @@ struct __DRIimageExtensionRec {
 | 
			
		||||
                                            int width, int height, int format,
 | 
			
		||||
                                            const uint64_t *modifiers,
 | 
			
		||||
                                            const unsigned int modifier_count,
 | 
			
		||||
+                                           unsigned int use,
 | 
			
		||||
                                            void *loaderPrivate);
 | 
			
		||||
 
 | 
			
		||||
    /*
 | 
			
		||||
diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c
 | 
			
		||||
index c0b26c4b623..bb508cbe421 100644
 | 
			
		||||
--- a/src/egl/drivers/dri2/platform_wayland.c
 | 
			
		||||
+++ b/src/egl/drivers/dri2/platform_wayland.c
 | 
			
		||||
@@ -595,7 +595,7 @@ get_back_bo(struct dri2_egl_surface *dri2_surf)
 | 
			
		||||
                                                       dri2_surf->base.Height,
 | 
			
		||||
                                                       linear_dri_image_format,
 | 
			
		||||
                                                       &linear_mod,
 | 
			
		||||
-                                                      1,
 | 
			
		||||
+                                                      1, use_flags,
 | 
			
		||||
                                                       NULL);
 | 
			
		||||
       } else {
 | 
			
		||||
          dri2_surf->back->linear_copy =
 | 
			
		||||
@@ -624,7 +624,7 @@ get_back_bo(struct dri2_egl_surface *dri2_surf)
 | 
			
		||||
                                                      dri2_surf->base.Height,
 | 
			
		||||
                                                      dri_image_format,
 | 
			
		||||
                                                      modifiers,
 | 
			
		||||
-                                                     num_modifiers,
 | 
			
		||||
+                                                     num_modifiers, use_flags,
 | 
			
		||||
                                                      NULL);
 | 
			
		||||
       } else {
 | 
			
		||||
          dri2_surf->back->dri_image =
 | 
			
		||||
diff --git a/src/gallium/frontends/dri/dri2.c b/src/gallium/frontends/dri/dri2.c
 | 
			
		||||
index 1cd42cd8114..1f1e7a9a65e 100644
 | 
			
		||||
--- a/src/gallium/frontends/dri/dri2.c
 | 
			
		||||
+++ b/src/gallium/frontends/dri/dri2.c
 | 
			
		||||
@@ -1074,12 +1074,11 @@ static __DRIimage *
 | 
			
		||||
 dri2_create_image_with_modifiers(__DRIscreen *dri_screen,
 | 
			
		||||
                                  int width, int height, int format,
 | 
			
		||||
                                  const uint64_t *modifiers,
 | 
			
		||||
-                                 const unsigned count,
 | 
			
		||||
+                                 const unsigned count, unsigned int use,
 | 
			
		||||
                                  void *loaderPrivate)
 | 
			
		||||
 {
 | 
			
		||||
    return dri2_create_image_common(dri_screen, width, height, format,
 | 
			
		||||
-                                   __DRI_IMAGE_USE_SHARE, modifiers, count,
 | 
			
		||||
-                                   loaderPrivate);
 | 
			
		||||
+                                   use, modifiers, count, loaderPrivate);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 static bool
 | 
			
		||||
diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c
 | 
			
		||||
index b5634741554..aff3a107e7d 100644
 | 
			
		||||
--- a/src/gbm/backends/dri/gbm_dri.c
 | 
			
		||||
+++ b/src/gbm/backends/dri/gbm_dri.c
 | 
			
		||||
@@ -1173,7 +1173,7 @@ gbm_dri_bo_create(struct gbm_device *gbm,
 | 
			
		||||
                                               width, height,
 | 
			
		||||
                                               dri_format,
 | 
			
		||||
                                               modifiers, count,
 | 
			
		||||
-                                              bo);
 | 
			
		||||
+                                              dri_use, bo);
 | 
			
		||||
 
 | 
			
		||||
       if (bo->image) {
 | 
			
		||||
          /* The client passed in a list of invalid modifiers */
 | 
			
		||||
diff --git a/src/loader/loader_dri3_helper.c b/src/loader/loader_dri3_helper.c
 | 
			
		||||
index ccf8d1795e7..6fc6a2b705a 100644
 | 
			
		||||
--- a/src/loader/loader_dri3_helper.c
 | 
			
		||||
+++ b/src/loader/loader_dri3_helper.c
 | 
			
		||||
@@ -1407,6 +1407,9 @@ dri3_alloc_render_buffer(struct loader_dri3_drawable *draw, unsigned int format,
 | 
			
		||||
                                                                        format,
 | 
			
		||||
                                                                        modifiers,
 | 
			
		||||
                                                                        count,
 | 
			
		||||
+                                                                       __DRI_IMAGE_USE_SHARE |
 | 
			
		||||
+                                                                       __DRI_IMAGE_USE_SCANOUT |
 | 
			
		||||
+                                                                       __DRI_IMAGE_USE_BACKBUFFER,
 | 
			
		||||
                                                                        buffer);
 | 
			
		||||
          }
 | 
			
		||||
 
 | 
			
		||||
diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c
 | 
			
		||||
index 4492d43c040..4511b962eef 100644
 | 
			
		||||
--- a/src/mesa/drivers/dri/i965/intel_screen.c
 | 
			
		||||
+++ b/src/mesa/drivers/dri/i965/intel_screen.c
 | 
			
		||||
@@ -893,7 +893,7 @@ static __DRIimage *
 | 
			
		||||
 intel_create_image_with_modifiers(__DRIscreen *dri_screen,
 | 
			
		||||
                                   int width, int height, int format,
 | 
			
		||||
                                   const uint64_t *modifiers,
 | 
			
		||||
-                                  const unsigned count,
 | 
			
		||||
+                                  const unsigned count, unsigned int use,
 | 
			
		||||
                                   void *loaderPrivate)
 | 
			
		||||
 {
 | 
			
		||||
    return intel_create_image_common(dri_screen, width, height, format, 0,
 | 
			
		||||
-- 
 | 
			
		||||
GitLab
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
From 587aac46dbadf2aca1489aadd4216e592e11e17b Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Lucas Stach <l.stach@pengutronix.de>
 | 
			
		||||
Date: Fri, 13 Nov 2020 14:59:52 +0100
 | 
			
		||||
Subject: [PATCH 3/6] frontend/dri: add EXPLICIT_FLUSH hint in
 | 
			
		||||
 dri2_resource_get_param
 | 
			
		||||
 | 
			
		||||
dri2_resource_get_param() is called from two different places right now.
 | 
			
		||||
Only one of them adds the EXPLICIT_FLUSH hint to the handle usage, which
 | 
			
		||||
may disable the optimizations provided by this hint without a reason.
 | 
			
		||||
 | 
			
		||||
Make sure to always add this hint when appropriate.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
 | 
			
		||||
---
 | 
			
		||||
 src/gallium/frontends/dri/dri2.c | 6 +++---
 | 
			
		||||
 1 file changed, 3 insertions(+), 3 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/src/gallium/frontends/dri/dri2.c b/src/gallium/frontends/dri/dri2.c
 | 
			
		||||
index 1f1e7a9a65e..7851ebceb3e 100644
 | 
			
		||||
--- a/src/gallium/frontends/dri/dri2.c
 | 
			
		||||
+++ b/src/gallium/frontends/dri/dri2.c
 | 
			
		||||
@@ -1198,6 +1198,9 @@ dri2_resource_get_param(__DRIimage *image, enum pipe_resource_param param,
 | 
			
		||||
    if (!pscreen->resource_get_param)
 | 
			
		||||
       return false;
 | 
			
		||||
 
 | 
			
		||||
+   if (image->use & __DRI_IMAGE_USE_BACKBUFFER)
 | 
			
		||||
+      handle_usage |= PIPE_HANDLE_USAGE_EXPLICIT_FLUSH;
 | 
			
		||||
+
 | 
			
		||||
    return pscreen->resource_get_param(pscreen, NULL, image->texture,
 | 
			
		||||
                                       image->plane, 0, 0, param, handle_usage,
 | 
			
		||||
                                       value);
 | 
			
		||||
@@ -1242,9 +1245,6 @@ dri2_query_image_by_resource_param(__DRIimage *image, int attrib, int *value)
 | 
			
		||||
 
 | 
			
		||||
    handle_usage = PIPE_HANDLE_USAGE_FRAMEBUFFER_WRITE;
 | 
			
		||||
 
 | 
			
		||||
-   if (image->use & __DRI_IMAGE_USE_BACKBUFFER)
 | 
			
		||||
-      handle_usage |= PIPE_HANDLE_USAGE_EXPLICIT_FLUSH;
 | 
			
		||||
-
 | 
			
		||||
    if (!dri2_resource_get_param(image, param, handle_usage, &res_param))
 | 
			
		||||
       return false;
 | 
			
		||||
 
 | 
			
		||||
-- 
 | 
			
		||||
GitLab
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
From 59f74212bbb5e28badd0775929e42856c9a01d35 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Lucas Stach <l.stach@pengutronix.de>
 | 
			
		||||
Date: Fri, 13 Nov 2020 15:03:37 +0100
 | 
			
		||||
Subject: [PATCH 4/6] etnaviv: remove double assigment of surface->texture
 | 
			
		||||
 | 
			
		||||
surf->base.texture is already assigned earlier via a proper
 | 
			
		||||
pipe_resource_reference call. Remove the superfluous assignement.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
 | 
			
		||||
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
 | 
			
		||||
---
 | 
			
		||||
 src/gallium/drivers/etnaviv/etnaviv_surface.c | 1 -
 | 
			
		||||
 1 file changed, 1 deletion(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/src/gallium/drivers/etnaviv/etnaviv_surface.c b/src/gallium/drivers/etnaviv/etnaviv_surface.c
 | 
			
		||||
index c78973bdb09..52a937652d2 100644
 | 
			
		||||
--- a/src/gallium/drivers/etnaviv/etnaviv_surface.c
 | 
			
		||||
+++ b/src/gallium/drivers/etnaviv/etnaviv_surface.c
 | 
			
		||||
@@ -112,7 +112,6 @@ etna_create_surface(struct pipe_context *pctx, struct pipe_resource *prsc,
 | 
			
		||||
       etna_screen_resource_alloc_ts(pctx->screen, rsc);
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
-   surf->base.texture = &rsc->base;
 | 
			
		||||
    surf->base.format = templat->format;
 | 
			
		||||
    surf->base.width = rsc->levels[level].width;
 | 
			
		||||
    surf->base.height = rsc->levels[level].height;
 | 
			
		||||
-- 
 | 
			
		||||
GitLab
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
From 570908323e02c4558f5a9abc2d82621056cd65ab Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Lucas Stach <l.stach@pengutronix.de>
 | 
			
		||||
Date: Tue, 17 Nov 2020 12:08:13 +0100
 | 
			
		||||
Subject: [PATCH 5/6] etnaviv: compact etna_state_updates
 | 
			
		||||
 | 
			
		||||
Just reclaim a bit of screen real estate, purely cosmetic change.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
 | 
			
		||||
---
 | 
			
		||||
 src/gallium/drivers/etnaviv/etnaviv_state.c | 18 ++++++------------
 | 
			
		||||
 1 file changed, 6 insertions(+), 12 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/src/gallium/drivers/etnaviv/etnaviv_state.c b/src/gallium/drivers/etnaviv/etnaviv_state.c
 | 
			
		||||
index 1b4a7040b50..84fea58ecb5 100644
 | 
			
		||||
--- a/src/gallium/drivers/etnaviv/etnaviv_state.c
 | 
			
		||||
+++ b/src/gallium/drivers/etnaviv/etnaviv_state.c
 | 
			
		||||
@@ -749,24 +749,18 @@ struct etna_state_updater {
 | 
			
		||||
 static const struct etna_state_updater etna_state_updates[] = {
 | 
			
		||||
    {
 | 
			
		||||
       etna_shader_update_vertex, ETNA_DIRTY_SHADER | ETNA_DIRTY_VERTEX_ELEMENTS,
 | 
			
		||||
-   },
 | 
			
		||||
-   {
 | 
			
		||||
+   }, {
 | 
			
		||||
       etna_shader_link, ETNA_DIRTY_SHADER,
 | 
			
		||||
-   },
 | 
			
		||||
-   {
 | 
			
		||||
+   }, {
 | 
			
		||||
       etna_update_blend, ETNA_DIRTY_BLEND | ETNA_DIRTY_FRAMEBUFFER
 | 
			
		||||
-   },
 | 
			
		||||
-   {
 | 
			
		||||
+   }, {
 | 
			
		||||
       etna_update_blend_color, ETNA_DIRTY_BLEND_COLOR | ETNA_DIRTY_FRAMEBUFFER,
 | 
			
		||||
-   },
 | 
			
		||||
-   {
 | 
			
		||||
+   }, {
 | 
			
		||||
       etna_update_ts_config, ETNA_DIRTY_DERIVE_TS,
 | 
			
		||||
-   },
 | 
			
		||||
-   {
 | 
			
		||||
+   }, {
 | 
			
		||||
       etna_update_clipping, ETNA_DIRTY_SCISSOR | ETNA_DIRTY_FRAMEBUFFER |
 | 
			
		||||
                             ETNA_DIRTY_RASTERIZER | ETNA_DIRTY_VIEWPORT,
 | 
			
		||||
-   },
 | 
			
		||||
-   {
 | 
			
		||||
+   }, {
 | 
			
		||||
       etna_update_zsa, ETNA_DIRTY_ZSA | ETNA_DIRTY_SHADER,
 | 
			
		||||
    }
 | 
			
		||||
 };
 | 
			
		||||
-- 
 | 
			
		||||
GitLab
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
From 537c7a6ea3fd2e5a6433e52b406ba39b89f520d9 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Lucas Stach <l.stach@pengutronix.de>
 | 
			
		||||
Date: Fri, 13 Nov 2020 15:05:55 +0100
 | 
			
		||||
Subject: [PATCH 6/6] etnaviv: flush used render buffers on context flush when
 | 
			
		||||
 neccessary
 | 
			
		||||
 | 
			
		||||
Some resources like backbuffers are explicitly flushed by the frontend
 | 
			
		||||
at the appropriate time, others however won't get flushed explicitly.
 | 
			
		||||
Remember those resources when they get emitted as a render buffer and
 | 
			
		||||
flush them on a context flush to make their content visible to other
 | 
			
		||||
entities sharing the buffer.
 | 
			
		||||
 | 
			
		||||
We still keep the optimized path for most resources where the frontend
 | 
			
		||||
promises to do the flushing for us and only enable implicit flushing
 | 
			
		||||
when a buffer handle is exported/imported without the
 | 
			
		||||
PIPE_HANDLE_USAGE_EXPLICIT_FLUSH flag set.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
 | 
			
		||||
---
 | 
			
		||||
 src/gallium/drivers/etnaviv/etnaviv_context.c  | 16 ++++++++++++++++
 | 
			
		||||
 src/gallium/drivers/etnaviv/etnaviv_context.h  |  3 +++
 | 
			
		||||
 src/gallium/drivers/etnaviv/etnaviv_resource.c |  7 +++++++
 | 
			
		||||
 src/gallium/drivers/etnaviv/etnaviv_resource.h |  2 ++
 | 
			
		||||
 src/gallium/drivers/etnaviv/etnaviv_state.c    | 17 +++++++++++++++++
 | 
			
		||||
 5 files changed, 45 insertions(+)
 | 
			
		||||
 | 
			
		||||
diff --git a/src/gallium/drivers/etnaviv/etnaviv_context.c b/src/gallium/drivers/etnaviv/etnaviv_context.c
 | 
			
		||||
index 9c334a450c6..80c5d430419 100644
 | 
			
		||||
--- a/src/gallium/drivers/etnaviv/etnaviv_context.c
 | 
			
		||||
+++ b/src/gallium/drivers/etnaviv/etnaviv_context.c
 | 
			
		||||
@@ -128,6 +128,9 @@ etna_context_destroy(struct pipe_context *pctx)
 | 
			
		||||
       _mesa_set_destroy(ctx->used_resources_write, NULL);
 | 
			
		||||
 
 | 
			
		||||
    }
 | 
			
		||||
+   if (ctx->flush_resources)
 | 
			
		||||
+      _mesa_set_destroy(ctx->flush_resources, NULL);
 | 
			
		||||
+
 | 
			
		||||
    mtx_unlock(&ctx->lock);
 | 
			
		||||
 
 | 
			
		||||
    if (ctx->dummy_desc_bo)
 | 
			
		||||
@@ -475,6 +478,14 @@ etna_flush(struct pipe_context *pctx, struct pipe_fence_handle **fence,
 | 
			
		||||
    list_for_each_entry(struct etna_acc_query, aq, &ctx->active_acc_queries, node)
 | 
			
		||||
       etna_acc_query_suspend(aq, ctx);
 | 
			
		||||
 
 | 
			
		||||
+   /* flush all resources that need an implicit flush */
 | 
			
		||||
+   set_foreach(ctx->flush_resources, entry) {
 | 
			
		||||
+      struct pipe_resource *prsc = (struct pipe_resource *)entry->key;
 | 
			
		||||
+
 | 
			
		||||
+      pctx->flush_resource(pctx, prsc);
 | 
			
		||||
+   }
 | 
			
		||||
+   _mesa_set_clear(ctx->flush_resources, NULL);
 | 
			
		||||
+
 | 
			
		||||
    etna_cmd_stream_flush(ctx->stream, ctx->in_fence_fd,
 | 
			
		||||
                           (flags & PIPE_FLUSH_FENCE_FD) ? &out_fence_fd : NULL);
 | 
			
		||||
 
 | 
			
		||||
@@ -581,6 +592,11 @@ etna_context_create(struct pipe_screen *pscreen, void *priv, unsigned flags)
 | 
			
		||||
    if (!ctx->used_resources_write)
 | 
			
		||||
       goto fail;
 | 
			
		||||
 
 | 
			
		||||
+   ctx->flush_resources = _mesa_set_create(NULL, _mesa_hash_pointer,
 | 
			
		||||
+                                           _mesa_key_pointer_equal);
 | 
			
		||||
+   if (!ctx->flush_resources)
 | 
			
		||||
+      goto fail;
 | 
			
		||||
+
 | 
			
		||||
    mtx_init(&ctx->lock, mtx_recursive);
 | 
			
		||||
 
 | 
			
		||||
    /* context ctxate setup */
 | 
			
		||||
diff --git a/src/gallium/drivers/etnaviv/etnaviv_context.h b/src/gallium/drivers/etnaviv/etnaviv_context.h
 | 
			
		||||
index dd6af3d93e6..112902aac8a 100644
 | 
			
		||||
--- a/src/gallium/drivers/etnaviv/etnaviv_context.h
 | 
			
		||||
+++ b/src/gallium/drivers/etnaviv/etnaviv_context.h
 | 
			
		||||
@@ -206,6 +206,9 @@ struct etna_context {
 | 
			
		||||
    struct set *used_resources_read;
 | 
			
		||||
    struct set *used_resources_write;
 | 
			
		||||
 
 | 
			
		||||
+   /* resources that must be flushed implicitly at the context flush time */
 | 
			
		||||
+   struct set *flush_resources;
 | 
			
		||||
+
 | 
			
		||||
    mtx_t lock;
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
diff --git a/src/gallium/drivers/etnaviv/etnaviv_resource.c b/src/gallium/drivers/etnaviv/etnaviv_resource.c
 | 
			
		||||
index ae4f24b9b44..0c8c28e66aa 100644
 | 
			
		||||
--- a/src/gallium/drivers/etnaviv/etnaviv_resource.c
 | 
			
		||||
+++ b/src/gallium/drivers/etnaviv/etnaviv_resource.c
 | 
			
		||||
@@ -265,6 +265,7 @@ etna_resource_alloc(struct pipe_screen *pscreen, unsigned layout,
 | 
			
		||||
    rsc->base.nr_samples = nr_samples;
 | 
			
		||||
    rsc->layout = layout;
 | 
			
		||||
    rsc->halign = halign;
 | 
			
		||||
+   rsc->explicit_flush = true;
 | 
			
		||||
 
 | 
			
		||||
    pipe_reference_init(&rsc->base.reference, 1);
 | 
			
		||||
    util_range_init(&rsc->valid_buffer_range);
 | 
			
		||||
@@ -519,6 +520,9 @@ etna_resource_from_handle(struct pipe_screen *pscreen,
 | 
			
		||||
    rsc->layout = modifier_to_layout(handle->modifier);
 | 
			
		||||
    rsc->halign = TEXTURE_HALIGN_FOUR;
 | 
			
		||||
 
 | 
			
		||||
+   if (usage & PIPE_HANDLE_USAGE_EXPLICIT_FLUSH)
 | 
			
		||||
+      rsc->explicit_flush = true;
 | 
			
		||||
+
 | 
			
		||||
    level->width = tmpl->width0;
 | 
			
		||||
    level->height = tmpl->height0;
 | 
			
		||||
    level->depth = tmpl->depth0;
 | 
			
		||||
@@ -584,6 +588,9 @@ etna_resource_get_handle(struct pipe_screen *pscreen,
 | 
			
		||||
    handle->offset = rsc->levels[0].offset;
 | 
			
		||||
    handle->modifier = layout_to_modifier(rsc->layout);
 | 
			
		||||
 
 | 
			
		||||
+   if (!(usage & PIPE_HANDLE_USAGE_EXPLICIT_FLUSH))
 | 
			
		||||
+      rsc->explicit_flush = false;
 | 
			
		||||
+
 | 
			
		||||
    if (handle->type == WINSYS_HANDLE_TYPE_SHARED) {
 | 
			
		||||
       return etna_bo_get_name(rsc->bo, &handle->handle) == 0;
 | 
			
		||||
    } else if (handle->type == WINSYS_HANDLE_TYPE_KMS) {
 | 
			
		||||
diff --git a/src/gallium/drivers/etnaviv/etnaviv_resource.h b/src/gallium/drivers/etnaviv/etnaviv_resource.h
 | 
			
		||||
index cb83e891d34..167cf4ed069 100644
 | 
			
		||||
--- a/src/gallium/drivers/etnaviv/etnaviv_resource.h
 | 
			
		||||
+++ b/src/gallium/drivers/etnaviv/etnaviv_resource.h
 | 
			
		||||
@@ -93,6 +93,8 @@ struct etna_resource {
 | 
			
		||||
    struct pipe_resource *texture;
 | 
			
		||||
    /* for when PE doesn't support the base layout */
 | 
			
		||||
    struct pipe_resource *render;
 | 
			
		||||
+   /* frontend flushes resource via an explicit call to flush_resource */
 | 
			
		||||
+   bool explicit_flush;
 | 
			
		||||
 
 | 
			
		||||
    enum etna_resource_status status;
 | 
			
		||||
 
 | 
			
		||||
diff --git a/src/gallium/drivers/etnaviv/etnaviv_state.c b/src/gallium/drivers/etnaviv/etnaviv_state.c
 | 
			
		||||
index 84fea58ecb5..5848735ab14 100644
 | 
			
		||||
--- a/src/gallium/drivers/etnaviv/etnaviv_state.c
 | 
			
		||||
+++ b/src/gallium/drivers/etnaviv/etnaviv_state.c
 | 
			
		||||
@@ -741,6 +741,21 @@ etna_update_zsa(struct etna_context *ctx)
 | 
			
		||||
    return true;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
+static bool
 | 
			
		||||
+etna_record_flush_resources(struct etna_context *ctx)
 | 
			
		||||
+{
 | 
			
		||||
+   struct pipe_framebuffer_state *fb = &ctx->framebuffer_s;
 | 
			
		||||
+
 | 
			
		||||
+   if (fb->nr_cbufs > 0) {
 | 
			
		||||
+      struct etna_surface *surf = etna_surface(fb->cbufs[0]);
 | 
			
		||||
+
 | 
			
		||||
+      if (!etna_resource(surf->prsc)->explicit_flush)
 | 
			
		||||
+         _mesa_set_add(ctx->flush_resources, surf->prsc);
 | 
			
		||||
+   }
 | 
			
		||||
+
 | 
			
		||||
+   return true;
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
 struct etna_state_updater {
 | 
			
		||||
    bool (*update)(struct etna_context *ctx);
 | 
			
		||||
    uint32_t dirty;
 | 
			
		||||
@@ -762,6 +777,8 @@ static const struct etna_state_updater etna_state_updates[] = {
 | 
			
		||||
                             ETNA_DIRTY_RASTERIZER | ETNA_DIRTY_VIEWPORT,
 | 
			
		||||
    }, {
 | 
			
		||||
       etna_update_zsa, ETNA_DIRTY_ZSA | ETNA_DIRTY_SHADER,
 | 
			
		||||
+   }, {
 | 
			
		||||
+      etna_record_flush_resources, ETNA_DIRTY_FRAMEBUFFER,
 | 
			
		||||
    }
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
-- 
 | 
			
		||||
GitLab
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
--- a/src/gallium/drivers/etnaviv/etnaviv_screen.c
 | 
			
		||||
+++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c
 | 
			
		||||
@@ -445,6 +445,10 @@ etna_screen_is_format_supported(struct pipe_screen *pscreen,
 | 
			
		||||
    struct etna_screen *screen = etna_screen(pscreen);
 | 
			
		||||
    unsigned allowed = 0;
 | 
			
		||||
 | 
			
		||||
+   /* HACK to disable all MSAA, as is causes GPU crashes */
 | 
			
		||||
+   if (sample_count > 1)
 | 
			
		||||
+      return false;
 | 
			
		||||
+
 | 
			
		||||
    if (!gpu_supports_texture_target(screen, target))
 | 
			
		||||
       return false;
 | 
			
		||||
							
								
								
									
										19
									
								
								src/recipes/default/hook/data/overlay/root/scripts/10.drm.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/recipes/default/hook/data/overlay/root/scripts/10.drm.sh
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
name="DRM"
 | 
			
		||||
patches_dir=0
 | 
			
		||||
clone_directory="drm"
 | 
			
		||||
clone_command="git clone --depth 1 https://gitlab.freedesktop.org/mesa/drm.git"
 | 
			
		||||
configure_command="meson build -Detnaviv=true -Dradeon=false -Damdgpu=false -Dvmwgfx=false -Dfreedreno=false -Dvc4=false -Dnouveau=false"
 | 
			
		||||
build_command="ninja -C build install"
 | 
			
		||||
 | 
			
		||||
## Hooks
 | 
			
		||||
function post_clone_hook {
 | 
			
		||||
    return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function post_configure_hook {
 | 
			
		||||
    return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function post_install_hook {
 | 
			
		||||
    ldconfig
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
name="MESA"
 | 
			
		||||
patches_dir="mesa_patches"
 | 
			
		||||
clone_directory="mesa"
 | 
			
		||||
clone_command="git clone --depth 1 --branch mesa-20.3.4 https://gitlab.freedesktop.org/mesa/mesa.git"
 | 
			
		||||
configure_command="meson build -Dplatforms=x11,wayland -Ddri3=true -Dgallium-drivers=swrast,etnaviv,kmsro,virgl -Dgbm=enabled -Degl=enabled -Dbuildtype=release -Db_ndebug=true"
 | 
			
		||||
build_command="ninja -C build install"
 | 
			
		||||
 | 
			
		||||
## Hooks
 | 
			
		||||
function post_clone_hook {
 | 
			
		||||
    return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function post_configure_hook {
 | 
			
		||||
    return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function post_install_hook {
 | 
			
		||||
    ldconfig
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
name="Wayland"
 | 
			
		||||
patches_dir=0
 | 
			
		||||
clone_directory="wayland"
 | 
			
		||||
clone_command="git clone --depth 1 https://github.com/wayland-project/wayland.git" 
 | 
			
		||||
configure_command="meson build -Ddocumentation=false"
 | 
			
		||||
build_command="ninja -C build install"
 | 
			
		||||
 | 
			
		||||
## Hooks
 | 
			
		||||
function post_clone_hook {
 | 
			
		||||
    return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function post_configure_hook {
 | 
			
		||||
    return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function post_install_hook {
 | 
			
		||||
    ldconfig
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
name="wlroots"
 | 
			
		||||
patches_dir=0
 | 
			
		||||
clone_directory="wlroots"
 | 
			
		||||
clone_command="git clone --depth 1 --branch=0.12.0 https://github.com/swaywm/wlroots.git"
 | 
			
		||||
configure_command="meson build"
 | 
			
		||||
build_command="ninja -C build install"
 | 
			
		||||
 | 
			
		||||
## Hooks
 | 
			
		||||
function post_clone_hook {
 | 
			
		||||
    return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function post_configure_hook {
 | 
			
		||||
    return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function post_install_hook {
 | 
			
		||||
    ldconfig
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
name="sway"
 | 
			
		||||
patches_dir=0
 | 
			
		||||
clone_directory="sway"
 | 
			
		||||
clone_command="git clone --depth 1 --branch=1.5.1 https://github.com/swaywm/sway.git"
 | 
			
		||||
configure_command="meson build"
 | 
			
		||||
build_command="ninja -C build install"
 | 
			
		||||
 | 
			
		||||
## Hooks
 | 
			
		||||
function post_clone_hook {
 | 
			
		||||
    return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function post_configure_hook {
 | 
			
		||||
    return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function post_install_hook {
 | 
			
		||||
    chmod +s /usr/local/bin/sway
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
name="xserver"
 | 
			
		||||
patches_dir="xserver_patches"
 | 
			
		||||
clone_directory="xserver"
 | 
			
		||||
clone_command="git clone --depth 1 --branch-xorg-server-1.20.11 https://gitlab.freedesktop.org/xorg/xserver.git"
 | 
			
		||||
configure_command="meson build -Dxorg=true -Dxwayland=true -Dglamor=true -Dxwayland_eglstream=false -Dxnest=false -Ddmx=false -Dxvfb=true -Dxwin=false -Dxephyr=false -Ddri3=true"
 | 
			
		||||
build_command="ninja -C build install"
 | 
			
		||||
 | 
			
		||||
## Hooks
 | 
			
		||||
function post_clone_hook {
 | 
			
		||||
    return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function post_configure_hook {
 | 
			
		||||
    return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function post_install_hook {
 | 
			
		||||
    # overwrite /usr/bin/Xwayland with symlink to our Xwayland (FIXME: brittle)
 | 
			
		||||
    rm -f /usr/bin/Xwayland
 | 
			
		||||
    ln -s /usr/local/bin/Xwayland /usr/bin/Xwayland
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
name="Waybar"
 | 
			
		||||
patches_dir=0
 | 
			
		||||
clone_directory="Waybar"
 | 
			
		||||
clone_command="git clone --depth 1 https://github.com/Alexays/Waybar.git"
 | 
			
		||||
configure_command="meson build"
 | 
			
		||||
build_command="ninja -C build install"
 | 
			
		||||
 | 
			
		||||
## Hooks
 | 
			
		||||
function post_clone_hook {
 | 
			
		||||
    return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function post_configure_hook {
 | 
			
		||||
    return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function post_install_hook {
 | 
			
		||||
    return
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,32 @@
 | 
			
		|||
name="WayVNC"
 | 
			
		||||
patches_dir=0
 | 
			
		||||
clone_directory="Waybar"
 | 
			
		||||
clone_command="git clone --depth 1 https://github.com/any1/wayvnc.git"
 | 
			
		||||
configure_command="meson build"
 | 
			
		||||
build_command="ninja -C build install"
 | 
			
		||||
 | 
			
		||||
## Hooks
 | 
			
		||||
function post_clone_hook {
 | 
			
		||||
    printf "  >> post-clone hook : clone subproject\n"
 | 
			
		||||
    cd $clone_directory
 | 
			
		||||
    mkdir subprojects
 | 
			
		||||
    cd subprojects
 | 
			
		||||
    git clone https://github.com/any1/neatvnc.git 1>/dev/null || {
 | 
			
		||||
        error "Error when cloning netvnc.\n";
 | 
			
		||||
        exit 1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    git clone https://github.com/any1/aml.git 1>/dev/null || {
 | 
			
		||||
        error "Error when cloning aml.\n";
 | 
			
		||||
        exit 1;
 | 
			
		||||
    }
 | 
			
		||||
    cd ..
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function post_configure_hook {
 | 
			
		||||
    return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function post_install_hook {
 | 
			
		||||
    return
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
name="Cage"
 | 
			
		||||
patches_dir=0
 | 
			
		||||
clone_directory="cage"
 | 
			
		||||
clone_command="git clone --depth 1 https://github.com/Hjdskes/cage.git"
 | 
			
		||||
configure_command="meson build"
 | 
			
		||||
build_command="ninja -C build install"
 | 
			
		||||
 | 
			
		||||
## Hooks
 | 
			
		||||
function post_clone_hook {
 | 
			
		||||
    return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function post_configure_hook {
 | 
			
		||||
    return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function post_install_hook {
 | 
			
		||||
    return
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
diff --git a/glamor/glamor_render.c b/glamor/glamor_render.c
 | 
			
		||||
index be0741a..1dd2876 100644
 | 
			
		||||
--- a/glamor/glamor_render.c
 | 
			
		||||
+++ b/glamor/glamor_render.c
 | 
			
		||||
@@ -1584,6 +1584,8 @@ glamor_composite_clipped_region(CARD8 op,
 | 
			
		||||
     if (prect != rect)
 | 
			
		||||
         free(prect);
 | 
			
		||||
  out:
 | 
			
		||||
+    glFinish();
 | 
			
		||||
+
 | 
			
		||||
     if (temp_src != source)
 | 
			
		||||
         FreePicture(temp_src, 0);
 | 
			
		||||
     if (temp_mask != mask)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,98 @@
 | 
			
		|||
# This file is part of PulseAudio.
 | 
			
		||||
#
 | 
			
		||||
# PulseAudio is free software; you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU Lesser General Public License as
 | 
			
		||||
# published by the Free Software Foundation; either version 2.1 of the
 | 
			
		||||
# License, or (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
# PulseAudio is distributed in the hope that it will be useful, but
 | 
			
		||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 | 
			
		||||
# General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU Lesser General Public License
 | 
			
		||||
# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
; Analog input path for MNT Reform, which has a headset mic input
 | 
			
		||||
; that is only on the left channel (mono).
 | 
			
		||||
 | 
			
		||||
[General]
 | 
			
		||||
priority = 100
 | 
			
		||||
 | 
			
		||||
[Element Capture]
 | 
			
		||||
switch = mute
 | 
			
		||||
volume = ignore
 | 
			
		||||
 | 
			
		||||
[Element Mic]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
[Element Mic Boost]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
[Element Dock Mic]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
[Element Dock Mic Boost]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
[Element Front Mic]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
[Element Front Mic Boost]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
[Element Int Mic]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
[Element Int Mic Boost]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
[Element Internal Mic]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
[Element Internal Mic Boost]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
[Element Rear Mic]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
[Element Rear Mic Boost]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
[Element Headset]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
[Element Headset Mic]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
[Element Headset Mic Boost]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
[Element Headphone Mic]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
[Element Headphone Mic Boost]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
[Element Line]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
[Element Line Boost]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
[Element Aux]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
[Element Video]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
[Element Mic/Line]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
[Element TV Tuner]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
[Element FM]
 | 
			
		||||
required-absent = any
 | 
			
		||||
 | 
			
		||||
.include analog-input.conf.common
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
[General]
 | 
			
		||||
auto-profiles = yes
 | 
			
		||||
 | 
			
		||||
[Mapping stereo-out]
 | 
			
		||||
device-strings = hw:0
 | 
			
		||||
fallback = yes
 | 
			
		||||
channel-map = left,right
 | 
			
		||||
paths-output = analog-output analog-output-speaker analog-output-headphones
 | 
			
		||||
direction = output
 | 
			
		||||
priority = 1
 | 
			
		||||
 | 
			
		||||
[Mapping headset-mono-in]
 | 
			
		||||
device-strings = hw:0
 | 
			
		||||
fallback = yes
 | 
			
		||||
channel-map = mono
 | 
			
		||||
paths-input = analog-input-reform
 | 
			
		||||
direction = input
 | 
			
		||||
priority = 1
 | 
			
		||||
 | 
			
		||||
[Profile output:stereo-out+input:mono-in]
 | 
			
		||||
description = MNT Reform
 | 
			
		||||
output-mappings = stereo-out
 | 
			
		||||
input-mappings = headset-mono-in
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										10
									
								
								src/recipes/default/hook/essential.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										10
									
								
								src/recipes/default/hook/essential.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,10 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
printf "Essential hook script for mmdebstrap\n\n"
 | 
			
		||||
printf "Configure locales\n"
 | 
			
		||||
chroot $1 ln --force --symbolic /usr/share/zoneinfo/Europe/Paris /etc/localtime
 | 
			
		||||
echo "locales locales/default_environment_locale select en_US.UTF-8" | chroot $1 debconf-set-selections
 | 
			
		||||
echo "locales locales/locales_to_be_generated multiselect en_US.UTF-8 UTF-8" | chroot $1 debconf-set-selections
 | 
			
		||||
chroot $1 dpkg --configure -a
 | 
			
		||||
 | 
			
		||||
exit 0
 | 
			
		||||
							
								
								
									
										5
									
								
								src/recipes/default/hook/extract.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										5
									
								
								src/recipes/default/hook/extract.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
printf "Extract hook script for mmdebstrap\n\n"
 | 
			
		||||
 | 
			
		||||
exit 0
 | 
			
		||||
							
								
								
									
										5
									
								
								src/recipes/default/hook/setup.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										5
									
								
								src/recipes/default/hook/setup.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
printf "Setup hook script for mmdebstrap\n\n"
 | 
			
		||||
 | 
			
		||||
exit 0
 | 
			
		||||
							
								
								
									
										92
									
								
								src/recipes/default/packages/packages.list
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								src/recipes/default/packages/packages.list
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,92 @@
 | 
			
		|||
alsa-utils
 | 
			
		||||
arc-theme
 | 
			
		||||
bash-completion
 | 
			
		||||
breeze-icon-theme
 | 
			
		||||
brightness-udev
 | 
			
		||||
brightnessctl
 | 
			
		||||
bsdmainutils
 | 
			
		||||
ca-certificates
 | 
			
		||||
connman-gtk
 | 
			
		||||
console-data
 | 
			
		||||
console-setup
 | 
			
		||||
coreutils
 | 
			
		||||
cpio
 | 
			
		||||
cron
 | 
			
		||||
cryptsetup
 | 
			
		||||
curl
 | 
			
		||||
debian-archive-keyring
 | 
			
		||||
dosfstools
 | 
			
		||||
e2fsprogs
 | 
			
		||||
engrampa
 | 
			
		||||
eog
 | 
			
		||||
evince
 | 
			
		||||
fbset
 | 
			
		||||
file
 | 
			
		||||
fonts-noto-color-emoji
 | 
			
		||||
gedit
 | 
			
		||||
git
 | 
			
		||||
gpg
 | 
			
		||||
gnome-disk-utility
 | 
			
		||||
gnome-icon-theme
 | 
			
		||||
gnome-system-monitor
 | 
			
		||||
gpgv
 | 
			
		||||
gpm
 | 
			
		||||
grim
 | 
			
		||||
htop
 | 
			
		||||
ifupdown
 | 
			
		||||
init-system-helpers
 | 
			
		||||
iproute2
 | 
			
		||||
iptables
 | 
			
		||||
iputils-ping
 | 
			
		||||
ircii
 | 
			
		||||
isc-dhcp-client
 | 
			
		||||
kbd
 | 
			
		||||
less
 | 
			
		||||
libblockdev-crypto2
 | 
			
		||||
libblockdev-dm2
 | 
			
		||||
libpam-systemd
 | 
			
		||||
lm-sensors
 | 
			
		||||
locales
 | 
			
		||||
lxpolkit
 | 
			
		||||
man-db
 | 
			
		||||
mesa-utils
 | 
			
		||||
micro
 | 
			
		||||
mpv
 | 
			
		||||
nano
 | 
			
		||||
ncdu
 | 
			
		||||
ncurses-term
 | 
			
		||||
net-tools
 | 
			
		||||
netbase
 | 
			
		||||
netcat-traditional
 | 
			
		||||
nfacct
 | 
			
		||||
ntp
 | 
			
		||||
ntpdate
 | 
			
		||||
parted
 | 
			
		||||
pavucontrol
 | 
			
		||||
pciutils
 | 
			
		||||
policykit-1
 | 
			
		||||
procps
 | 
			
		||||
pulseaudio
 | 
			
		||||
python3-psutil
 | 
			
		||||
readline-common
 | 
			
		||||
rfkill
 | 
			
		||||
rofi
 | 
			
		||||
screen
 | 
			
		||||
slurp
 | 
			
		||||
sudo
 | 
			
		||||
sway
 | 
			
		||||
systemd
 | 
			
		||||
systemd-sysv
 | 
			
		||||
telnet
 | 
			
		||||
thunar
 | 
			
		||||
tmux
 | 
			
		||||
traceroute
 | 
			
		||||
unicode-data
 | 
			
		||||
usbutils
 | 
			
		||||
vim
 | 
			
		||||
w3m
 | 
			
		||||
wget
 | 
			
		||||
wpasupplicant
 | 
			
		||||
xfce4-terminal
 | 
			
		||||
xterm
 | 
			
		||||
xwayland
 | 
			
		||||
							
								
								
									
										86
									
								
								src/recipes/default/packages/packages_build.list
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								src/recipes/default/packages/packages_build.list
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,86 @@
 | 
			
		|||
autoconf
 | 
			
		||||
autopoint
 | 
			
		||||
bison
 | 
			
		||||
cmake
 | 
			
		||||
expat
 | 
			
		||||
flex
 | 
			
		||||
g++
 | 
			
		||||
gcc
 | 
			
		||||
gettext
 | 
			
		||||
git
 | 
			
		||||
intltool
 | 
			
		||||
libbsd-dev
 | 
			
		||||
libdbus-1-dev
 | 
			
		||||
libdbusmenu-gtk3-dev
 | 
			
		||||
libdrm-dev
 | 
			
		||||
libepoxy-dev
 | 
			
		||||
libevdev-dev
 | 
			
		||||
libflac-dev
 | 
			
		||||
libfmt-dev
 | 
			
		||||
libgarcon-1-dev
 | 
			
		||||
libgbm-dev
 | 
			
		||||
libgirepository1.0-dev
 | 
			
		||||
libgtkmm-3.0-dev
 | 
			
		||||
libinput-dev
 | 
			
		||||
libjson-c-dev
 | 
			
		||||
libjsoncpp-dev
 | 
			
		||||
libmpdclient-dev
 | 
			
		||||
libmpeg2-4-dev
 | 
			
		||||
libmpg123-dev
 | 
			
		||||
libmtdev-dev
 | 
			
		||||
libnl-3-dev
 | 
			
		||||
libnl-genl-3-dev
 | 
			
		||||
libpango1.0-dev
 | 
			
		||||
libpciaccess-dev
 | 
			
		||||
libpcre3-dev
 | 
			
		||||
libpixman-1-dev
 | 
			
		||||
libpng-dev
 | 
			
		||||
libpulse-dev
 | 
			
		||||
libsdl2-dev
 | 
			
		||||
libsdl2-gfx-dev
 | 
			
		||||
libsdl2-image-dev
 | 
			
		||||
libsdl2-mixer-dev
 | 
			
		||||
libsdl2-net-dev
 | 
			
		||||
libsdl2-ttf-dev
 | 
			
		||||
libsigc++-2.0-dev
 | 
			
		||||
libspdlog-dev
 | 
			
		||||
libsystemd-dev
 | 
			
		||||
libtool
 | 
			
		||||
libudev-dev
 | 
			
		||||
libunwind-dev
 | 
			
		||||
libwayland-dev
 | 
			
		||||
libwayland-egl-backend-dev
 | 
			
		||||
libx11-dev
 | 
			
		||||
libx11-xcb-dev
 | 
			
		||||
libxcb-composite0-dev
 | 
			
		||||
libxcb-dri2-0-dev
 | 
			
		||||
libxcb-dri3-dev
 | 
			
		||||
libxcb-glx0-dev
 | 
			
		||||
libxcb-icccm4-dev
 | 
			
		||||
libxcb-present-dev
 | 
			
		||||
libxcb-sync-dev
 | 
			
		||||
libxcb-xfixes0-dev
 | 
			
		||||
libxcb-xinput-dev
 | 
			
		||||
libxdamage-dev
 | 
			
		||||
libxext-dev
 | 
			
		||||
libxfce4ui-2-dev
 | 
			
		||||
libxfixes-dev
 | 
			
		||||
libxfont-dev
 | 
			
		||||
libxkbcommon-dev
 | 
			
		||||
libxkbfile-dev
 | 
			
		||||
libxml2-dev
 | 
			
		||||
libxrandr-dev
 | 
			
		||||
libxshmfence-dev
 | 
			
		||||
libxxf86vm-dev
 | 
			
		||||
llvm-dev
 | 
			
		||||
make
 | 
			
		||||
meson
 | 
			
		||||
nettle-dev
 | 
			
		||||
patch
 | 
			
		||||
python3-mako
 | 
			
		||||
python3-setuptools
 | 
			
		||||
wayland-protocols
 | 
			
		||||
xfce4-dev-tools
 | 
			
		||||
xfonts-utils
 | 
			
		||||
xutils-dev
 | 
			
		||||
zlib1g-dev
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue