File: configure

package info (click to toggle)
linuxcnc 1%3A2.9.7-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 285,604 kB
  • sloc: python: 202,568; ansic: 109,036; cpp: 99,239; tcl: 16,054; xml: 10,631; sh: 10,303; makefile: 1,255; javascript: 138; sql: 72; asm: 15
file content (198 lines) | stat: -rwxr-xr-x 6,727 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
#!/bin/bash
# dpkg configuration script for linuxcnc
# Copyright (C) 2006 Jeff Epler
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# When used to produce a debian package, this file is a script "used to
# control compilation and installation of the executable"

set -e

usage () {
    P=${0##*/}
    cat <<EOF
$P: Set up debian/ files to build for a particular kernel

Usage:
  $P [no-docs]

  Extra options:
    no-docs
        Skip building documentation
EOF
}

cd "${0%/*}"

if [ "$1" == "-h" ] || [ "$1" == "-help" ] || [ "$1" == "--help" ]; then
    usage
    exit 0
fi

EXTRA_BUILD=
PYTHON_VERSION_NEXT=$(python3 -c 'import sys; print (sys.version[:2] + str(1+int(sys.version[2])))')
LIBREADLINE_DEV="libeditreadline-dev | libreadline-gplv2-dev | libreadline-dev"

ENABLE_BUILD_DOCUMENTATION=--enable-build-documentation=pdf

# Specialize these based on DISTRIB_NAME as needed
# These do not run-time depend on a specific package because
# the whole point is to allow a range of kernels to work, and we don't know
# of any common thing that all such kernels would provide.

while test $# -ne 0; do
    case "$1" in
    sim|uspace|noauto) echo "$1 is accepted for compatibility, but ignored";;
    no-docs) unset ENABLE_BUILD_DOCUMENTATION ;;
    *) echo 1>&2 "Unknown option: $1"; exit 99 ;;
    esac
    shift
done

DISTRIB_NAME=
if [ "$(command -v lsb_release)" != "" ] || [ "$(which lsb_release)" != "" ]; then
    ID="$(lsb_release --short --id)"
    RELEASE="$(lsb_release --short --release)"
    # Workaround for broken lsb_release, <URL: https://bugs.debian.org/1008735 >
    case "$RELEASE" in
      n/a)
        RELEASE=unstable
        ;;
    esac
    DISTRIB_NAME="$ID-$RELEASE"
elif [ -f /etc/lsb-release ]; then
    source /etc/lsb-release
    DISTRIB_NAME=$DISTRIB_ID-$DISTRIB_RELEASE
fi

if [ -n "$ENABLE_BUILD_DOCUMENTATION" ]; then
    DOC_DEPENDS="dblatex (>= 0.2.12),\n    dvipng,\n    fonts-dejavu,\n    graphviz,\n    groff,\n    inkscape,\n    python3-lxml,\n    source-highlight,\n    texlive-extra-utils,\n    texlive-font-utils,\n    texlive-fonts-recommended,\n    texlive-lang-cyrillic,\n    texlive-lang-european,\n    texlive-lang-french,\n    texlive-lang-german,\n    texlive-lang-polish,\n    texlive-lang-spanish,\n    texlive-latex-recommended,\n    w3c-linkchecker,\n    xsltproc"
    

    case $DISTRIB_NAME in
	Debian-9)
	    ;; # No xetex in Debian 9 Stretch
	*)
	    # Not quite sure which packages is needed for xetex, but
	    # texlive-xetex seem like a safe choice.  Need xetex to be
	    # able to build Chinese PDF.
	    DOC_DEPENDS="$DOC_DEPENDS,\n    texlive-xetex"
	    ;;
    esac
else
    DOC_DEPENDS=''
fi

MODUTILS_DEPENDS=kmod
PYTHON_PACKAGING_DEPENDS=dh-python
PYTHON_GST=python3-gst-1.0,gstreamer1.0-plugins-base
TCLTK_VERSION=8.6
PYTHON_IMAGING=python3-pil
PYTHON_IMAGING_TK=python3-pil.imagetk
QTVCP_DEPENDS="python3-pyqt5,\n    python3-pyqt5.qsci,\n    python3-pyqt5.qtsvg,\n    python3-pyqt5.qtopengl,\n    python3-opencv,\n    python3-dbus,\n    python3-espeak,\n    python3-dbus.mainloop.pyqt5,\n    python3-pyqt5.qtwebengine | python3-pyqt5.qtwebkit,\n    espeak-ng,\n    pyqt5-dev-tools,\n    gstreamer1.0-tools,\n    espeak,\n    sound-theme-freedesktop,\n    python3-poppler-qt5"
YAPPS_RUNTIME="python3-yapps"
DEBHELPER="debhelper (>= 12)"
COMPAT="12"

case $DISTRIB_NAME in
    Ubuntu-21.*|Debian-11|Debian-11.*|Debian-12|Debian-12.*|Debian-13|Debian-13.*|Debian-testing|Debian-unstable)
        LIBREADLINE_DEV=libeditreadline-dev
        COMPAT=""
        DEBHELPER="debhelper-compat (= 13)"
        ;;
    Ubuntu-20.*)
        ;;
    Debian-10|Debian-10.*|Raspbian-10|Raspbian-10.*)
        ;;
    *)
        echo "unknown distribution: $DISTRIB_NAME"
        echo "detected dependencies may be incomplete or wrong"
        echo "please consider fixing it and submitting a pull request"
        ;;
esac

TARGET=uspace
EXTRA_RECOMMENDS=hostmot2-firmware-all
MODULE_PATH=usr/lib/linuxcnc/modules
MODULE_EXT=.so
KERNEL_DEPENDS=libudev-dev,iptables
KERNEL_DEPENDS_BUILD=libudev-dev
KERNEL_HEADERS=
KERNEL_VERSION=uspace
MODUTILS_DEPENDS=
if false; then
MAIN_PACKAGE_NAME=linuxcnc
OTHER_MAIN_PACKAGE_NAME=linuxcnc-uspace
else
DISTRIB_NAME=uspace-$DISTRIB_NAME
MAIN_PACKAGE_NAME=linuxcnc-uspace
OTHER_MAIN_PACKAGE_NAME=linuxcnc
fi

EXTRA_RECOMMENDS="$EXTRA_RECOMMENDS, linux-image-rt-amd64 [linux-amd64], linux-image-rt-686-pae [linux-i386]"
CONFIGURE_REALTIME_ARG=--with-realtime=uspace

subst () {
sed \
    -e "s#@COMPAT@#$COMPAT#g" \
    -e "s#@DEBHELPER@#$DEBHELPER#g" \
    -e "s#@DISTRIB_NAME@#$DISTRIB_NAME#g" \
    -e "s#@DOC_DEPENDS@#$DOC_DEPENDS#g" \
    -e "s#@EXTRA_BUILD@#$EXTRA_BUILD#g" \
    -e "s#@EXTRA_RECOMMENDS@#$EXTRA_RECOMMENDS#g" \
    -e "s#@KERNEL_DEPENDS@#$KERNEL_DEPENDS#g" \
    -e "s#@KERNEL_DEPENDS_BUILD@#$KERNEL_DEPENDS_BUILD#g" \
    -e "s#@KERNEL_HEADERS@#$KERNEL_HEADERS#g" \
    -e "s#@KERNEL_VERSION@#$KERNEL_VERSION#g" \
    -e "s#@LIBREADLINE_DEV@#$LIBREADLINE_DEV#g" \
    -e "s#@MAIN_PACKAGE_NAME@#$MAIN_PACKAGE_NAME#g" \
    -e "s#@MODULE_EXT@#$MODULE_EXT#g" \
    -e "s#@MODULE_PATH@#$MODULE_PATH#g" \
    -e "s#@MODUTILS_DEPENDS@#$MODUTILS_DEPENDS#g" \
    -e "s#@OTHER_MAIN_PACKAGE_NAME@#$OTHER_MAIN_PACKAGE_NAME#g" \
    -e "s#@PYTHON_GST@#$PYTHON_GST#g" \
    -e "s#@PYTHON_IMAGING@#$PYTHON_IMAGING#g" \
    -e "s#@PYTHON_IMAGING_TK@#$PYTHON_IMAGING_TK#g" \
    -e "s#@PYTHON_PACKAGING_DEPENDS@#$PYTHON_PACKAGING_DEPENDS#g" \
    -e "s#@PYTHON_VERSION_NEXT@#$PYTHON_VERSION_NEXT#g" \
    -e "s#@QTVCP_DEPENDS@#$QTVCP_DEPENDS#g" \
    -e "s#@RTAI_ARCHITECTURE@#$RTAI_ARCHITECTURE#g" \
    -e "s#@TARGET@#$TARGET#g" \
    -e "s#@CONFIGURE_REALTIME_ARG@#$CONFIGURE_REALTIME_ARG#g" \
    -e "s#@TCLTK_VERSION@#$TCLTK_VERSION#g" \
    -e "s#@XENOMAI_ARCHITECTURE@#$XENOMAI_ARCHITECTURE#g" \
    -e "s|@YAPPS_RUNTIME@|$YAPPS_RUNTIME|g" \
    -e "s#@ENABLE_BUILD_DOCUMENTATION@#$ENABLE_BUILD_DOCUMENTATION#g" \
    -e '/^\s*,\s*$/d' \
    $*
}

if [[ -z "${COMPAT}" ]]; then
    rm -f compat
else
    subst compat.in > compat
fi

subst control.top.in > control

echo >> control
subst control.main-pkg.in >> control

subst linuxcnc.install.in > ${MAIN_PACKAGE_NAME}.install
subst linuxcnc.lintian-overrides.in > ${MAIN_PACKAGE_NAME}.lintian-overrides
subst linuxcnc.manpages.in > ${MAIN_PACKAGE_NAME}.manpages

subst rules.in > rules
chmod +x rules

if [ -n "$ENABLE_BUILD_DOCUMENTATION" ]; then
    subst control.docs.in >> control
fi


rm -f ../build-stamp
echo "Successfully configured for '$DISTRIB_NAME'."