@@ -10,50 +10,70 @@ MANYLINUX_CFLAGS="-g -O2 -Wall -fdebug-prefix-map=/=. -fstack-protector-strong -
1010MANYLINUX_CXXFLAGS=" -g -O2 -Wall -fdebug-prefix-map=/=. -fstack-protector-strong -Wformat -Werror=format-security"
1111MANYLINUX_LDFLAGS=" -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now"
1212
13- export BASE_POLICY=manylinux
1413if [ " ${AUDITWHEEL_POLICY: 0: 10} " == " musllinux_" ]; then
1514 export BASE_POLICY=musllinux
15+ PACKAGE_MANAGER=apk
16+ else
17+ export BASE_POLICY=manylinux
18+ if command -v dnf > /dev/null 2>&1 ; then
19+ PACKAGE_MANAGER=dnf
20+ elif command -v yum > /dev/null 2>&1 ; then
21+ PACKAGE_MANAGER=yum
22+ elif command -v apt-get > /dev/null 2>&1 ; then
23+ PACKAGE_MANAGER=apt
24+ else
25+ echo " unsupported image"
26+ exit 1
27+ fi
1628fi
1729
30+ OS_ID_LIKE=$( . /etc/os-release; echo " ${ID} ${ID_LIKE:- } " )
31+ case " ${OS_ID_LIKE} " in
32+ * rhel* ) OS_ID_LIKE=rhel;;
33+ * debian) OS_ID_LIKE=debian;;
34+ * alpine* ) OS_ID_LIKE=alpine;;
35+ * ) echo " unsupported image" ; exit 1;;
36+ esac
37+
1838function check_var {
19- if [ -z " $1 " ]; then
20- echo " required variable not defined"
21- exit 1
22- fi
39+ if [ -z " $1 " ]; then
40+ echo " required variable not defined"
41+ exit 1
42+ fi
2343}
2444
2545
2646function fetch_source {
27- # This is called both inside and outside the build context (e.g. in Travis) to prefetch
28- # source tarballs, where curl exists (and works)
29- local file=$1
30- check_var ${file}
31- local url=$2
32- check_var ${url}
33- if [ -f ${file} ]; then
34- echo " ${file} exists, skipping fetch"
35- else
36- curl -fsSL -o ${file} ${url} /${file}
37- fi
47+ # This is called both inside and outside the build context (e.g. in Travis) to prefetch
48+ # source tarballs, where curl exists (and works)
49+ local file=$1
50+ check_var ${file}
51+ local url=$2
52+ check_var ${url}
53+ if [ -f ${file} ]; then
54+ echo " ${file} exists, skipping fetch"
55+ else
56+ curl -fsSL -o ${file} ${url} /${file}
57+ fi
3858}
3959
4060
4161function check_sha256sum {
42- local fname=$1
43- check_var ${fname}
44- local sha256=$2
45- check_var ${sha256}
46-
47- echo " ${sha256} ${fname} " > ${fname} .sha256
48- sha256sum -c ${fname} .sha256
49- rm -f ${fname} .sha256
62+ local fname=$1
63+ check_var ${fname}
64+ local sha256=$2
65+ check_var ${sha256}
66+
67+ echo " ${sha256} ${fname} " > ${fname} .sha256
68+ sha256sum -c ${fname} .sha256
69+ rm -f ${fname} .sha256
5070}
5171
5272
5373function do_standard_install {
54- ./configure " $@ " CPPFLAGS=" ${MANYLINUX_CPPFLAGS} " CFLAGS=" ${MANYLINUX_CFLAGS} " " CXXFLAGS=${MANYLINUX_CXXFLAGS} " LDFLAGS=" ${MANYLINUX_LDFLAGS} " > /dev/null
55- make > /dev/null
56- make install > /dev/null
74+ ./configure " $@ " CPPFLAGS=" ${MANYLINUX_CPPFLAGS} " CFLAGS=" ${MANYLINUX_CFLAGS} " " CXXFLAGS=${MANYLINUX_CXXFLAGS} " LDFLAGS=" ${MANYLINUX_LDFLAGS} " > /dev/null
75+ make > /dev/null
76+ make install > /dev/null
5777}
5878
5979function strip_ {
@@ -65,3 +85,49 @@ function strip_ {
6585function clean_pyc {
6686 find $1 -type f -a \( -name ' *.pyc' -o -name ' *.pyo' \) -delete
6787}
88+
89+ function manylinux_pkg_install {
90+ if [ " ${PACKAGE_MANAGER} " = " yum" ]; then
91+ yum -y install " $@ "
92+ elif [ " ${PACKAGE_MANAGER} " = " dnf" ]; then
93+ dnf -y install --allowerasing " $@ "
94+ elif [ " ${PACKAGE_MANAGER} " = " apt" ]; then
95+ DEBIAN_FRONTEND=noninteractive apt-get update -qq
96+ DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends " $@ "
97+ elif [ " ${PACKAGE_MANAGER} " = " apk" ]; then
98+ apk add --no-cache " $@ "
99+ else
100+ return 1
101+ fi
102+ }
103+
104+ function manylinux_pkg_remove {
105+ if [ " ${PACKAGE_MANAGER} " = " dnf" ]; then
106+ dnf erase -y " $@ "
107+ elif [ " ${PACKAGE_MANAGER} " = " yum" ]; then
108+ yum erase -y " $@ "
109+ elif [ " ${PACKAGE_MANAGER} " = " apt" ]; then
110+ DEBIAN_FRONTEND=noninteractive apt-get remove -y " $@ "
111+ elif [ " ${PACKAGE_MANAGER} " = " apk" ]; then
112+ apk del " $@ "
113+ else
114+ return 1
115+ fi
116+ }
117+
118+ function manylinux_pkg_clean {
119+ if [ " ${PACKAGE_MANAGER} " = " yum" ]; then
120+ yum clean all
121+ rm -rf /var/cache/yum
122+ elif [ " ${PACKAGE_MANAGER} " = " dnf" ]; then
123+ dnf clean all
124+ rm -rf /var/cache/dnf
125+ elif [ " ${PACKAGE_MANAGER} " = " apt" ]; then
126+ DEBIAN_FRONTEND=noninteractive apt-get clean -qq
127+ rm -rf /var/lib/apt/lists/*
128+ elif [ " ${PACKAGE_MANAGER} " = " apk" ]; then
129+ :
130+ else
131+ return 1
132+ fi
133+ }
0 commit comments