diff options
Diffstat (limited to 'other/ssharp/contrib/solaris/build-pkg')
| -rwxr-xr-x | other/ssharp/contrib/solaris/build-pkg | 208 |
1 files changed, 208 insertions, 0 deletions
diff --git a/other/ssharp/contrib/solaris/build-pkg b/other/ssharp/contrib/solaris/build-pkg new file mode 100755 index 0000000..76529ed --- /dev/null +++ b/other/ssharp/contrib/solaris/build-pkg | |||
| @@ -0,0 +1,208 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | |||
| 3 | # OpenSSH solaris build script and supporting data files | ||
| 4 | # Copyright (c) 2000 Rip Loomis and | ||
| 5 | # Science Applications International Corporation (SAIC) | ||
| 6 | # (http://www.cist-east.saic.com). All rights reserved. | ||
| 7 | # | ||
| 8 | # Redistribution and use in source and binary forms, with or without | ||
| 9 | # modification, are permitted provided that the following conditions | ||
| 10 | # are met: | ||
| 11 | # 1. Redistributions of source code must retain the above copyright | ||
| 12 | # notice, this list of conditions and the following disclaimer. | ||
| 13 | # 2. Redistributions in binary form must reproduce the above copyright | ||
| 14 | # notice, this list of conditions and the following disclaimer in the | ||
| 15 | # documentation and/or other materials provided with the distribution. | ||
| 16 | # 3. The name of the author may not be used to endorse or promote products | ||
| 17 | # derived from this software without specific prior written permission. | ||
| 18 | # | ||
| 19 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | ||
| 20 | # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | ||
| 21 | # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | ||
| 22 | # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
| 23 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
| 24 | # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
| 25 | # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
| 26 | # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
| 27 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
| 28 | # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| 29 | |||
| 30 | # Obviously, without all the hard work of the OpenBSD OpenSSH developers | ||
| 31 | # and the OpenSSH Portability Team, these scripts would be pointless... | ||
| 32 | # so thanks again folks! | ||
| 33 | #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= | ||
| 34 | |||
| 35 | #### Known issues | ||
| 36 | # These methods are generally based on a "default" compilation of | ||
| 37 | # OpenSSH on Solaris--so the more things that you change from the default, | ||
| 38 | # the greater the chance that something in the script won't be able to | ||
| 39 | # handle the changes. In general, though, most things should be determined | ||
| 40 | # from your compile environment--the architecture, SSH version, and | ||
| 41 | # other related data should all get picked up by this script. The script | ||
| 42 | # and data files were last updated to match OpenSSH 2.1.1p4. | ||
| 43 | # | ||
| 44 | # All building and packaging is done under a temporary directory that is | ||
| 45 | # itself created under the contrib/solaris directory--so there shouldn't | ||
| 46 | # be any special security issues (or need for root access during the | ||
| 47 | # packaging process). The temporary directory is defined below as | ||
| 48 | # ${BUILDDIR}. | ||
| 49 | # | ||
| 50 | # The permissions on the installed files are based on how we prefer to | ||
| 51 | # do things here--so nothing is installed SetUID to root. | ||
| 52 | # | ||
| 53 | # The post-install script makes a good-faith attempt to install a | ||
| 54 | # functional configuration on your system. I would be interested in hearing | ||
| 55 | # of any failure modes that are found, as I tried to compensate for all | ||
| 56 | # the ones that showed up here when we started replacing all the | ||
| 57 | # different installed versions of SSH. | ||
| 58 | |||
| 59 | #### Body of the script (finally!) | ||
| 60 | # We expect to be building the solaris package under the contrib/solaris | ||
| 61 | # directory--but the build-package script might be run with a relative | ||
| 62 | # path by a user in the main SSH directory...so we try to handle this | ||
| 63 | # case. Note that this is still a quick and dirty solution, not robust. | ||
| 64 | |||
| 65 | if [ -f sshd.c ]; then | ||
| 66 | cd contrib/solaris >/dev/null | ||
| 67 | fi | ||
| 68 | |||
| 69 | # Locations of standard binaries | ||
| 70 | UNAME=/usr/bin/uname | ||
| 71 | SED=/usr/bin/sed | ||
| 72 | PWD=/usr/bin/pwd | ||
| 73 | CUT=/usr/bin/cut | ||
| 74 | STRIP=/usr/ccs/bin/strip | ||
| 75 | PKGMK=/usr/bin/pkgmk | ||
| 76 | PKGTRANS=/usr/bin/pkgtrans | ||
| 77 | GREP=/usr/bin/grep | ||
| 78 | DATE=/usr/bin/date | ||
| 79 | |||
| 80 | CURRDIR=`${PWD}` | ||
| 81 | BUILDDIR=${CURRDIR}/build-SSH-package | ||
| 82 | # If you really want to name the package "ssh" then go ahead, but the | ||
| 83 | # Sun convention is that the first 2-4 characters are supposed to be | ||
| 84 | # uppercase representing the company or organization that produced the | ||
| 85 | # software, and the next 3-5 characters are supposed to be lowercase | ||
| 86 | # identifying the specific software. The best package names I could | ||
| 87 | # come up with were "OBSDssh" or "OPENssh", given those constraints. | ||
| 88 | PKGNAME="OPENssh" | ||
| 89 | # PSTAMP is a standard setting in the 'pkginfo' file that helps to identify | ||
| 90 | # the time and location that the packaging was done. | ||
| 91 | PSTAMP="`${UNAME} -n`-`${DATE} +%Y-%m-%d-%H%M`" | ||
| 92 | # The several lines below are designed to pull the relevant information | ||
| 93 | # out of the Makefile. It may be simpler to hard-code this if you have | ||
| 94 | # made changes and these lines don't find them. | ||
| 95 | prefix=`${GREP} "^prefix=" ../../Makefile | ${CUT} -d = -f 2` | ||
| 96 | execprefix=`${GREP} "^execprefix=" ../../Makefile | ${CUT} -d = -f 2` | ||
| 97 | INSTROOT=${prefix:=/usr/local} | ||
| 98 | ETCDIR=`${GREP} "^ETCDIR=" ../../Makefile | ${CUT} -d = -f 2` | ||
| 99 | PIDDIR=`${GREP} "^piddir=" ../../Makefile | ${CUT} -d = -f 2` | ||
| 100 | |||
| 101 | if [ ! -f ../../sshd ]; then | ||
| 102 | echo "Unable to locate sshd binary where I expected, and can't continue." | ||
| 103 | echo "Verify that the SSH configure/make has been completed, and that" | ||
| 104 | echo " this script is being run from within the SSH source tree." | ||
| 105 | exit 1 | ||
| 106 | fi | ||
| 107 | |||
| 108 | |||
| 109 | VERSION=`${GREP} "SSH_VERSION" ../../version.h | ${CUT} -f 2 | sed -e 's/"//g' -e 's/OpenSSH_//g'` | ||
| 110 | # Extra shenanigans to compensate for Sun marketeer tricks with Solaris | ||
| 111 | # version numbering... | ||
| 112 | OSMINOR=`${UNAME} -r | ${CUT} -f 2 -d .` | ||
| 113 | if [ $OSMINOR -gt 6 ]; then | ||
| 114 | OSVERSION=$OSMINOR | ||
| 115 | else | ||
| 116 | OSVERSION=`${UNAME} -r | ${SED} 's/5/2/'` | ||
| 117 | fi | ||
| 118 | ARCH=`$UNAME -p` | ||
| 119 | SHORTINSTROOT="" | ||
| 120 | if [ "$INSTROOT" = "/usr/local" ]; then | ||
| 121 | SHORTINSTROOT="-local" | ||
| 122 | else | ||
| 123 | if [ "$INSTROOT" = "/opt" ]; then | ||
| 124 | SHORTINSTROOT="-opt" | ||
| 125 | fi | ||
| 126 | fi | ||
| 127 | |||
| 128 | DESTFILE="${PKGNAME}-${VERSION}-sol${OSVERSION}-${ARCH}${SHORTINSTROOT}" | ||
| 129 | |||
| 130 | echo "Building Solaris package of OpenSSH ${VERSION} in\n\t${BUILDDIR}." | ||
| 131 | echo "Binaries were compiled for Solaris ${OSVERSION} (${ARCH})" | ||
| 132 | echo "The installable package will be named ${DESTFILE}." | ||
| 133 | echo "When installed, the package will be located under ${INSTROOT}." | ||
| 134 | echo "" | ||
| 135 | |||
| 136 | echo "Cleaning up old build files..." | ||
| 137 | rm -rf $BUILDDIR | ||
| 138 | mkdir $BUILDDIR | ||
| 139 | cd $BUILDDIR | ||
| 140 | |||
| 141 | echo "Setting up build directories..." | ||
| 142 | mkdir -p ${BUILDDIR}/man/man1 | ||
| 143 | # Need manpages for sshd_config(5) and ssh_config(5), but we don't yet have. | ||
| 144 | #mkdir -p ${BUILDDIR}/man/man5 | ||
| 145 | mkdir -p ${BUILDDIR}/man/man8 | ||
| 146 | mkdir -p ${BUILDDIR}/etc | ||
| 147 | mkdir -p ${BUILDDIR}/bin | ||
| 148 | mkdir -p ${BUILDDIR}/sbin | ||
| 149 | |||
| 150 | echo "Populating build directories..." | ||
| 151 | cp -p ../../../sshd sbin | ||
| 152 | cp -p ../../../ssh-keygen bin | ||
| 153 | cp -p ../../../ssh bin | ||
| 154 | cp -p ../../../ssh-add bin | ||
| 155 | cp -p ../../../ssh-agent bin | ||
| 156 | cp -p ../../../scp bin | ||
| 157 | cp -p ../../../scp.1 man/man1/scp.1 | ||
| 158 | cp -p ../../../ssh-add.1 man/man1/ssh-add.1 | ||
| 159 | cp -p ../../../ssh-agent.1 man/man1/ssh-agent.1 | ||
| 160 | cp -p ../../../ssh-keygen.1 man/man1/ssh-keygen.1 | ||
| 161 | cp -p ../../../ssh.1 man/man1/ssh.1 | ||
| 162 | cp -p ../../../sshd.8 man/man8/sshd.8 | ||
| 163 | cp -p ../../../sshd_config.out etc/sshd_config.default | ||
| 164 | cp -p ../../../ssh_config.out etc/ssh_config.default | ||
| 165 | cp -p ../../../ssh_prng_cmds etc/ssh_prng_cmds.default | ||
| 166 | cp -p ../../../primes etc/primes.default | ||
| 167 | |||
| 168 | # One of the annoying things about the Solaris packaging process is that | ||
| 169 | # there's no simple way to prototype on the fly--so make sure you edit | ||
| 170 | # the prototype file if you add/subtract files from the mix. | ||
| 171 | cp -p ../prototype . | ||
| 172 | cp -p ../preremove . | ||
| 173 | |||
| 174 | echo "Creating compile-dependent files from their prototypes" | ||
| 175 | $SED -e "s/%%PKGNAME%%/${PKGNAME}/g" -e "s|%%BASEDIR%%|${INSTROOT}|g" -e "s/%%VERSION%%/${VERSION}/g" -e "s/%%ARCH%%/${ARCH}/g" -e "s/%%OSVERSION%%/${OSVERSION}/g" <../pkginfo.in >./pkginfo | ||
| 176 | $SED -e "s/%%PKGNAME%%/${PKGNAME}/g" -e "s/%%OSMINOR%%/${OSMINOR}/g" -e "s/%%OSVERSION%%/${OSVERSION}/g" <../checkinstall.in >./checkinstall | ||
| 177 | $SED -e "s|%%PIDDIR%%|${PIDDIR}|g" <../postinstall.in >./postinstall | ||
| 178 | $SED -e "s|%%PIDDIR%%|${PIDDIR}|g" <../sshd-initscript.in > etc/sshd-initscript | ||
| 179 | |||
| 180 | echo "Stripping binaries" | ||
| 181 | ${STRIP} bin/ssh | ||
| 182 | ${STRIP} bin/ssh-add | ||
| 183 | ${STRIP} bin/ssh-agent | ||
| 184 | ${STRIP} bin/ssh-keygen | ||
| 185 | ${STRIP} sbin/sshd | ||
| 186 | ${STRIP} bin/scp | ||
| 187 | |||
| 188 | echo "" | ||
| 189 | echo "Building Package" | ||
| 190 | |||
| 191 | cd ${BUILDDIR} | ||
| 192 | $PKGMK -o -r . -p ${PSTAMP} -d ${BUILDDIR} | ||
| 193 | |||
| 194 | if [ $? -gt 0 ]; then | ||
| 195 | echo "Error performing pkgmk--cannot continue." | ||
| 196 | exit 1 | ||
| 197 | fi | ||
| 198 | |||
| 199 | echo "" | ||
| 200 | echo "Translating Package Tree into Installable Image" | ||
| 201 | $PKGTRANS -s ${BUILDDIR} ${BUILDDIR}/${DESTFILE} OPENssh | ||
| 202 | |||
| 203 | if [ $? -gt 0 ]; then | ||
| 204 | echo "Error performing pkgtrans--cannot continue." | ||
| 205 | exit 1 | ||
| 206 | fi | ||
| 207 | |||
| 208 | echo "Done. Package is in ${BUILDDIR}/${DESTFILE} !" | ||
