QA fixes
This commit is contained in:
		
							
								
								
									
										5
									
								
								app-mobilephone/usb-tethering/files/dhcpd.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								app-mobilephone/usb-tethering/files/dhcpd.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
option domain-name-servers 8.8.8.8, 8.8.4.4;
 | 
			
		||||
option subnet-mask 255.255.255.0;
 | 
			
		||||
subnet 10.15.19.0 netmask 255.255.255.0 {
 | 
			
		||||
  range 10.15.19.100 10.15.19.254;
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,9 @@
 | 
			
		||||
[Service]
 | 
			
		||||
PIDFile=/run/danctnix/dhcpd4.pid
 | 
			
		||||
 | 
			
		||||
# We need to fix this ASAP, dhcpd won't run with dhcp user, this needs
 | 
			
		||||
# to be investigated.
 | 
			
		||||
User=root
 | 
			
		||||
 | 
			
		||||
ExecStart=
 | 
			
		||||
ExecStart=/usr/bin/dhcpd -4 -q -cf /etc/danctnix/dhcpd.conf -pf /run/danctnix/dhcpd4.pid -lf /run/danctnix/dhcpd4.lease
 | 
			
		||||
@@ -0,0 +1,2 @@
 | 
			
		||||
d /run/danctnix 0755 root root
 | 
			
		||||
f /run/danctnix/dhcpd4.lease 0644 root root
 | 
			
		||||
							
								
								
									
										77
									
								
								app-mobilephone/usb-tethering/files/usb-tethering
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								app-mobilephone/usb-tethering/files/usb-tethering
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,77 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
# ConfigFS script is taken from postmarketOS
 | 
			
		||||
# https://postmarketos.org
 | 
			
		||||
 | 
			
		||||
# These are very important, it defines what is the device:
 | 
			
		||||
 | 
			
		||||
deviceinfo_usb_idVendor="0x1F3A"
 | 
			
		||||
deviceinfo_usb_idProduct="0xEFE8"
 | 
			
		||||
deviceinfo_manufacturer="DanctNIX"
 | 
			
		||||
deviceinfo_name="Arch Linux Mobile"
 | 
			
		||||
 | 
			
		||||
# We'll let them know that this device is Arch ARM.
 | 
			
		||||
deviceinfo_usb_serialnumber="Arch"
 | 
			
		||||
 | 
			
		||||
setup_usb_network_configfs() {
 | 
			
		||||
	# See: https://www.kernel.org/doc/Documentation/usb/gadget_configfs.txt
 | 
			
		||||
	CONFIGFS=/sys/kernel/config/usb_gadget/
 | 
			
		||||
 | 
			
		||||
	if ! [ -e "$CONFIGFS" ]; then
 | 
			
		||||
		echo "  $CONFIGFS does not exist, skipping configfs usb gadget"
 | 
			
		||||
		return
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	# Default values for USB-related deviceinfo variables
 | 
			
		||||
	usb_idVendor="${deviceinfo_usb_idVendor:-0x18D1}"   # default: Google Inc.
 | 
			
		||||
	usb_idProduct="${deviceinfo_usb_idProduct:-0xD001}" # default: Nexus 4 (fastboot)
 | 
			
		||||
	usb_serialnumber="${deviceinfo_usb_serialnumber:-postmarketOS}"
 | 
			
		||||
	usb_rndis_function="${deviceinfo_usb_rndis_function:-rndis.usb0}"
 | 
			
		||||
 | 
			
		||||
	echo "  Setting up an USB gadget through configfs"
 | 
			
		||||
	# Create an usb gadet configuration
 | 
			
		||||
	mkdir $CONFIGFS/g1 || echo "  Couldn't create $CONFIGFS/g1"
 | 
			
		||||
	echo "$usb_idVendor"  > "$CONFIGFS/g1/idVendor"
 | 
			
		||||
	echo "$usb_idProduct" > "$CONFIGFS/g1/idProduct"
 | 
			
		||||
 | 
			
		||||
	# Create english (0x409) strings
 | 
			
		||||
	mkdir $CONFIGFS/g1/strings/0x409 || echo "  Couldn't create $CONFIGFS/g1/strings/0x409"
 | 
			
		||||
 | 
			
		||||
	# shellcheck disable=SC2154
 | 
			
		||||
	echo "$deviceinfo_manufacturer" > "$CONFIGFS/g1/strings/0x409/manufacturer"
 | 
			
		||||
	echo "$usb_serialnumber"        > "$CONFIGFS/g1/strings/0x409/serialnumber"
 | 
			
		||||
	# shellcheck disable=SC2154
 | 
			
		||||
	echo "$deviceinfo_name"         > "$CONFIGFS/g1/strings/0x409/product"
 | 
			
		||||
 | 
			
		||||
	# Create rndis function. The function can be named differently in downstream kernels.
 | 
			
		||||
	mkdir $CONFIGFS/g1/functions/"$usb_rndis_function" \
 | 
			
		||||
		|| echo "  Couldn't create $CONFIGFS/g1/functions/$usb_rndis_function"
 | 
			
		||||
 | 
			
		||||
	# Create configuration instance for the gadget
 | 
			
		||||
	mkdir $CONFIGFS/g1/configs/c.1 \
 | 
			
		||||
		|| echo "  Couldn't create $CONFIGFS/g1/configs/c.1"
 | 
			
		||||
	mkdir $CONFIGFS/g1/configs/c.1/strings/0x409 \
 | 
			
		||||
		|| echo "  Couldn't create $CONFIGFS/g1/configs/c.1/strings/0x409"
 | 
			
		||||
	echo "rndis" > $CONFIGFS/g1/configs/c.1/strings/0x409/configuration \
 | 
			
		||||
		|| echo "  Couldn't write configration name"
 | 
			
		||||
 | 
			
		||||
	# Link the rndis instance to the configuration
 | 
			
		||||
	ln -s $CONFIGFS/g1/functions/"$usb_rndis_function" $CONFIGFS/g1/configs/c.1 \
 | 
			
		||||
		|| echo "  Couldn't symlink $usb_rndis_function"
 | 
			
		||||
 | 
			
		||||
	# Check if there's an USB Device Controller
 | 
			
		||||
	if [ -z "$(ls /sys/class/udc)" ]; then
 | 
			
		||||
		echo "  No USB Device Controller available"
 | 
			
		||||
		return
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	# Link the gadget instance to an USB Device Controller. This activates the gadget.
 | 
			
		||||
	# See also: https://github.com/postmarketOS/pmbootstrap/issues/338
 | 
			
		||||
	# shellcheck disable=SC2005
 | 
			
		||||
	echo "$(ls /sys/class/udc)" > $CONFIGFS/g1/UDC || echo "  Couldn't write UDC"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# And we go.
 | 
			
		||||
setup_usb_network_configfs
 | 
			
		||||
ip address add 10.15.19.82/24 dev usb0
 | 
			
		||||
ip link set usb0 up
 | 
			
		||||
							
								
								
									
										12
									
								
								app-mobilephone/usb-tethering/files/usb-tethering.service
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								app-mobilephone/usb-tethering/files/usb-tethering.service
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
# systemd service file for usb-tethering
 | 
			
		||||
 | 
			
		||||
[Unit]
 | 
			
		||||
Wants=dhcpd4.service
 | 
			
		||||
Description=USB Tethering
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=oneshot
 | 
			
		||||
ExecStart=/bin/bash /usr/lib/danctnix/usb-tethering
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
							
								
								
									
										5
									
								
								app-mobilephone/usb-tethering/metadata.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								app-mobilephone/usb-tethering/metadata.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
<?xml version='1.0' encoding='UTF-8'?>
 | 
			
		||||
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
 | 
			
		||||
<pkgmetadata>
 | 
			
		||||
	<!-- maintainer-needed -->
 | 
			
		||||
</pkgmetadata>
 | 
			
		||||
							
								
								
									
										33
									
								
								app-mobilephone/usb-tethering/usb-tethering-0.1.ebuild
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								app-mobilephone/usb-tethering/usb-tethering-0.1.ebuild
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
			
		||||
# Copyright 1999-2021 Gentoo Authors
 | 
			
		||||
# Distributed under the terms of the GNU General Public License v2
 | 
			
		||||
 | 
			
		||||
EAPI=7
 | 
			
		||||
 | 
			
		||||
inherit systemd
 | 
			
		||||
 | 
			
		||||
DESCRIPTION="USB tethering on Pine64/ConfigFS systems"
 | 
			
		||||
HOMEPAGE="https://github.com/dreemurrs-embedded/Pine64-Arch"
 | 
			
		||||
 | 
			
		||||
LICENSE="GPL-2+"
 | 
			
		||||
SLOT="0"
 | 
			
		||||
KEYWORDS="~arm64"
 | 
			
		||||
 | 
			
		||||
DEPEND="
 | 
			
		||||
	net-misc/dhcp
 | 
			
		||||
	sys-apps/systemd
 | 
			
		||||
"
 | 
			
		||||
RDEPEND="${DEPEND}"
 | 
			
		||||
 | 
			
		||||
S="${WORKDIR}"
 | 
			
		||||
 | 
			
		||||
src_install() {
 | 
			
		||||
	exeinto "/usr/lib/danctnix"
 | 
			
		||||
	doexe "${FILESDIR}/usb-tethering"
 | 
			
		||||
	systemd_dounit "${FILESDIR}"/usb-tethering.service
 | 
			
		||||
	insinto "/usr/lib/tmpfiles.d/"
 | 
			
		||||
	doins "${FILESDIR}"/tmpfiles.d.danctnix-usb.conf
 | 
			
		||||
	insinto "/etc/systemd/system/dhcpd4.service.d/"
 | 
			
		||||
	doins "${FILESDIR}"/dhcpd4.service-customexec.conf
 | 
			
		||||
	insinto "/etc/danctnix/"
 | 
			
		||||
	doins "${FILESDIR}"/dhcpd.conf
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user