Skip to content

Commit

Permalink
Merge branch 'dev' into dev-stable
Browse files Browse the repository at this point in the history
  • Loading branch information
Hayao0819 committed Dec 1, 2021
2 parents d0fb75b + 2854cf5 commit aea1765
Show file tree
Hide file tree
Showing 137 changed files with 2,519 additions and 103 deletions.
1 change: 1 addition & 0 deletions .shellcheckrc
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ disable=SC1091
disable=SC2154
disable=SC2016
disable=SC2034
disable=SC2294
source-path=SCRIPTDIR
44 changes: 27 additions & 17 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,41 +5,51 @@ KERNEL := zen
SHARE_OPTION := --boot-splash --comp-type "xz" --user "alter" --password "alter" --kernel "${KERNEL}" --noconfirm
ARCH_x86_64 := --arch x86_64
ARCH_i686 := --arch i686
ARCH_Pen4 := --arch pen4
FULLBUILD := -d -g -e --noconfirm
DEBUG_OPTION := --debug --log
DEBUG := false
FULL_x86_64 := xfce cinnamon i3 plasma gnome
FULL_i686 := xfce lxde
FULL_Pen4 := xfce lxde

CURRENT_DIR := ${shell dirname $(dir $(abspath $(lastword $(MAKEFILE_LIST))))}/${shell basename $(dir $(abspath $(lastword $(MAKEFILE_LIST))))}

ifeq (${DEBUG},true)
ARGS += ${ARGS} ${DEBUG_OPTION}
endif

full:
full: full-x86_64 full-i686 clean

full-x86_64:
sudo ${CURRENT_DIR}/tools/fullbuild.sh ${FULLBUILD} -m x86_64 ${FULL_x86_64}

full-i686:
sudo ${CURRENT_DIR}/tools/fullbuild.sh ${FULLBUILD} -m i686 ${FULL_i686}
@make clean

basic-ja-64 basic-en-64 basic-ja-32 basic-en-32 \
cinnamon-ja-64 cinnamon-en-64 cinnamon-ja-32 cinnamon-en-32 \
gnome-ja-64 gnome-en-64 gnome-ja-32 gnome-en-32 \
i3-ja-64 i3-en-64 i3-ja-32 i3-en-32 \
lxde-ja-64 lxde-en-64 lxde-ja-32 lxde-en-32 \
plasma-ja-64 plasma-en-64 \
releng-ja-64 releng-en-64 releng-ja-32 releng-en-32 \
serene-ja-64 serene-en-64 serene-ja-32 serene-en-32 \
xfce-ja-64 xfce-en-64 xfce-ja-32 xfce-en-32 \
xfce-pro-ja-64 xfce-pro-en-64 \

full-pen4:
sudo ${CURRENT_DIR}/tools/fullbuild.sh ${FULLBUILD} -m pen4 ${FULL_Pen4}

