Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 93 additions & 0 deletions scripts/package-build/linux-kernel/build-realtek-r8126.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
#!/usr/bin/env python3

import os
from tomllib import loads as toml_loads
from requests import get
from pathlib import Path
from subprocess import run

CWD = os.getcwd()

# dependency modifier
def add_depends(package_dir: str, package_name: str,
depends: list[str]) -> None:
"""Add dependencies to a package
Args:
package_dir (str): a directory where package sources are located
package_name (str): a name of package
depends (list[str]): a list of dependencies to add
"""
depends_list: str = ', '.join(depends)
depends_line: str = f'misc:Depends={depends_list}\n'

substvars_file = Path(f'{package_dir}/debian/{package_name}.substvars')
substvars_file.write_text(depends_line)


# find kernel version and source path
defaults_file: str = Path('../../../data/defaults.toml').read_text()
KERNEL_VER: str = toml_loads(defaults_file).get('kernel_version')
KERNEL_FLAVOR: str = toml_loads(defaults_file).get('kernel_flavor')
KERNEL_SRC: str = Path.cwd().as_posix() + '/linux'
# define variables
PACKAGE_NAME: str = 'vyos-drivers-realtek-r8126'
PACKAGE_VERSION: str = '10.016.00'
PACKAGE_DIR: str = f'{PACKAGE_NAME}-{PACKAGE_VERSION}'
SOURCES_ARCHIVE: str = f'r8126-{PACKAGE_VERSION}.tar.bz2'
SOURCES_URL: str = f'https://packages.vyos.net/source-mirror/{SOURCES_ARCHIVE}'

# download sources
sources_archive = Path(SOURCES_ARCHIVE)
sources_archive.write_bytes(get(SOURCES_URL).content)

# prepare sources
debmake_cmd: list[str] = [
'debmake', '-e', 'support@vyos.io', '-f', 'VyOS Support', '-p',
PACKAGE_NAME, '-u', PACKAGE_VERSION, '-a', SOURCES_ARCHIVE
]
run(debmake_cmd)

# add kernel to dependencies
add_depends(PACKAGE_DIR, PACKAGE_NAME,
[f'linux-image-{KERNEL_VER}-{KERNEL_FLAVOR}'])

# configure build rules
build_rules_text: str = '''#!/usr/bin/make -f
# config
export KERNELDIR := {KERNEL_SRC}
PACKAGE_BUILD_DIR := debian/{PACKAGE_NAME}
KVER := {KERNEL_VER}-{KERNEL_FLAVOR}
MODULES_DIR := updates/drivers/net/ethernet
# main packaging script based on dh7 syntax
%:
\tdh $@

override_dh_clean:
\tdh_clean --exclude=debian/{PACKAGE_NAME}.substvars

override_dh_prep:
\tdh_prep --exclude=debian/{PACKAGE_NAME}.substvars

override_dh_auto_clean:
\tmake clean

override_dh_auto_build:
\techo "KERNELDIR=${{KERNELDIR}}"
\techo "CURDIR=${{CURDIR}}"
\tmake -C ${{KERNELDIR}} M=${{CURDIR}}/src modules

override_dh_auto_install:
\tinstall -D -m 644 src/r8126.ko ${{PACKAGE_BUILD_DIR}}/lib/modules/${{KVER}}/${{MODULES_DIR}}/r8126.ko
\t${{KERNELDIR}}/../sign-modules.sh ${{PACKAGE_BUILD_DIR}}/lib
'''.format(KERNEL_SRC=KERNEL_SRC, PACKAGE_NAME=PACKAGE_NAME, KERNEL_VER=KERNEL_VER, KERNEL_FLAVOR=KERNEL_FLAVOR)

build_rules_path = Path(f'{PACKAGE_DIR}/debian/rules')
build_rules_path.write_text(build_rules_text, encoding='utf-8')

# build a package
debuild_cmd: list[str] = ['debuild']
run(debuild_cmd, cwd=PACKAGE_DIR, check=True)

# Sign generated Kernel modules
clean_cmd: list[str] = ['rm', '-rf', PACKAGE_DIR]
run(clean_cmd, cwd=CWD, check=True)
7 changes: 7 additions & 0 deletions scripts/package-build/linux-kernel/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,8 @@ def build_package(package: dict, dependencies: list) -> None:
build_intel(package['name'], package['commit_id'], package['scm_url'])
elif package['build_cmd'] == 'build_mellanox_ofed':
build_mellanox_ofed()
elif package['build_cmd'] == 'build_realtek_r8126':
build_realtek_r8126()
elif package['build_cmd'] == 'build_realtek_r8152':
build_realtek_r8152()
elif package['build_cmd'] == 'build_jool':
Expand Down Expand Up @@ -243,6 +245,11 @@ def build_mellanox_ofed():
run(['sudo', './build-mellanox-ofed.sh'], check=True)


def build_realtek_r8126():
"""Build Realtek r8126"""
run(['sudo', './build-realtek-r8126.py'], check=True)


def build_realtek_r8152():
"""Build Realtek r8152"""
run(['sudo', './build-realtek-r8152.py'], check=True)
Expand Down
6 changes: 6 additions & 0 deletions scripts/package-build/linux-kernel/package.toml
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,12 @@ commit_id = ""
scm_url = ""
build_cmd = "build_mellanox_ofed"

[[packages]]
name = "realtek-r8126"
commit_id = ""
scm_url = ""
build_cmd = "build_realtek_r8126"

[[packages]]
name = "realtek-r8152"
commit_id = ""
Expand Down
Loading