]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - release/scripts/pkg-stage.sh
zfs: merge openzfs/zfs@e61076683
[FreeBSD/FreeBSD.git] / release / scripts / pkg-stage.sh
1 #!/bin/sh
2 #
3 # $FreeBSD$
4 #
5
6 set -e
7
8 export ASSUME_ALWAYS_YES="YES"
9 export PKG_DBDIR="/tmp/pkg"
10 export PERMISSIVE="YES"
11 export REPO_AUTOUPDATE="NO"
12 export PKGCMD="/usr/sbin/pkg -d"
13 export PORTSDIR="${PORTSDIR:-/usr/ports}"
14
15 _DVD_PACKAGES="archivers/unzip
16 devel/git
17 emulators/linux_base-c7
18 graphics/drm-legacy-kmod
19 graphics/drm-stable-kmod
20 misc/freebsd-doc-all
21 net/mpd5
22 net/rsync
23 ports-mgmt/pkg
24 ports-mgmt/portmaster
25 shells/bash
26 shells/zsh
27 security/sudo
28 sysutils/screen
29 sysutils/tmux
30 www/firefox
31 www/links
32 x11-drivers/xf86-video-vmware
33 x11/gnome
34 x11/kde5
35 x11/xorg"
36
37 # If NOPORTS is set for the release, do not attempt to build pkg(8).
38 if [ ! -f ${PORTSDIR}/Makefile ]; then
39         echo "*** ${PORTSDIR} is missing!    ***"
40         echo "*** Skipping pkg-stage.sh     ***"
41         echo "*** Unset NOPORTS to fix this ***"
42         exit 0
43 fi
44
45 if [ ! -x /usr/local/sbin/pkg ]; then
46         /etc/rc.d/ldconfig restart
47         /usr/bin/make -C ${PORTSDIR}/ports-mgmt/pkg install clean
48 fi
49
50 export DVD_DIR="dvd/packages"
51 export PKG_ABI=$(pkg config ABI)
52 export PKG_ALTABI=$(pkg config ALTABI 2>/dev/null)
53 export PKG_REPODIR="${DVD_DIR}/${PKG_ABI}"
54
55 /bin/mkdir -p ${PKG_REPODIR}
56 if [ ! -z "${PKG_ALTABI}" ]; then
57         (cd ${DVD_DIR} && ln -s ${PKG_ABI} ${PKG_ALTABI})
58 fi
59
60 # Ensure the ports listed in _DVD_PACKAGES exist to sanitize the
61 # final list.
62 for _P in ${_DVD_PACKAGES}; do
63         if [ -d "${PORTSDIR}/${_P}" ]; then
64                 DVD_PACKAGES="${DVD_PACKAGES} ${_P}"
65         else
66                 echo "*** Skipping nonexistent port: ${_P}"
67         fi
68 done
69
70 # Make sure the package list is not empty.
71 if [ -z "${DVD_PACKAGES}" ]; then
72         echo "*** The package list is empty."
73         echo "*** Something is very wrong."
74         # Exit '0' so the rest of the build process continues
75         # so other issues (if any) can be addressed as well.
76         exit 0
77 fi
78
79 # Print pkg(8) information to make debugging easier.
80 ${PKGCMD} -vv
81 ${PKGCMD} update -f
82 ${PKGCMD} fetch -o ${PKG_REPODIR} -d ${DVD_PACKAGES}
83
84 # Create the 'Latest/pkg.txz' symlink so 'pkg bootstrap' works
85 # using the on-disc packages.
86 mkdir -p ${PKG_REPODIR}/Latest
87 (cd ${PKG_REPODIR}/Latest && \
88         ln -s ../All/$(${PKGCMD} rquery %n-%v pkg).pkg pkg.pkg)
89 (cd ${PKG_REPODIR}/Latest && \
90         rm -f pkg.txz && ln -s pkg.pkg pkg.txz)
91
92 ${PKGCMD} repo ${PKG_REPODIR}
93
94 # Always exit '0', even if pkg(8) complains about conflicts.
95 exit 0