Skip to content

Commit

Permalink
[deb] Split package into multiple component packages
Browse files Browse the repository at this point in the history
  • Loading branch information
facekapow authored and CuriousTommy committed May 12, 2023
1 parent 1edcfeb commit c0102e5
Show file tree
Hide file tree
Showing 27 changed files with 238 additions and 8 deletions.
22 changes: 22 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,28 @@ debian/darling.substvars
debian/darling/
debian/debhelper-build-stamp
debian/tmp/
debian/darling-core/
debian/darling-system/
debian/darling-cli/
debian/darling-ffi/
debian/darling-cli-devenv/
debian/darling-cli-gui-common/
debian/darling-iokitd/
debian/darling-cli-devenv-gui-common/
debian/darling-cli-extra/
debian/darling-gui/
debian/darling-python/
debian/darling-cli-python-common/
debian/darling-pyobjc/
debian/darling-ruby/
debian/darling-perl/
debian/darling-jsc-webkit-common/
debian/darling-jsc/
debian/darling-iokitd-cli-devenv-gui-common/
debian/darling-cli-devenv-gui-stubs-common/
debian/darling-gui-stubs/
debian/darling-extra/
debian/*.substvars

.idea
cmake-build-*
129 changes: 128 additions & 1 deletion debian/control
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,133 @@ Build-Depends: cmake, clang | clang-9, bison, flex, libfuse-dev, libudev-dev, pk

Package: darling
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, ${macho:Depends}, fuse
Depends: ${shlibs:Depends}, ${misc:Depends}, darling-cli, darling-python, darling-ruby, darling-perl, darling-gui, darling-gui-stubs, darling-pyobjc
Description: Darling
macOS emulation layer for Linux

Package: darling-extra
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, darling, darling-jsc, darling-cli-extra
Description: Extra components for Darling
Extra components for Darling that are not part of a typical ("stock") installation

Package: darling-core
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, ${macho:Depends}, xdg-user-dirs
Description: Darling core components
Core components of Darling

Package: darling-system
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, ${macho:Depends}, darling-core
Description: Darling system components
System components of Darling

Package: darling-cli
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, ${macho:Depends}, darling-system, darling-cli-gui-common, darling-cli-python-common
Description: Darling CLI components
CLI components of Darling

Package: darling-ffi
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, ${macho:Depends}, darling-core
Description: libffi for Darling
libffi built for use within Darling

Package: darling-cli-devenv
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, ${macho:Depends}, darling-cli, darling-python, darling-ruby, darling-perl, darling-cli-devenv-gui-common, darling-cli-devenv-gui-stubs-common, darling-iokitd-cli-devenv-gui-common
Description: Darling developer environment
A Darling environment for CLI-only programs for building and developing using the command line developer tools
Conflicts: darling-gui, darling-gui-stubs

Package: darling-cli-gui-common
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, ${macho:Depends}, darling-system
Description: Darling CLI and GUI common components
Components of Darling that are shared between the CLI and GUI components

Package: darling-iokitd
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, ${macho:Depends}, darling-system, darling-iokitd-cli-devenv-gui-common
Description: Darling IOKit daemon
IOKit daemon for Darling

Package: darling-cli-devenv-gui-common
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, ${macho:Depends}, darling-system
Description: Darling developer environment and GUI common components
Components of Darling that are shared between the developer environment and the GUI components

Package: darling-cli-extra
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, ${macho:Depends}, darling-cli
Description: Extra Darling CLI components
Non-standard CLI components of Darling

Package: darling-gui
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, ${macho:Depends}, darling-system, darling-cli-devenv-gui-common, darling-iokitd, darling-cli-gui-common, darling-iokitd-cli-devenv-gui-common
Description: Darling GUI components
GUI components of Darling

Package: darling-python
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, ${macho:Depends}, darling-core, darling-cli-python-common, darling-ffi
Description: Python for Darling
Python (and associated programs) built for use within Darling

Package: darling-cli-python-common
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, ${macho:Depends}, darling-core
Description: Darling CLI and Python common components
Components of Darling that are shared between the CLI and Python components

Package: darling-pyobjc
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, ${macho:Depends}, darling-gui-stubs, darling-python
Description: PyObjC for Darling
PyObjC built for use within Darling

Package: darling-ruby
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, ${macho:Depends}, darling-core, darling-ffi
Description: Ruby for Darling
Ruby built for use within Darling

Package: darling-perl
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, ${macho:Depends}, darling-core
Description: Perl for Darling
Perl built for use within Darling

Package: darling-jsc-webkit-common
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, ${macho:Depends}, darling-system
Description: Darling JavaScriptCore and WebKit common components
Components of Darling that are shared between JavaScriptCore and WebKit

Package: darling-jsc
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, ${macho:Depends}, darling-system, darling-jsc-webkit-common
Description: JavaScriptCore for Darling
JavaScriptCore built for use within Darling

Package: darling-iokitd-cli-devenv-gui-common
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, ${macho:Depends}, darling-system
Description: Darling IOKit daemon, developer environment, and GUI common components
Components of Darling that are shared between the IOKit daemon, developer environment, and GUI components

Package: darling-cli-devenv-gui-stubs-common
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, ${macho:Depends}, darling-cli-devenv-gui-common
Description: Darling developer environment and GUI stubs common components
Components of Darling that are shared between the developer environment and GUI stub components

Package: darling-gui-stubs
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, ${macho:Depends}, darling-gui, darling-cli-devenv-gui-stubs-common
Description: Darling GUI stub components
GUI stub components of Darling
2 changes: 1 addition & 1 deletion debian/copyright
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Copyright (C) 2012-2017 Darling developers
Copyright (C) 2012-2023 Darling developers
Copyright (C) 1999-2017 Apple, Inc.
Copyright (C) 1989-2005 Free Software Foundation, Inc.

1 change: 1 addition & 0 deletions debian/darling-cli-devenv-gui-common.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
cli-devenv-gui-common/usr /
1 change: 1 addition & 0 deletions debian/darling-cli-devenv-gui-stubs-common.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
cli-devenv-gui-stubs-common/usr /
1 change: 1 addition & 0 deletions debian/darling-cli-devenv.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
cli-devenv/usr /
1 change: 1 addition & 0 deletions debian/darling-cli-extra.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
cli-extra/usr /
1 change: 1 addition & 0 deletions debian/darling-cli-gui-common.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
cli-gui-common/usr /
1 change: 1 addition & 0 deletions debian/darling-cli-python-common.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
cli-python-common/usr /
1 change: 1 addition & 0 deletions debian/darling-cli.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
cli/usr /
1 change: 1 addition & 0 deletions debian/darling.install → debian/darling-core.install
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
core/usr /
tools/shutdown-user.sh usr/lib/darling
File renamed without changes.
File renamed without changes.
1 change: 1 addition & 0 deletions debian/darling-ffi.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ffi/usr /
1 change: 1 addition & 0 deletions debian/darling-gui-stubs.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
gui-stubs/usr /
1 change: 1 addition & 0 deletions debian/darling-gui.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
gui/usr /
1 change: 1 addition & 0 deletions debian/darling-iokitd-cli-devenv-gui-common.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
iokitd-cli-devenv-gui-common/usr /
1 change: 1 addition & 0 deletions debian/darling-iokitd.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
iokitd/usr /
1 change: 1 addition & 0 deletions debian/darling-jsc-webkit-common.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
jsc-webkit-common/usr /
1 change: 1 addition & 0 deletions debian/darling-jsc.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
jsc/usr /
1 change: 1 addition & 0 deletions debian/darling-perl.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
perl/usr /
1 change: 1 addition & 0 deletions debian/darling-pyobjc.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pyobjc/usr /
1 change: 1 addition & 0 deletions debian/darling-python.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
python/usr /
1 change: 1 addition & 0 deletions debian/darling-ruby.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ruby/usr /
1 change: 1 addition & 0 deletions debian/darling-system.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
system/usr /
60 changes: 57 additions & 3 deletions debian/rules
Original file line number Diff line number Diff line change
@@ -1,17 +1,71 @@
#!/usr/bin/make -f

INDICES = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

DARLING_COMPONENTS = \
core \
system \
cli \
ffi \
cli_dev \
cli_gui_common \
iokitd \
cli_dev_gui_common \
cli_extra \
gui \
python \
cli_python_common \
pyobjc \
ruby \
perl \
jsc_webkit_common \
jsc \
iokitd_cli_dev_gui_common \
cli_dev_gui_stubs_common \
gui_stubs

PACKAGE_SUFFIXES = \
core \
system \
cli \
ffi \
cli-devenv \
cli-gui-common \
iokitd \
cli-devenv-gui-common \
cli-extra \
gui \
python \
cli-python-common \
pyobjc \
ruby \
perl \
jsc-webkit-common \
jsc \
iokitd-cli-devenv-gui-common \
cli-devenv-gui-stubs-common \
gui-stubs

%:
dh $@ --builddirectory=debbuild

override_dh_auto_configure:
mkdir debbuild
cd debbuild && CFLAGS="" CXXFLAGS="" CPPFLAGS="" LDFLAGS="" cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DDEBIAN_PACKAGING=ON
mkdir debbuild -p
cd debbuild && CFLAGS="" CXXFLAGS="" CPPFLAGS="" LDFLAGS="" cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DDEBIAN_PACKAGING=ON -DJSC_UNIFIED_BUILD=ON

override_dh_auto_build:
cd debbuild && $(MAKE) -j$(shell nproc)

override_dh_auto_install:
cd debbuild; $(foreach INDEX,$(INDICES), \
DESTDIR=../debian/tmp/$(word $(INDEX),$(PACKAGE_SUFFIXES)) cmake -DCOMPONENT=$(word $(INDEX),$(DARLING_COMPONENTS)) -P cmake_install.cmake ; \
)

override_dh_makeshlibs:
dh_makeshlibs
tools/debian/make-shlibdeps
$(foreach INDEX,$(INDICES), \
tools/debian/make-shlibdeps $(word $(INDEX),$(PACKAGE_SUFFIXES)) ; \
)

override_dh_clean:
dh_clean -X.orig -X.bak -X~
Expand Down
13 changes: 10 additions & 3 deletions tools/debian/make-shlibdeps
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,22 @@

set -e

DEB_PACKAGE='darling'
DEB_SUFFIX="$1"
DEB_PACKAGE="darling-${DEB_SUFFIX}"

ARGS_FILE="$(mktemp)"

find "debian/${DEB_PACKAGE}" -type f -exec tools/debian/make-shlibdeps-file "${ARGS_FILE}" {} \;
if [ -d "debian/tmp/${DEB_SUFFIX}" ]; then
find "debian/tmp/${DEB_SUFFIX}" -type f -exec tools/debian/make-shlibdeps-file "${ARGS_FILE}" {} \;
else
touch "${ARGS_FILE}"
fi

OUT="$(mktemp)"
clang -shared -o "${OUT}"$(cat ${ARGS_FILE})
DUMMY="$(mktemp)"
clang "${DUMMY}" -x c -shared -o "${OUT}"$(cat ${ARGS_FILE})
dpkg-shlibdeps -T"debian/${DEB_PACKAGE}.substvars" -p"macho" -e"${OUT}" > /dev/null 2>&1

rm -f "${ARGS_FILE}"
rm -f "${OUT}"
rm -f "${DUMMY}"

0 comments on commit c0102e5

Please sign in to comment.