Fix location of local etc and bin files
This commit is contained in:
parent
66e9927dd4
commit
158bdad40b
9 changed files with 32 additions and 32 deletions
|
@ -18,14 +18,10 @@ RUN cd /tmp && \
|
||||||
RUN yes | pacman -Scc
|
RUN yes | pacman -Scc
|
||||||
|
|
||||||
RUN sed -i "s/SigLevel.*/SigLevel = Never/g" /etc/pacman.conf
|
RUN sed -i "s/SigLevel.*/SigLevel = Never/g" /etc/pacman.conf
|
||||||
RUN mkdir -p /app/bin
|
|
||||||
RUN ln -sf $(which aarch64-linux-gnu-strip) /app/bin/strip
|
|
||||||
|
|
||||||
RUN systemd-machine-id-setup
|
|
||||||
|
|
||||||
ENV KUPFERBOOTSTRAP_DOCKER=1
|
ENV KUPFERBOOTSTRAP_DOCKER=1
|
||||||
|
ENV PATH=/app/bin:/app/local/bin:$PATH
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
ENV PATH=/app/bin:$PATH
|
|
||||||
|
|
||||||
COPY requirements.txt .
|
COPY requirements.txt .
|
||||||
RUN pip install -r requirements.txt
|
RUN pip install -r requirements.txt
|
||||||
|
|
10
chroot.py
10
chroot.py
|
@ -3,8 +3,9 @@ import subprocess
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
|
|
||||||
def create_chroot(chroot_path, packages=['base'], pacman_conf='/app/src/pacman.conf', chroot_base_path='/chroot', extra_repos={}):
|
|
||||||
pacman_conf_target=chroot_path+'/etc/pacman.conf'
|
def create_chroot(chroot_path, packages=['base'], pacman_conf='/app/local/etc/pacman.conf', chroot_base_path='/chroot', extra_repos={}):
|
||||||
|
pacman_conf_target = chroot_path+'/etc/pacman.conf'
|
||||||
|
|
||||||
os.makedirs(chroot_path+'/etc', exist_ok=True)
|
os.makedirs(chroot_path+'/etc', exist_ok=True)
|
||||||
shutil.copyfile(pacman_conf, pacman_conf_target)
|
shutil.copyfile(pacman_conf, pacman_conf_target)
|
||||||
|
@ -12,11 +13,11 @@ def create_chroot(chroot_path, packages=['base'], pacman_conf='/app/src/pacman.c
|
||||||
extra_conf = ''
|
extra_conf = ''
|
||||||
for repo_name, repo_options in extra_repos.items():
|
for repo_name, repo_options in extra_repos.items():
|
||||||
extra_conf += f'\n\n[{repo_name}]\n'
|
extra_conf += f'\n\n[{repo_name}]\n'
|
||||||
extra_conf += '\n'.join(['%s = %s' % (name,value) for name,value in repo_options.items()])
|
extra_conf += '\n'.join(['%s = %s' % (name, value)
|
||||||
|
for name, value in repo_options.items()])
|
||||||
with open(pacman_conf_target, 'a') as file:
|
with open(pacman_conf_target, 'a') as file:
|
||||||
file.write(extra_conf)
|
file.write(extra_conf)
|
||||||
|
|
||||||
|
|
||||||
result = subprocess.run(['pacstrap',
|
result = subprocess.run(['pacstrap',
|
||||||
'-C', pacman_conf_target,
|
'-C', pacman_conf_target,
|
||||||
'-c',
|
'-c',
|
||||||
|
@ -48,4 +49,3 @@ def create_chroot(chroot_path, packages=['base'], pacman_conf='/app/src/pacman.c
|
||||||
if result.returncode != 0:
|
if result.returncode != 0:
|
||||||
logging.fatal('Failed to setup user')
|
logging.fatal('Failed to setup user')
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
|
|
3
image.py
3
image.py
|
@ -134,7 +134,8 @@ def cmd_build(verbose):
|
||||||
|
|
||||||
rootfs_mount = mount_rootfs_image(image_name)
|
rootfs_mount = mount_rootfs_image(image_name)
|
||||||
|
|
||||||
create_chroot(rootfs_mount, packages=(['base','base-kupfer'] + devices[device] + flavours[flavour]), pacman_conf='/app/src/pacman.conf', extra_repos={'main': {'Server': 'https://gitlab.com/kupfer/packages/prebuilts/-/raw/main/$repo'}, 'device': {'Server': 'https://gitlab.com/kupfer/packages/prebuilts/-/raw/main/$repo'}})
|
create_chroot(rootfs_mount, packages=(['base', 'base-kupfer'] + devices[device] + flavours[flavour]), pacman_conf='/app/local/etc/pacman.conf', extra_repos={'main': {
|
||||||
|
'Server': 'https://gitlab.com/kupfer/packages/prebuilts/-/raw/main/$repo'}, 'device': {'Server': 'https://gitlab.com/kupfer/packages/prebuilts/-/raw/main/$repo'}})
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
1
local/bin/strip
Symbolic link
1
local/bin/strip
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
/usr/bin/aarch64-linux-gnu-strip
|
|
@ -1,17 +1,17 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
wget https://raw.githubusercontent.com/archlinuxarm/PKGBUILDs/master/core/pacman/makepkg.conf -O makepkg.conf
|
wget https://raw.githubusercontent.com/archlinuxarm/PKGBUILDs/master/core/pacman/makepkg.conf -O etc/makepkg.conf
|
||||||
sed -i "s/@CARCH@/aarch64/g" makepkg.conf
|
sed -i "s/@CARCH@/aarch64/g" etc/makepkg.conf
|
||||||
sed -i "s/@CHOST@/aarch64-unknown-linux-gnu/g" makepkg.conf
|
sed -i "s/@CHOST@/aarch64-unknown-linux-gnu/g" etc/makepkg.conf
|
||||||
sed -i "s/@CARCHFLAGS@/-march=armv8-a /g" makepkg.conf
|
sed -i "s/@CARCHFLAGS@/-march=armv8-a /g" etc/makepkg.conf
|
||||||
sed -i "s/xz /xz -T0 /g" makepkg.conf
|
sed -i "s/xz /xz -T0 /g" etc/makepkg.conf
|
||||||
sed -i "s/ check / !check /g" makepkg.conf
|
sed -i "s/ check / !check /g" etc/makepkg.conf
|
||||||
chroot="/chroot/copy"
|
chroot="/chroot/copy"
|
||||||
include="-I\${CROOT}/usr/include -I$chroot/usr/include"
|
include="-I\${CROOT}/usr/include -I$chroot/usr/include"
|
||||||
lib_croot="\${CROOT}/lib"
|
lib_croot="\${CROOT}/lib"
|
||||||
lib_chroot="$chroot/usr/lib"
|
lib_chroot="$chroot/usr/lib"
|
||||||
cat >>makepkg.conf <<EOF
|
cat >>etc/makepkg.conf <<EOF
|
||||||
|
|
||||||
export CROOT="/usr/aarch64-linux-gnu"
|
export CROOT="/usr/aarch64-linux-gnu"
|
||||||
export ARCH="arm64"
|
export ARCH="arm64"
|
||||||
|
@ -23,9 +23,9 @@ export CXXFLAGS="\$CXXFLAGS $include"
|
||||||
export LDFLAGS="\$LDFLAGS,-L$lib_croot,-L$lib_chroot,-rpath-link,$lib_croot,-rpath-link,$lib_chroot"
|
export LDFLAGS="\$LDFLAGS,-L$lib_croot,-L$lib_chroot,-rpath-link,$lib_croot,-rpath-link,$lib_chroot"
|
||||||
EOF
|
EOF
|
||||||
# TODO: Set PACKAGER
|
# TODO: Set PACKAGER
|
||||||
wget https://raw.githubusercontent.com/archlinuxarm/PKGBUILDs/master/core/pacman/pacman.conf -O pacman.conf
|
wget https://raw.githubusercontent.com/archlinuxarm/PKGBUILDs/master/core/pacman/pacman.conf -O etc/pacman.conf
|
||||||
sed -i "s/@CARCH@/aarch64/g" pacman.conf
|
sed -i "s/@CARCH@/aarch64/g" etc/pacman.conf
|
||||||
sed -i "s/#ParallelDownloads.*/ParallelDownloads = 8/g" pacman.conf
|
sed -i "s/#ParallelDownloads.*/ParallelDownloads = 8/g" etc/pacman.conf
|
||||||
sed -i "s/SigLevel.*/SigLevel = Never/g" pacman.conf
|
sed -i "s/SigLevel.*/SigLevel = Never/g" etc/pacman.conf
|
||||||
sed -i "s/^CheckSpace/#CheckSpace/g" pacman.conf
|
sed -i "s/^CheckSpace/#CheckSpace/g" etc/pacman.conf
|
||||||
sed -i "s|Include = /etc/pacman.d/mirrorlist|Server = http://mirror.archlinuxarm.org/\$arch/\$repo|g" pacman.conf
|
sed -i "s|Include = /etc/pacman.d/mirrorlist|Server = http://mirror.archlinuxarm.org/\$arch/\$repo|g" etc/pacman.conf
|
18
packages.py
18
packages.py
|
@ -14,11 +14,11 @@ makepkg_env = os.environ.copy() | {
|
||||||
}
|
}
|
||||||
|
|
||||||
makepkg_cross_env = makepkg_env | {
|
makepkg_cross_env = makepkg_env | {
|
||||||
'PACMAN': '/app/bin/pacman_aarch64'
|
'PACMAN': '/app/local/bin/pacman_aarch64'
|
||||||
}
|
}
|
||||||
|
|
||||||
makepkg_cmd = ['makepkg',
|
makepkg_cmd = ['makepkg',
|
||||||
'--config', '/app/src/makepkg.conf',
|
'--config', '/app/local/etc/makepkg.conf',
|
||||||
'--noconfirm',
|
'--noconfirm',
|
||||||
'--ignorearch',
|
'--ignorearch',
|
||||||
'--needed']
|
'--needed']
|
||||||
|
@ -105,7 +105,8 @@ def check_prebuilts():
|
||||||
|
|
||||||
def setup_chroot(chroot_path='/chroot/root'):
|
def setup_chroot(chroot_path='/chroot/root'):
|
||||||
logging.info('Initializing root chroot')
|
logging.info('Initializing root chroot')
|
||||||
create_chroot(chroot_path, packages=['base-devel'], pacman_conf='/app/src/pacman.conf', extra_repos={'main': {'Server': 'file:///src/prebuilts/main'}, 'device': {'Server': 'file:///src/prebuilts/device'}})
|
create_chroot(chroot_path, packages=['base-devel'], pacman_conf='/app/local/etc/pacman.conf', extra_repos={
|
||||||
|
'main': {'Server': 'file:///src/prebuilts/main'}, 'device': {'Server': 'file:///src/prebuilts/device'}})
|
||||||
|
|
||||||
logging.info('Updating root chroot')
|
logging.info('Updating root chroot')
|
||||||
result = subprocess.run(pacman_cmd +
|
result = subprocess.run(pacman_cmd +
|
||||||
|
@ -244,7 +245,8 @@ def setup_dependencies_and_sources(package: Package):
|
||||||
"""
|
"""
|
||||||
if package.mode == 'cross':
|
if package.mode == 'cross':
|
||||||
for p in package.depends:
|
for p in package.depends:
|
||||||
result = subprocess.run(pacman_cmd + ['-S', p], stderr=subprocess.DEVNULL)
|
result = subprocess.run(
|
||||||
|
pacman_cmd + ['-S', p], stderr=subprocess.DEVNULL)
|
||||||
if result.returncode != 0:
|
if result.returncode != 0:
|
||||||
logging.fatal(
|
logging.fatal(
|
||||||
f'Failed to setup dependencies for {package.path}')
|
f'Failed to setup dependencies for {package.path}')
|
||||||
|
@ -302,7 +304,7 @@ def build_package(package: Package):
|
||||||
|
|
||||||
env = [f'{key}={value}' for key, value in makepkg_env.items()]
|
env = [f'{key}={value}' for key, value in makepkg_env.items()]
|
||||||
result = subprocess.run(
|
result = subprocess.run(
|
||||||
['arch-chroot', '/chroot/copy', '/usr/bin/env'] + env + [ '/bin/bash', '-c', f'cd /src/{package.path} && makepkg --noconfirm --ignorearch {" ".join(makepkg_compile_opts)}'])
|
['arch-chroot', '/chroot/copy', '/usr/bin/env'] + env + ['/bin/bash', '-c', f'cd /src/{package.path} && makepkg --noconfirm --ignorearch {" ".join(makepkg_compile_opts)}'])
|
||||||
if result.returncode != 0:
|
if result.returncode != 0:
|
||||||
logging.fatal(f'Failed to host-compile package {package.path}')
|
logging.fatal(f'Failed to host-compile package {package.path}')
|
||||||
exit(1)
|
exit(1)
|
||||||
|
@ -370,8 +372,9 @@ def cmd_build(verbose, path):
|
||||||
for package in packages.values():
|
for package in packages.values():
|
||||||
if package.path == path:
|
if package.path == path:
|
||||||
# TODO: currently matches through package.name only, no provides
|
# TODO: currently matches through package.name only, no provides
|
||||||
selection += [ packages[pkg] for pkg in package.local_depends ] + [package]
|
selection += [packages[pkg]
|
||||||
packages = { package.name:package for package in selection }
|
for pkg in package.local_depends] + [package]
|
||||||
|
packages = {package.name: package for package in selection}
|
||||||
|
|
||||||
package_order = generate_package_order(list(packages.values()))
|
package_order = generate_package_order(list(packages.values()))
|
||||||
need_build = []
|
need_build = []
|
||||||
|
@ -396,7 +399,6 @@ def cmd_build(verbose, path):
|
||||||
add_package_to_repo(package)
|
add_package_to_repo(package)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@click.command(name='clean')
|
@click.command(name='clean')
|
||||||
@verbose_option
|
@verbose_option
|
||||||
def cmd_clean(verbose):
|
def cmd_clean(verbose):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue