Skip to content
Open
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
5 changes: 4 additions & 1 deletion OS/Linux/dot_hidden
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,7 @@ sys
tmp
usr
var

initrd.img
initrd.img.old
vmlinuz
vmlinuz.old
42 changes: 23 additions & 19 deletions Packaging/Sources/0_build_libdispatch.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,18 @@
# Install package dependecies
#----------------------------------------
${ECHO} ">>> Installing ${OS_ID} packages for Grand Central Dispatch build"
if [ "${OS_ID}" = "debian" ] || [ "${OS_ID}" = "ubuntu" ]; then
if is_debian_like; then
${ECHO} "Debian-based Linux distribution: calling 'apt-get install'."
sudo apt-get install -q -y ${BUILD_TOOLS} ${RUNTIME_DEPS} || exit 1
install_apt_packages ${BUILD_TOOLS} ${RUNTIME_DEPS}
else
if [ "${OS_ID}" = "fedora" ] || [ "$OS_ID" = "ultramarine" ]; then
${ECHO} "No need to build - installing 'libdispatch-devel' from Fedora repository..."
sudo dnf -y install libdispatch-devel || exit 1
install_rpm_packages libdispatch-devel
exit 0
fi
${ECHO} "RedHat-based Linux distribution: calling 'yum -y install'."
${ECHO} "RedHat-based Linux distribution: calling 'sudo ${RPM_PACKAGE_MANAGER} -y install'."
SPEC_FILE=${PROJECT_DIR}/Libraries/libdispatch/libdispatch.spec
DEPS=`rpmspec -q --buildrequires ${SPEC_FILE} | awk -c '{print $1}'`
sudo yum -y install ${DEPS} || exit 1
install_rpm_spec_buildrequires "${SPEC_FILE}"
fi

#----------------------------------------
Expand All @@ -27,26 +26,33 @@ fi
GIT_PKG_NAME=swift-corelibs-libdispatch-swift-${libdispatch_version}-RELEASE

if [ ! -d ${BUILD_ROOT}/${GIT_PKG_NAME} ]; then
curl -L https://github.com/apple/swift-corelibs-libdispatch/archive/swift-${libdispatch_version}-RELEASE.tar.gz -o ${BUILD_ROOT}/${GIT_PKG_NAME}.tar.gz
cd ${BUILD_ROOT}
tar zxf ${GIT_PKG_NAME}.tar.gz
cd ..
download_tarball_once \
"https://github.com/apple/swift-corelibs-libdispatch/archive/swift-${libdispatch_version}-RELEASE.tar.gz" \
"${BUILD_ROOT}/${GIT_PKG_NAME}.tar.gz" \
"${BUILD_ROOT}/${GIT_PKG_NAME}"
fi

#----------------------------------------
# Build
#----------------------------------------
cd ${BUILD_ROOT}/${GIT_PKG_NAME} || exit 1
if [ "${OS_ID}" = "debian" ] && [ "${OS_VERSION}" = "13" ]; then
${ECHO} "Patching libdispatch compiler warnings for Debian 13..."
find . -name 'CMakeLists.txt' -o -name '*.cmake' | xargs sed -i \
-e 's/-Werror=cast-function-type-mismatch//g' \
-e 's/-Werror //g' \
-e 's/ -Werror//g'
fi
rm -rf _build 2>/dev/null
mkdir -p _build
cd _build

C_FLAGS="-Wno-error=unused-but-set-variable"
C_FLAGS="-Wno-error=unused-but-set-variable -Wno-error=cast-function-type-mismatch -Wno-cast-function-type-mismatch"
$CMAKE_CMD .. \
-DCMAKE_C_COMPILER=${C_COMPILER} \
-DCMAKE_CXX_COMPILER=${CXX_COMPILER} \
-DCMAKE_C_FLAGS=${C_FLAGS} \
-DCMAKE_CXX_FLAGS=${C_FLAGS} \
-DCMAKE_C_COMPILER="${C_COMPILER}" \
-DCMAKE_CXX_COMPILER="${CXX_COMPILER}" \
-DCMAKE_C_FLAGS="${C_FLAGS}" \
-DCMAKE_CXX_FLAGS="${C_FLAGS}" \
-DCMAKE_INSTALL_PREFIX=/usr/NextSpace \
-DCMAKE_INSTALL_LIBDIR=/usr/NextSpace/lib \
-DCMAKE_INSTALL_MANDIR=/usr/NextSpace/Documentation/man \
Expand All @@ -65,7 +71,7 @@ $MAKE_CMD
# Install
#----------------------------------------
#sudo $MAKE_CMD install
$INSTALL_CMD
run_install

#----------------------------------------
# Postinstall
Expand All @@ -85,6 +91,4 @@ $MV_CMD libdispatch.so libdispatch.so.${libdispatch_version}
$LN_CMD libdispatch.so.${libdispatch_version} libdispatch.so.${SHORT_VER}
$LN_CMD libdispatch.so.${libdispatch_version} libdispatch.so

if [ "$DEST_DIR" = "" ]; then
sudo ldconfig
fi
refresh_ldconfig
48 changes: 36 additions & 12 deletions Packaging/Sources/1_build_libcorefoundation.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@
# Install package dependecies
#----------------------------------------
${ECHO} ">>> Installing ${OS_ID} packages for CoreFoundation library build"
if [ ${OS_ID} = "debian" ] || [ ${OS_ID} = "ubuntu" ]; then
if is_debian_like; then
${ECHO} "Debian-based Linux distribution: calling 'apt-get install'."
sudo apt-get install -y ${RUNTIME_DEPS} || exit 1
install_apt_packages ${RUNTIME_DEPS}
else
${ECHO} ">>> Installing ${OS_ID} packages for CoreFoundation build"
${ECHO} "RedHat-based Linux distribution: calling 'yum -y install'."
${ECHO} "RedHat-based Linux distribution: calling 'sudo ${RPM_PACKAGE_MANAGER} -y install'."
SPEC_FILE=${PROJECT_DIR}/Packaging/RedHat/SPECS/libcorefoundation.spec
DEPS=`rpmspec -q --buildrequires ${SPEC_FILE} | awk -c '{print $1}'`
sudo yum -y install ${DEPS} git || exit 1
install_rpm_spec_buildrequires "${SPEC_FILE}"
install_rpm_packages git
fi

#----------------------------------------
Expand All @@ -30,6 +30,27 @@ if [ ! -d ${BUILD_ROOT}/${CFNET_PKG_NAME} ]; then
git clone --depth 1 https://github.com/trunkmaster/apple-cfnetwork ${BUILD_ROOT}/${CFNET_PKG_NAME}
fi

CF_COMPAT_FILE="${BUILD_ROOT}/${CF_PKG_NAME}/CFThreadSetNameCompat.c"
if [ ! -f "${CF_COMPAT_FILE}" ]; then
${ECHO} "Adding CoreFoundation _CFThreadSetName compatibility source..."
cat > "${CF_COMPAT_FILE}" <<'EOF'
#if defined(__linux__)
__attribute__((weak)) int _CFThreadSetName(void *thread, const char *name)
{
(void)thread;
(void)name;
return 0;
}
#endif
EOF
fi

CF_CMAKE_FILE=`grep -rl "CFPlatform.c" "${BUILD_ROOT}/${CF_PKG_NAME}" --include 'CMakeLists.txt' | head -n 1`
if [ -n "${CF_CMAKE_FILE}" ] && ! grep "CFThreadSetNameCompat.c" "${CF_CMAKE_FILE}" >/dev/null 2>&1; then
${ECHO} "Adding CoreFoundation _CFThreadSetName compatibility source to CMake..."
sed -i 's/CFPlatform\.c/CFPlatform.c CFThreadSetNameCompat.c/' "${CF_CMAKE_FILE}"
fi

#----------------------------------------
# Build
#----------------------------------------
Expand All @@ -54,6 +75,11 @@ $CMAKE_CMD .. \
|| exit 1

$MAKE_CMD || exit 1
CF_BUILD_LIB=`find . -name 'libCoreFoundation.so*' -type f | head -n 1`
if [ -n "${CF_BUILD_LIB}" ] && nm -D "${CF_BUILD_LIB}" | grep " U _CFThreadSetName" >/dev/null 2>&1; then
print_ERR "Built CoreFoundation still has undefined _CFThreadSetName."
exit 1
fi

# CFNetwork
if [ -n "$libcfnetwork_version" ]; then
Expand All @@ -62,10 +88,10 @@ if [ -n "$libcfnetwork_version" ]; then
mkdir -p .build
cd .build
CFN_CFLAGS="-F../../${CF_PKG_NAME}/.build -I/usr/NextSpace/include"
CFN_LD_FLAGS="-L/usr/NextSpace/lib -L../../${CF_PKG_NAME}/.build/CoreFoundation.framework"
CFN_LD_FLAGS="-L../../${CF_PKG_NAME}/.build/CoreFoundation.framework -L/usr/NextSpace/lib"
cmake .. \
-DCMAKE_C_COMPILER=${C_COMPILER} \
-DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_CXX_COMPILER=${CXX_COMPILER} \
-DCFNETWORK_CFLAGS="${CFN_CFLAGS}" \
-DCFNETWORK_LDLAGS="${CFN_LD_FLAGS}" \
-DBUILD_SHARED_LIBS=YES \
Expand All @@ -83,7 +109,7 @@ fi

### CoreFoundation
cd ${BUILD_ROOT}/${CF_PKG_NAME}/.build || exit 1
$INSTALL_CMD
run_install

CF_DIR=${DEST_DIR}/usr/NextSpace/Frameworks/CoreFoundation.framework