basic-ja-64 basic-en-64 basic-ja-32 basic-en-32 basic-ja-pen4 basic-en-pen4 \
cinnamon-ja-64 cinnamon-en-64 cinnamon-ja-32 cinnamon-en-32 cinnamon-ja-pen4 cinnamon-en-pen4 \
gnome-ja-64 gnome-en-64 gnome-ja-32 gnome-en-32 gnome-ja-pen4 gnome-en-pen4 \
i3-ja-64 i3-en-64 i3-ja-32 i3-en-32 i3-ja-pen4 i3-en-pen4 \
lxde-ja-64 lxde-en-64 lxde-ja-32 lxde-en-32 lxde-ja-pen4 lxde-en-pen4 \
plasma-ja-64 plasma-en-64 \
releng-ja-64 releng-en-64 releng-ja-32 releng-en-32 releng-ja-pen4 releng-en-pen4 \
serene-ja-64 serene-en-64 serene-ja-32 serene-en-32 serene-ja-pen4 serene-en-pen4 \
xfce-ja-64 xfce-en-64 xfce-ja-32 xfce-en-32 xfce-ja-pen4 xfce-en-pen4 \
xfce-pro-ja-64 xfce-pro-en-64 \
:
@$(eval ARCHITECTURE=${shell echo ${@} | rev | cut -d '-' -f 1 | rev })
@$(eval LOCALE=${shell echo ${@} | rev | cut -d '-' -f 2 | rev })
@$(eval CHANNEL=${shell echo ${@} | sed "s/-${LOCALE}-${ARCHITECTURE}//g"})
@[[ -z "${CHANNEL}" ]] && echo "Empty Channel" && exit 1 || :
@case ${ARCHITECTURE} in\
"32") sudo ${CURRENT_DIR}/${BUILD_SCRIPT} ${ARGS} ${SHARE_OPTION} ${ARCH_i686} -l ${LOCALE} ${CHANNEL} ;;\
"64") sudo ${CURRENT_DIR}/${BUILD_SCRIPT} ${ARGS} ${SHARE_OPTION} ${ARCH_x86_64} -l ${LOCALE} ${CHANNEL};;\
* ) echo "Unknown Architecture"; exit 1 ;; \
"pen4") sudo ${CURRENT_DIR}/${BUILD_SCRIPT} ${ARGS} ${SHARE_OPTION} ${ARCH_Pen4} -l ${LOCALE} ${CHANNEL} ;;\
"32" ) sudo ${CURRENT_DIR}/${BUILD_SCRIPT} ${ARGS} ${SHARE_OPTION} ${ARCH_i686} -l ${LOCALE} ${CHANNEL} ;;\
"64" ) sudo ${CURRENT_DIR}/${BUILD_SCRIPT} ${ARGS} ${SHARE_OPTION} ${ARCH_x86_64} -l ${LOCALE} ${CHANNEL};;\
* ) echo "Unknown Architecture"; exit 1 ;; \
esac

menuconfig/build/mconf::
Expand All @@ -49,7 +59,7 @@ menuconfig/build/mconf::
menuconfig:menuconfig/build/mconf menuconfig-script/kernel_choice menuconfig-script/channel_choice
@menuconfig/build/mconf menuconfig-script/rootconf

menuconfig-script/kernel_choice:system/kernel-x86_64 system/kernel-i686
menuconfig-script/kernel_choice:system/kernel-x86_64 system/kernel-i686 system/kernel-pen4
@${CURRENT_DIR}/tools/kernel-choice-conf-gen.sh
menuconfig-script/channel_choice:
@${CURRENT_DIR}/tools/channel-choice-conf-gen.sh
Expand Down
78 changes: 44 additions & 34 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,9 @@ getclm() { cut -d " " -f "${1}"; }
# 指定されたぶんの半角空白文字を出力します
echo_blank(){ yes " " 2> /dev/null | head -n "${1}" | tr -d "\n"; }

# cpコマンドのラッパー
_cp(){ cp -af --no-preserve=ownership,mode -- "${@}"; }