Expand All @@ -106,7 +132,7 @@ $LN_CMD ../Frameworks/CoreFoundation.framework/Versions/${libcorefoundation_vers
### CFNetwork
if [ -n "$libcfnetwork_version" ]; then
cd ${BUILD_ROOT}/${CFNET_PKG_NAME}/.build || exit 1
$INSTALL_CMD
run_install

CFNET_DIR=${DEST_DIR}/usr/NextSpace/Frameworks/CFNetwork.framework

Expand All @@ -127,6 +153,4 @@ if [ -n "$libcfnetwork_version" ]; then
$LN_CMD ../Frameworks/CFNetwork.framework/Versions/${libcfnetwork_version}/libCFNetwork.so* ./
fi

if [ "$DEST_DIR" = "" ]; then
sudo ldconfig
fi
refresh_ldconfig
17 changes: 7 additions & 10 deletions Packaging/Sources/2_build_libobjc2.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,11 @@
#----------------------------------------
# Install package dependecies
#----------------------------------------
if [ ${OS_ID} != "debian" ] && [ ${OS_ID} != "ubuntu" ]; then
if is_rpm_like; then
${ECHO} ">>> Installing ${OS_ID} packages for ObjC 2.0 runtime build"
${ECHO} "RedHat-based Linux distribution: calling 'yum -y install'."
${ECHO} "RedHat-based Linux distribution: calling 'sudo ${RPM_PACKAGE_MANAGER} -y install'."
SPEC_FILE=${PROJECT_DIR}/Packaging/RedHat/SPECS/libobjc2.spec
DEPS=`rpmspec -q --buildrequires ${SPEC_FILE} | grep -v "libdispatch-devel" | awk -c '{print $1}'`
sudo yum -y install ${DEPS} || exit 1
install_rpm_spec_buildrequires "${SPEC_FILE}" "libdispatch-devel"
fi

#----------------------------------------
Expand All @@ -24,7 +23,7 @@ if [ ! -d ${BUILD_ROOT}/libobjc2-${libobjc2_version} ]; then
curl -L https://github.com/gnustep/libobjc2/archive/v${libobjc2_version}.tar.gz -o ${BUILD_ROOT}/libobjc2-${libobjc2_version}.tar.gz
curl -L https://github.com/Tessil/robin-map/archive/${ROBIN_MAP_PKG_NAME} -o ${BUILD_ROOT}/libobjc2_robin-map.tar.gz

cd ${BUILD_ROOT}
cd "${BUILD_ROOT}" || exit 1
tar zxf libobjc2-${libobjc2_version}.tar.gz
tar zxf libobjc2_robin-map.tar.gz
fi
Expand Down Expand Up @@ -54,7 +53,7 @@ $CMAKE_CMD .. \
-DCMAKE_LIBRARY_PATH=/usr/NextSpace/lib \
-DCMAKE_INSTALL_LIBDIR=lib \
-DCMAKE_INSTALL_PREFIX=/usr/NextSpace \
-DCMAKE_MODULE_LINKER_FLAGS="-fuse-ld=/usr/bin/ld.gold -Wl,-rpath,/usr/NextSpace/lib" \
-DCMAKE_MODULE_LINKER_FLAGS="${LD_GOLD_FLAG} -Wl,-rpath,/usr/NextSpace/lib" \
-DCMAKE_SKIP_RPATH=ON \
-DTESTS=OFF \
-DCMAKE_BUILD_TYPE=Release \
Expand All @@ -70,12 +69,10 @@ $MAKE_CMD
if [ -f $DEST_DIR/usr/NextSpace/include/Block.h ]; then
$MV_CMD $DEST_DIR/usr/NextSpace/include/Block.h $DEST_DIR/usr/NextSpace/include/Block-libdispatch.h
fi
$INSTALL_CMD || exit 1
run_install || exit 1
if [ -f $DEST_DIR/usr/NextSpace/include/Block-libdispatch.h ]; then
$MV_CMD $DEST_DIR/usr/NextSpace/include/Block.h $DEST_DIR/usr/NextSpace/include/Block-libobjc.h
$MV_CMD $DEST_DIR/usr/NextSpace/include/Block-libdispatch.h $DEST_DIR/usr/NextSpace/include/Block.h
fi

if [ "$DEST_DIR" = "" ]; then
sudo ldconfig
fi
refresh_ldconfig
117 changes: 85 additions & 32 deletions Packaging/Sources/3_build_core.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,64 +2,117 @@

. ../environment.sh

#----------------------------------------
# Install package dependecies
#----------------------------------------
if is_debian_like; then
install_apt_packages ${RUNTIME_RUN_DEPS} ${GNUSTEP_MAKE_DEPS}
else
SPEC_FILE=${PROJECT_DIR}/Packaging/RedHat/SPECS/nextspace-core.spec
install_rpm_spec_requires "${SPEC_FILE}" "libobjc2" "libdispatch" "nextspace-core" "git" "clang"
fi

#----------------------------------------
# Install system configuration files
#----------------------------------------
CORE_SOURCES=${PROJECT_DIR}/OS/Linux

if [ ! -d "${CORE_SOURCES}" ]; then
$ECHO "\033[31mERROR: Missing core resources directory: ${CORE_SOURCES}\033[0m"
exit 1
fi

$ECHO "Populating /etc... /usr..."

# /.hidden
$CP_CMD ${CORE_SOURCES}/dot_hidden /.hidden
if [ -f "${CORE_SOURCES}/dot_hidden" ]; then
$CP_CMD "${CORE_SOURCES}/dot_hidden" /.hidden
fi

# Preferences
# The source tree keeps user defaults under /etc/skel. Do not install global
# /Library/Preferences here; the clean project leaves this disabled.
#$MKDIR_CMD $DEST_DIR/Library/Preferences
#$CP_CMD ${CORE_SOURCES}/Library/Preferences/* $DEST_DIR/Library/Preferences/
#$CP_CMD "${CORE_SOURCES}"/Library/Preferences/* $DEST_DIR/Library/Preferences/

# Linker cache
if ! [ -d $DEST_DIR/etc/ld.so.conf.d ];then
$MKDIR_CMD -v $DEST_DIR/etc/ld.so.conf.d
if [ -f "${CORE_SOURCES}/etc/ld.so.conf.d/nextspace.conf" ]; then
if ! [ -d $DEST_DIR/etc/ld.so.conf.d ]; then
$MKDIR_CMD -v $DEST_DIR/etc/ld.so.conf.d
fi
$CP_CMD -v "${CORE_SOURCES}/etc/ld.so.conf.d/nextspace.conf" $DEST_DIR/etc/ld.so.conf.d/
refresh_ldconfig
fi
$CP_CMD -v ${CORE_SOURCES}/etc/ld.so.conf.d/nextspace.conf $DEST_DIR/etc/ld.so.conf.d/
sudo ldconfig

# X11
$CP_CMD ${CORE_SOURCES}/etc/X11/Xresources.nextspace $DEST_DIR/etc/X11
if [ -f "${CORE_SOURCES}/etc/X11/Xresources.nextspace" ]; then
if ! [ -d $DEST_DIR/etc/X11 ]; then
$MKDIR_CMD -v $DEST_DIR/etc/X11
fi
$CP_CMD "${CORE_SOURCES}/etc/X11/Xresources.nextspace" $DEST_DIR/etc/X11
fi
if [ -d "${CORE_SOURCES}/etc/X11/xorg.conf.d" ]; then
if ! [ -d $DEST_DIR/etc/X11/xorg.conf.d ]; then
$MKDIR_CMD -v $DEST_DIR/etc/X11/xorg.conf.d
fi
$CP_CMD "${CORE_SOURCES}"/etc/X11/xorg.conf.d/*.conf $DEST_DIR/etc/X11/xorg.conf.d/
fi

# PolKit & udev
if ! [ -d $DEST_DIR/etc/polkit-1/rules.d ];then
$MKDIR_CMD -v $DEST_DIR/etc/polkit-1/rules.d
if [ -d "${CORE_SOURCES}/etc/polkit-1/rules.d" ]; then
if ! [ -d $DEST_DIR/etc/polkit-1/rules.d ]; then
$MKDIR_CMD -v $DEST_DIR/etc/polkit-1/rules.d
fi
# $CP_CMD "${CORE_SOURCES}"/etc/polkit-1/rules.d/*.rules $DEST_DIR/etc/polkit-1/rules.d/
fi
#$CP_CMD ${CORE_SOURCES}/etc/polkit-1/rules.d/*.rules $DEST_DIR/etc/polkit-1/rules.d/
#if ! [ -d $DEST_DIR/etc/udev/rules.d ];then
# $MKDIR_CMD -v $DEST_DIR/etc/udev/rules.d
#if [ -d "${CORE_SOURCES}/etc/udev/rules.d" ]; then
# if ! [ -d $DEST_DIR/etc/udev/rules.d ]; then
# $MKDIR_CMD -v $DEST_DIR/etc/udev/rules.d
# fi
# $CP_CMD "${CORE_SOURCES}"/etc/udev/rules.d/*.rules $DEST_DIR/etc/udev/rules.d/
#fi
#$CP_CMD ${CORE_SOURCES}/etc/udev/rules.d/*.rules $DEST_DIR/etc/udev/rules.d/

# User environment
if ! [ -d $DEST_DIR/etc/profile.d ];then
$MKDIR_CMD -v $DEST_DIR/etc/profile.d
if [ -f "${CORE_SOURCES}/etc/profile.d/nextspace.sh" ]; then
if ! [ -d $DEST_DIR/etc/profile.d ]; then
$MKDIR_CMD -v $DEST_DIR/etc/profile.d
fi
$CP_CMD "${CORE_SOURCES}/etc/profile.d/nextspace.sh" $DEST_DIR/etc/profile.d/
fi
$CP_CMD ${CORE_SOURCES}/etc/profile.d/nextspace.sh $DEST_DIR/etc/profile.d/

if ! [ -d $DEST_DIR/etc/skel ];then
$MKDIR_CMD -v $DEST_DIR/etc/skel
fi
$CP_CMD ${CORE_SOURCES}/etc/skel/Library $DEST_DIR/etc/skel/
$CP_CMD ${CORE_SOURCES}/etc/skel/.config $DEST_DIR/etc/skel/
$CP_CMD ${CORE_SOURCES}/etc/skel/.gtkrc-2.0 $DEST_DIR/etc/skel/
$CP_CMD ${CORE_SOURCES}/etc/skel/.*.nextspace $DEST_DIR/etc/skel/
if [ -d "${CORE_SOURCES}/etc/skel" ]; then
if ! [ -d $DEST_DIR/etc/skel ]; then
$MKDIR_CMD -v $DEST_DIR/etc/skel
fi
[ -d "${CORE_SOURCES}/etc/skel/Library" ] && $CP_CMD "${CORE_SOURCES}"/etc/skel/Library $DEST_DIR/etc/skel/
[ -d "${CORE_SOURCES}/etc/skel/.config" ] && $CP_CMD "${CORE_SOURCES}"/etc/skel/.config $DEST_DIR/etc/skel/
[ -f "${CORE_SOURCES}/etc/skel/.gtkrc-2.0" ] && $CP_CMD "${CORE_SOURCES}"/etc/skel/.gtkrc-2.0 $DEST_DIR/etc/skel/
[ -f "${CORE_SOURCES}/etc/skel/.zshrc.nextspace" ] && $CP_CMD "${CORE_SOURCES}"/etc/skel/.zshrc.nextspace $DEST_DIR/etc/skel/
for nextspace_file in "${CORE_SOURCES}"/etc/skel/.*.nextspace; do
[ -f "$nextspace_file" ] && $CP_CMD "$nextspace_file" $DEST_DIR/etc/skel/
done

# /root
$CP_CMD ${CORE_SOURCES}/etc/skel/.config /root
$CP_CMD ${CORE_SOURCES}/etc/skel/Library /root
if [ "$DEST_DIR" = "" ] && [ -d /root ]; then
[ -d "${CORE_SOURCES}/etc/skel/.config" ] && $CP_CMD "${CORE_SOURCES}"/etc/skel/.config /root
[ -d "${CORE_SOURCES}/etc/skel/Library" ] && $CP_CMD "${CORE_SOURCES}"/etc/skel/Library /root
fi
fi

# Scripts
if ! [ -d $DEST_DIR/usr/NextSpace/bin ];then
$MKDIR_CMD -v $DEST_DIR/usr/NextSpace/bin
if [ -d "${CORE_SOURCES}/usr/NextSpace/bin" ]; then
if ! [ -d $DEST_DIR/usr/NextSpace/bin ]; then
$MKDIR_CMD -v $DEST_DIR/usr/NextSpace/bin
fi
$CP_CMD "${CORE_SOURCES}"/usr/NextSpace/bin/* $DEST_DIR/usr/NextSpace/bin/
fi
$CP_CMD ${CORE_SOURCES}/usr/NextSpace/bin/* $DEST_DIR/usr/NextSpace/bin/

# Icons, Plymouth resources and fontconfig configuration
if ! [ -d $DEST_DIR/usr/share ];then
$MKDIR_CMD -v $DEST_DIR/usr/share
if [ -d "${CORE_SOURCES}/usr/share" ]; then
if ! [ -d $DEST_DIR/usr/share ]; then
$MKDIR_CMD -v $DEST_DIR/usr/share
fi
$CP_CMD "${CORE_SOURCES}"/usr/share/* $DEST_DIR/usr/share/
fi
$CP_CMD ${CORE_SOURCES}/usr/share/* $DEST_DIR/usr/share/

# Set the NEXTSPACE theme as the default for Plymouth on live systems.
configure_plymouth_theme nextspace || exit 1
Loading
Loading