_usage () {
cat "${script_path}/docs/build.sh/help.1"
local blank="29" _arch _dirname _type _output _first
Expand Down Expand Up @@ -379,6 +382,7 @@ prepare_build() {
for_module load_config "${module_dir}/{}/config.any" "${module_dir}/{}/config.${arch}"
msg_debug "Loaded modules: ${modules[*]}"
! printf "%s\n" "${modules[@]}" | grep -x "share" >/dev/null 2>&1 && msg_warn "The share module is not loaded."
! printf "%s\n" "${modules[@]}" | grep -x "base" >/dev/null 2>&1 && msg_error "The base module is not loaded." 1

# Set kernel
[[ "${customized_kernel}" = false ]] && kernel="${defaultkernel}"
Expand Down Expand Up @@ -424,7 +428,7 @@ prepare_build() {
mkdir -p "$(dirname "${logging}")" && touch "${logging}"
msg_warn "Re-run sudo ${0} ${ARGUMENT[*]} --nodepend --nolog --nocolor --rerun 2>&1 | tee ${logging}"
sudo "${0}" "${ARGUMENT[@]}" --nolog --nocolor --nodepend --rerun 2>&1 | tee "${logging}"
exit "${?}"
exit "${PIPESTATUS[0]}"
fi

# Set argument of pkglist.sh
Expand All @@ -438,7 +442,7 @@ prepare_build() {

# Set argument of aur.sh and pkgbuild.sh
[[ "${bash_debug}" = true ]] && makepkg_script_args+=("-x")
[[ "${pacman_debug}" = true ]] && makepkg_script_args+=("-d")
[[ "${pacman_debug}" = true ]] && makepkg_script_args+=("-c")

return 0
}
Expand Down Expand Up @@ -502,7 +506,7 @@ make_packages_repo() {
if printf "%s\n" "${repopkgs[@]}" | grep -qx "${_pkg}"; then
_pkglist_install+=("${_pkg}")
else
msg_info "${_pkg} was not found. Install it with yay from AUR"
msg_info "${_pkg} was not found. Install it from AUR"
norepopkg+=("${_pkg}")
fi
done
Expand All @@ -521,17 +525,23 @@ make_packages_repo() {
make_packages_aur() {
readarray -t _pkglist_aur < <("${tools_dir}/pkglist.sh" --aur "${pkglist_args[@]}")
_pkglist_aur=("${_pkglist_aur[@]}" "${norepopkg[@]}")
_aursh_args=(
"-a" "${aur_helper_command}" -e "${aur_helper_package}"
"-d" "$(printf "%s\n" "${aur_helper_depends[@]}" | tr "\n" ",")"
"-p" "$(printf "%s\n" "${_pkglist_aur[@]}" | tr "\n" ",")"
"${makepkg_script_args[@]}" -- "${aur_helper_args[@]}"
)

# Create a list of packages to be finally installed as packages.list directly under the working directory.
echo -e "\n# AUR packages.\n#\n" >> "${build_dir}/packages.list"
printf "%s\n" "${_pkglist_aur[@]}" >> "${build_dir}/packages.list"

# prepare for yay
cp -rf --preserve=mode "${script_path}/system/aur.sh" "${airootfs_dir}/root/aur.sh"
_pacstrap --asdeps --needed "go" # --asdepsをつけているのでaur.shで削除される --neededをつけているので明示的にインストールされている場合削除されない
# prepare for aur helper
_cp "${script_path}/system/aur.sh" "${airootfs_dir}/root/aur.sh"
_pacstrap --asdeps --needed "${aur_helper_depend[@]}"

# Run aur script
_run_with_pacmanconf _chroot_run "bash" "/root/aur.sh" "${makepkg_script_args[@]}" "${_pkglist_aur[@]}"
_run_with_pacmanconf _chroot_run "bash" "/root/aur.sh" "${_aursh_args[@]}"

# Remove script
remove "${airootfs_dir}/root/aur.sh"
Expand All @@ -548,11 +558,11 @@ make_pkgbuild() {
mkdir -p "${airootfs_dir}/pkgbuilds/"
for _dir in $(find "${_pkgbuild_dirs[@]}" -type f -name "PKGBUILD" -print0 2>/dev/null | xargs -0 -I{} realpath {} | xargs -I{} dirname {}); do
msg_info "Find $(basename "${_dir}")"
cp -r "${_dir}" "${airootfs_dir}/pkgbuilds/"
_cp "${_dir}" "${airootfs_dir}/pkgbuilds/"
done

# copy buold script
cp -rf --preserve=mode "${script_path}/system/pkgbuild.sh" "${airootfs_dir}/root/pkgbuild.sh"
_cp "${script_path}/system/pkgbuild.sh" "${airootfs_dir}/root/pkgbuild.sh"

# Run build script
_run_with_pacmanconf _chroot_run "bash" "/root/pkgbuild.sh" "${makepkg_script_args[@]}" "/pkgbuilds"
Expand All @@ -574,15 +584,15 @@ make_customize_airootfs() {
for _airootfs in "${_airootfs_list[@]}";do
if [[ -d "${_airootfs}" ]]; then
msg_debug "Copying airootfs ${_airootfs} ..."
cp -af "${_airootfs}"/* "${airootfs_dir}"
_cp "${_airootfs}"/* "${airootfs_dir}"
fi
done

# Replace /etc/mkinitcpio.conf if Plymouth is enabled.
if [[ "${boot_splash}" = true ]]; then
cp -f "${script_path}/mkinitcpio/mkinitcpio-plymouth.conf" "${airootfs_dir}/etc/mkinitcpio.conf"
install -m 0644 -- "${script_path}/mkinitcpio/mkinitcpio-plymouth.conf" "${airootfs_dir}/etc/mkinitcpio.conf"
else
cp -f "${script_path}/mkinitcpio/mkinitcpio.conf" "${airootfs_dir}/etc/mkinitcpio.conf"
install -m 0644 -- "${script_path}/mkinitcpio/mkinitcpio.conf" "${airootfs_dir}/etc/mkinitcpio.conf"
fi

# customize_airootfs options
Expand Down Expand Up @@ -646,15 +656,15 @@ make_setup_mkinitcpio() {
mkdir -p "${airootfs_dir}/etc/initcpio/hooks" "${airootfs_dir}/etc/initcpio/install"

for _hook in "archiso" "archiso_shutdown" "archiso_pxe_common" "archiso_pxe_nbd" "archiso_pxe_http" "archiso_pxe_nfs" "archiso_loop_mnt"; do
cp "${script_path}/system/initcpio/hooks/${_hook}" "${airootfs_dir}/etc/initcpio/hooks"
cp "${script_path}/system/initcpio/install/${_hook}" "${airootfs_dir}/etc/initcpio/install"
install -m 0644 -- "${script_path}/system/initcpio/hooks/${_hook}" "${airootfs_dir}/etc/initcpio/hooks"
install -m 0644 -- "${script_path}/system/initcpio/install/${_hook}" "${airootfs_dir}/etc/initcpio/install"
done

sed -i "s|%COWSPACE%|${cowspace}|g" "${airootfs_dir}/etc/initcpio/hooks/archiso"
sed -i "s|/usr/lib/initcpio/|/etc/initcpio/|g" "${airootfs_dir}/etc/initcpio/install/archiso_shutdown"
cp "${script_path}/system/initcpio/install/archiso_kms" "${airootfs_dir}/etc/initcpio/install"
cp "${script_path}/system/initcpio/script/archiso_shutdown" "${airootfs_dir}/etc/initcpio"
cp "${script_path}/mkinitcpio/mkinitcpio-archiso.conf" "${airootfs_dir}/etc/mkinitcpio-archiso.conf"
install -m 0644 -- "${script_path}/system/initcpio/install/archiso_kms" "${airootfs_dir}/etc/initcpio/install"
install -m 0755 -- "${script_path}/system/initcpio/script/archiso_shutdown" "${airootfs_dir}/etc/initcpio"
install -m 0644 -- "${script_path}/mkinitcpio/mkinitcpio-archiso.conf" "${airootfs_dir}/etc/mkinitcpio-archiso.conf"
[[ "${boot_splash}" = true ]] && cp "${script_path}/mkinitcpio/mkinitcpio-archiso-plymouth.conf" "${airootfs_dir}/etc/mkinitcpio-archiso.conf"

if [[ "${gpg_key}" ]]; then
Expand All @@ -672,8 +682,8 @@ make_setup_mkinitcpio() {
# Prepare kernel/initramfs ${install_dir}/boot/
make_boot() {
mkdir -p "${isofs_dir}/${install_dir}/boot/${arch}"
cp "${airootfs_dir}/boot/archiso.img" "${isofs_dir}/${install_dir}/boot/${arch}/archiso.img"
cp "${airootfs_dir}/boot/${kernel_filename}" "${isofs_dir}/${install_dir}/boot/${arch}/${kernel_filename}"
install -m 0644 -- "${airootfs_dir}/boot/archiso.img" "${isofs_dir}/${install_dir}/boot/${arch}/archiso.img"
install -m 0644 -- "${airootfs_dir}/boot/${kernel_filename}" "${isofs_dir}/${install_dir}/boot/${arch}/${kernel_filename}"

return 0
}
Expand Down Expand Up @@ -710,7 +720,7 @@ make_syslinux() {

# 一時ディレクトリに設定ファイルをコピー
mkdir -p "${build_dir}/syslinux/"
cp -a "${script_path}/syslinux/"* "${build_dir}/syslinux/"
_cp "${script_path}/syslinux/"* "${build_dir}/syslinux/"
[[ -d "${channel_dir}/syslinux" ]] && [[ "${customized_syslinux}" = true ]] && cp -af "${channel_dir}/syslinux"* "${build_dir}/syslinux/"

# copy all syslinux config to work dir
Expand All @@ -734,8 +744,8 @@ make_syslinux() {
done

# Set syslinux wallpaper
cp "${script_path}/syslinux/splash.png" "${isofs_dir}/syslinux"
[[ -f "${channel_dir}/splash.png" ]] && cp -f "${channel_dir}/splash.png" "${isofs_dir}/syslinux"
install -m 0644 -- "${script_path}/syslinux/splash.png" "${isofs_dir}/syslinux/"
[[ -f "${channel_dir}/splash.png" ]] && install -m 0644 -- "${channel_dir}/splash.png" "${isofs_dir}/syslinux"

# remove config
local _remove_config
Expand All @@ -748,9 +758,9 @@ make_syslinux() {
[[ "${memtest86}" = false ]] && _remove_config memtest86.cfg

# copy files
cp "${airootfs_dir}/usr/lib/syslinux/bios/"*.c32 "${isofs_dir}/syslinux"
cp "${airootfs_dir}/usr/lib/syslinux/bios/lpxelinux.0" "${isofs_dir}/syslinux"
cp "${airootfs_dir}/usr/lib/syslinux/bios/memdisk" "${isofs_dir}/syslinux"
install -m 0644 -- "${airootfs_dir}/usr/lib/syslinux/bios/"*.c32 "${isofs_dir}/syslinux/"
install -m 0644 -- "${airootfs_dir}/usr/lib/syslinux/bios/lpxelinux.0" "${isofs_dir}/syslinux/"
install -m 0644 -- "${airootfs_dir}/usr/lib/syslinux/bios/memdisk" "${isofs_dir}/syslinux/"


if [[ -e "${isofs_dir}/syslinux/hdt.c32" ]]; then
Expand Down Expand Up @@ -786,8 +796,8 @@ make_efi() {
install -d -m 0755 -- "${isofs_dir}/loader/entries"
sed "s|%ARCH%|${arch}|g;" "${script_path}/efiboot/${_use_config_name}/loader.conf" > "${isofs_dir}/loader/loader.conf"

readarray -t _efi_config_list < <(find "${script_path}/efiboot/${_use_config_name}/" -mindepth 1 -maxdepth 1 -type f -name "archiso-usb*.conf" -printf "%f\n" | grep -v "rescue")
[[ "${norescue_entry}" = false ]] && readarray -t _efi_config_list < <(find "${script_path}/efiboot/${_use_config_name}/" -mindepth 1 -maxdepth 1 -type f -name "archiso-usb*.conf" -printf "%f\n")
readarray -t _efi_config_list < <(find "${script_path}/efiboot/${_use_config_name}/" -mindepth 1 -maxdepth 1 -type f -name "*-archiso-usb*.conf" -printf "%f\n" | grep -v "rescue")
[[ "${norescue_entry}" = false ]] && readarray -t _efi_config_list < <(find "${script_path}/efiboot/${_use_config_name}/" -mindepth 1 -maxdepth 1 -type f -name "*-archiso-usb*.conf" -printf "%f\n")

for _efi_config in "${_efi_config_list[@]}"; do
sed "s|%ARCHISO_LABEL%|${iso_label}|g;
Expand Down Expand Up @@ -825,26 +835,26 @@ make_efiboot() {
mount "${build_dir}/efiboot.img" "${build_dir}/efiboot"

mkdir -p "${build_dir}/efiboot/EFI/alteriso/${arch}" "${build_dir}/efiboot/EFI/boot" "${build_dir}/efiboot/loader/entries"
cp "${isofs_dir}/${install_dir}/boot/${arch}/${kernel_filename}" "${build_dir}/efiboot/EFI/alteriso/${arch}/${kernel_filename}.efi"
cp "${isofs_dir}/${install_dir}/boot/${arch}/archiso.img" "${build_dir}/efiboot/EFI/alteriso/${arch}/archiso.img"
_cp "${isofs_dir}/${install_dir}/boot/${arch}/${kernel_filename}" "${build_dir}/efiboot/EFI/alteriso/${arch}/${kernel_filename}.efi"
_cp "${isofs_dir}/${install_dir}/boot/${arch}/archiso.img" "${build_dir}/efiboot/EFI/alteriso/${arch}/archiso.img"

local _ucode_image _efi_config _use_config_name="nosplash" _bootfile
for _ucode_image in "${airootfs_dir}/boot/"{intel-uc.img,intel-ucode.img,amd-uc.img,amd-ucode.img,early_ucode.cpio,microcode.cpio}; do
[[ -e "${_ucode_image}" ]] && cp "${_ucode_image}" "${build_dir}/efiboot/EFI/alteriso/"
[[ -e "${_ucode_image}" ]] && _cp "${_ucode_image}" "${build_dir}/efiboot/EFI/alteriso/"
done

cp "${airootfs_dir}/usr/share/efitools/efi/HashTool.efi" "${build_dir}/efiboot/EFI/boot/"
_cp "${airootfs_dir}/usr/share/efitools/efi/HashTool.efi" "${build_dir}/efiboot/EFI/boot/"

_bootfile="$(basename "$(ls "${airootfs_dir}/usr/lib/systemd/boot/efi/systemd-boot"*".efi" )")"
cp "${airootfs_dir}/usr/lib/systemd/boot/efi/${_bootfile}" "${build_dir}/efiboot/EFI/boot/${_bootfile#systemd-}"
_cp "${airootfs_dir}/usr/lib/systemd/boot/efi/${_bootfile}" "${build_dir}/efiboot/EFI/boot/${_bootfile#systemd-}"

[[ "${boot_splash}" = true ]] && _use_config_name="splash"
sed "s|%ARCH%|${arch}|g;" "${script_path}/efiboot/${_use_config_name}/loader.conf" > "${build_dir}/efiboot/loader/loader.conf"

find "${isofs_dir}/loader/entries/" -maxdepth 1 -mindepth 1 -name "uefi-shell*" -type f -printf "%p\0" | xargs -0 -I{} cp {} "${build_dir}/efiboot/loader/entries/"

readarray -t _efi_config_list < <(find "${script_path}/efiboot/${_use_config_name}/" -mindepth 1 -maxdepth 1 -type f -name "archiso-cd*.conf" -printf "%f\n" | grep -v "rescue")
[[ "${norescue_entry}" = false ]] && readarray -t _efi_config_list < <(find "${script_path}/efiboot/${_use_config_name}/" -mindepth 1 -maxdepth 1 -type f -name "archiso-cd*.conf" -printf "%f\n")
readarray -t _efi_config_list < <(find "${script_path}/efiboot/${_use_config_name}/" -mindepth 1 -maxdepth 1 -type f -name "*-archiso-cd*.conf" -printf "%f\n" | grep -v "rescue")
[[ "${norescue_entry}" = false ]] && readarray -t _efi_config_list < <(find "${script_path}/efiboot/${_use_config_name}/" -mindepth 1 -maxdepth 1 -type f -name "*-archiso-cd*.conf" -printf "%f\n")

for _efi_config in "${_efi_config_list[@]}"; do
sed "s|%ARCHISO_LABEL%|${iso_label}|g;
Expand Down
1 change: 1 addition & 0 deletions channels/basic/architecture
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@

x86_64
i686
pen4
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[org/cinnamon]
favorite-apps=['firefox.desktop', 'nemo.desktop', 'org.gnome.Terminal.desktop', 'cinnamon-settings.desktop']
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Seat:*]
greeter-session=lightdm-slick-greeter
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[Greeter]
draw-user-backgrounds=false
background=/usr/share/backgrounds/alter-nochr.png
theme-name=Arc-Dark
icon-theme-name=Inverse-blue-dark
Loading

0 comments on commit aea1765

Please sign in to comment.