]> oss.titaniummirror.com Git - tinyos-2.x.git/commitdiff
Add 'debian/' from commit 'f0a1460fb2ace37a731bcd2dab6727087d70a86c'
authorR. Steve McKown <rsmckown@gmail.com>
Fri, 7 May 2010 21:11:43 +0000 (15:11 -0600)
committerR. Steve McKown <rsmckown@gmail.com>
Fri, 7 May 2010 21:11:43 +0000 (15:11 -0600)
git-subtree-dir: debian
git-subtree-mainline: e9bfab607e051bae6afb47b44892ce37541d1b44
git-subtree-split: f0a1460fb2ace37a731bcd2dab6727087d70a86c

12 files changed:
1  2 
debian/README.Debian
debian/changelog
debian/control.in
debian/copyright
debian/gbp.conf.template
debian/rules
debian/tinyos-avr.lintian-overrides
debian/tinyos-msp430.lintian-overrides
debian/tinyos-source.lintian-overrides
debian/tinyos-tools.lintian-overrides
debian/tinyos-tools.postinst
debian/tinyos.lintian-overrides

index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a545745d1ff7df90645f9d683cd6781cafa977ee
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,3 @@@
++This package creates Ubuntu source and binary debian packages for the
++tinyos, tinyos-tools and tinyos-source packages, which comprise the TinyOS
++distribution.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8cd4412db178faec0da42144a49cc1c4604929da
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,32 @@@
++tinyos (2.1.0-4.2-1tmi) hardy; urgency=low
++
++  * Update tinyos.sh to fix improper recording of current TOSROOT.
++
++ -- TMI Packages <pkgs@titaniummirror.com>  Thu, 06 May 2010 09:13:41 -0600
++
++tinyos (2.1.0-4.1-1tmi) hardy; urgency=low
++
++  * Update tinyos.sh, postinstall exec of tos-install-jni, ensure tinyos.jar
++    is up to date.
++
++ -- TMI Packages <pkgs@titaniummirror.com>  Fri, 23 Apr 2010 14:03:28 -0600
++
++tinyos (2.1.0-4-2tmi) hardy; urgency=low
++
++  * Update 2.1.0-4 to include new copyright terms granted by Sporian
++    Microsystems, Inc.
++
++ -- TMI Packages <pkgs@titaniummirror.com>  Thu, 22 Apr 2010 16:47:13 -0600
++
++tinyos (2.1.0-4-1tmi) hardy; urgency=low
++
++  * Package TMI release 2.1.0-4, based on official tinyOS release 2.1.0.
++
++ -- TMI Packages <pkgs@titaniummirror.com>  Thu, 22 Apr 2010 15:52:49 -0600
++
++tinyos (2.1.0-3-2tmi) hardy; urgency=low
++
++  * Package TMI release 2.1.0-3, based on official tinyOS release 2.1.0.
++  * Package is now signed.
++
++ -- TMI Packages <pkgs@titaniummirror.com>  Tue, 08 Dec 2009 14:57:46 -0700
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..caeb69dbf6eeb32bfc1ccaab5da3abbb251600dc
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,71 @@@
++Source: tinyos
++Section: devel
++Priority: optional
++Maintainer: TMI Packages <pkgs@titaniummirror.com>
++Standards-Version: 3.7.2.0
++Build-Depends: dpkg-dev (>= 1.13.9), autoconf (>= 2.13), automake, bison, flex,
++  gettext, texinfo, binutils (>= 2.9.5.0.12), gcc (>= 4:4.2.2),
++  dejagnu (>= 1.4.2-1.1), dpatch, file, bzip2, lsb-release, nesc (>= 1.3.0),
++  libc6-dev-i386 [amd64], gcc-multilib [amd64], g++-multilib [amd64]
++
++Package: tinyos
++Architecture: all
++Depends: tinyos-tools (>= 1.3.0), deputy-tinyos (>= 1.1), tinyos-source,
++  tinyos-toolchain
++Conflicts:
++Priority: extra
++Description: Main TinyOS package
++ To install TinyOS, install this package.  To remove TinyOS, remove this
++ package.
++
++Package: tinyos-tools
++Architecture: any
++Depends: python, python-serial, nesc (>= 1.3.0), ${shlibs:Depends}
++Conflicts:
++Priority: extra
++Description: Development support tools for TinyOS
++ Includes various support tools, including uisp, motelist, pybsl, mig, ncc and
++ nesdoc. The source for these tools is found in the TinyOS CVS repository
++ under tinyos-2.x/tools.
++
++Package: tinyos-source
++Architecture: all
++Depends: tinyos-source-RELEASE-VERSION
++Conflicts:
++Priority: extra
++Description: TinyOS source meta package
++ This package installs the latest tinyos source tree package,
++ tinyos-source-RELEASE-VERSION, when you install or upgrade the tinyos package.
++ Command line users may need to issue 'apt-get dist-upgrade' if you see the
++ message that tinyos-source is being held back.
++
++Package: tinyos-source-RELEASE-VERSION
++Architecture: all
++Provides: tinyos-source
++Depends: tinyos
++Conflicts:
++Priority: extra
++Description: TinyOS source code tree
++ Provides the official TinyOS TOS-VERSION release source tree with TMI version
++ TMI-VERSION enhancements.
++
++Package: tinyos-avr
++Architecture: all
++Depends: avr-tinyos-base, avr-binutils-tinyos, avr-gcc-tinyos, avr-libc-tinyos,
++  avrdude-tinyos
++Provides: tinyos-toolchain
++Conflicts:
++Priority: extra
++Description: TinyOS avr toolchain
++ This dummy package allows for easy installation of the avr toolchain
++ for building TinyOS applications for avr microprocessor based systems.
++
++Package: tinyos-msp430
++Architecture: all
++Depends: msp430-binutils, msp430-gcc, msp430-libc
++Provides: tinyos-toolchain
++Conflicts:
++Priority: extra
++Description: TinyOS msp430 toolchain
++ This dummy package allows for easy installation of the msp430 toolchain
++ for building TinyOS applications for msp430 microprocessor based systems.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ac16d6985f0737c1177a035b19a7e9905c785c26
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,31 @@@
++TinyOS is copyright by various contributors over time.  Please see the
++copyright notices in each directory and/or file for more information.  TinyOS
++community software is usually released under the TinyOS license, which is
++provided for convenience below.
++
++---
++
++Copyright (c) <date> <contributor>.  All rights reserved.
++
++Permission to use, copy, modify, and distribute this software and
++its documentation for any purpose, without fee, and without written
++agreement is hereby granted, provided that the above copyright
++notice, the following two paragraphs and the author appear in all
++copies of this software.
++
++IN NO EVENT SHALL STANFORD UNIVERSITY BE LIABLE TO ANY PARTY FOR
++DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
++ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
++IF <CONTRIBUTOR> HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
++DAMAGE.
++
++<CONTRIBUTOR> SPECIFICALLY DISCLAIMS ANY WARRANTIES,
++INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
++MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE
++PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND <CONTRIBUTOR>
++HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES,
++ENHANCEMENTS, OR MODIFICATIONS."
++
++---
++
++Portions Copyright (c) 2008-2009 Titanium Mirror, Inc.  All rights reserved.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0ccec1bcbb51afa2bf04fb6a48890fad7da7b46c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,51 @@@
++# Configuration file for git-buildpackage and friends
++#
++# Copy this to .gbp.conf in the git repo top directory after merging and
++# edit as needed.
++
++[DEFAULT]
++# the default build command:
++#builder = debuild -i\.git/ -I.git
++#builder = debuild -d -us -uc -i\.git/ -I.git
++builder = pdebuild --debbuildopts '-d -i\.git/ -I.git'
++# the default clean command:
++#cleaner = debuild clean
++cleaner = fakeroot debian/rules clean
++# the default branch for upstream sources:
++#upstream-branch = upstream
++#upstream-branch = release/2.1.0/2
++upstream-branch = release/2.1.0
++# the default branch for the debian patch:
++#debian-branch = master
++debian-branch = dmaster-fixups # ideally debian/2.1.0, as a branch
++# the default tag formats used:
++#upstream-tag = upstream/%(version)s
++#debian-tag = debian/%(version)s
++
++# Options only affecting git-buildpackage
++[git-buildpackage]
++#upstream-branch = dfsgclean
++# uncomment this to automatically GPG sign tags
++#sign-tags = True
++# keyid to GPG sign tags with
++#keyid = 0xdeadbeef
++# push to a remote repository after a successful tag: 
++#posttag = git-push git.example.com
++# use this for more svn-buildpackage like bahaviour:
++#export-dir = ../build-area/
++#tarball-dir = ../tarballs/
++
++# Options only affecting git-import-orig
++[git-import-orig]
++#upstream-branch = newupstream
++#debian-branch = dfsgclean
++
++# Options only affecting git-import-dsc
++[git-import-dsc]
++#upstream-branch = svn-upstream
++
++# Options only affecting git-dch
++[git-dch]
++#git-log = --no-merges
++#snapshot-number = snapshot + 1
++
diff --cc debian/rules
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..206ad31b39ba5a62b0d3b220e4f54329ec7ebe16
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,224 @@@
++#!/usr/bin/make -f
++# debian/rules file - for tinyos-tools
++# Based on sample debian/rules file - for GNU Hello (1.3).
++# Copyright 1994,1995 by Ian Jackson.
++# Copyright 1998-2007 James Troup
++# I hereby give you perpetual unlimited permission to copy,
++# modify and relicense this file, provided that you do not remove
++# my name from the file itself.  (I assert my moral right of
++# paternity under the Copyright, Designs and Patents Act 1988.)
++# This file may have to be extensively modified
++
++version := $(shell head -1 debian/changelog | sed -e s'|^.*(\(.*\)-.*).*$$|\1|')
++tosver := $(shell echo $(version) | sed -e s'|-.*||')
++tmiver := $(shell echo $(version) | sed -e s'|^.*-||')
++
++package = tinyos
++toolspkg = $(package)-tools
++srcmetapkg = $(package)-source
++srcpkg = $(srcmetapkg)-$(version)
++msppkg = tinyos-msp430
++avrpkg = tinyos-avr
++
++STRIP  = strip --strip-unneeded --remove-section=.comment --remove-section=.note
++
++install_dir    = install -d -m 755
++install_file   = install -m 644
++install_script = install -m 755
++install_binary = install -m 755 -s
++
++DISTRIBUTION := $(shell lsb_release -is)
++dtmp := debian/tmp
++
++
++# At the current time (20080827) tinyos-tools will not build from a separate
++# build directory.
++#
++# For now, the solution is quite hackish: copy the source directory to the
++# build directory before running configure.
++tempdir := $(shell tempfile $(PACKAGE))
++
++debian/control: debian/control.in debian/changelog
++      sed -e 's/RELEASE-VERSION/$(version)/g' < $< | \
++              sed -e 's/TOS-VERSION/$(tosver)/g' | \
++              sed -e 's/TMI-VERSION/$(tmiver)/g' > debian/control
++
++configure-stamp:
++      $(checkdir)
++      rm -rf configure-stamp $(dtmp)/builddir $(tempdir)
++      $(install_dir) $(dtmp)
++      cp -a . $(tempdir)
++      mv $(tempdir) $(dtmp)/builddir
++      rm -rf $(dtmp)/builddir/debian
++      cd $(dtmp)/builddir/tools && ./Bootstrap && ./configure --prefix=/usr
++      touch $@
++
++
++build: build-stamp
++build-stamp: configure-stamp
++      $(checkdir)
++      $(MAKE) -C $(dtmp)/builddir/tools
++      touch $@
++
++
++install: install-stamp
++install-stamp: checkroot build-stamp
++      $(checkdir)
++      rm -rf $(dtmp)/$(toolspkg)
++      $(install_dir) $(dtmp)/$(toolspkg)
++      $(MAKE) -C $(dtmp)/builddir/tools \
++              prefix=$$(pwd)/$(dtmp)/$(toolspkg)/usr \
++              mandir=$$(pwd)/$(dtmp)/$(toolspkg)/usr/share/man install
++      : # Build tinyos.jar here; gain access to uninstalled tinyos tools.
++      PATH=$$(pwd)/$(dtmp)/$(toolspkg)/usr/bin:$$PATH \
++              TOSROOT=$$(pwd)/$(dtmp)/builddir \
++              TOSDIR=$$(pwd)/$(dtmp)/builddir/tos \
++              CLASSPATH=$$(pwd)/$(dtmp)/builddir/support/sdk/java:. \
++              $(MAKE) -C $(dtmp)/builddir/support/sdk/java tinyos.jar
++      $(MAKE) -C $(dtmp)/builddir/support/sdk/java clean
++      touch $@
++
++
++binary-indep: checkroot build install
++      : # Nothing to do
++
++
++binary-arch: checkroot build install
++      $(checkdir)
++
++      : # Build the tinyos package too
++      rm -rf $(dtmp)/$(package)
++      $(install_dir) $(dtmp)/$(package)/DEBIAN
++      $(install_dir) $(dtmp)/$(package)/opt/tinyos
++      $(install_file) tinyos.sh $(dtmp)/$(package)/opt/tinyos
++      $(install_dir) $(dtmp)/$(package)/usr/share/lintian/overrides
++      $(install_file) debian/$(package).lintian-overrides \
++              $(dtmp)/$(package)/usr/share/lintian/overrides/$(package)
++      $(install_dir) $(dtmp)/$(package)/usr/share/doc/$(package)/
++      $(install_file) debian/copyright \
++              $(dtmp)/$(package)/usr/share/doc/$(package)/
++      $(install_file) tools/README debian/README.Debian \
++              $(dtmp)/$(package)/usr/share/doc/$(package)/
++      dpkg-gencontrol -isp -P$(dtmp)/$(package) -p$(package)
++      chown -R root:root $(dtmp)/$(package)
++      chmod -R go=rX  $(dtmp)/$(package)
++      dpkg --build $(dtmp)/$(package) ..
++
++      : # Build the tinyos-tools package
++      $(install_dir) $(dtmp)/$(toolspkg)/DEBIAN
++      $(install_script) debian/$(toolspkg).postinst \
++              $(dtmp)/$(toolspkg)/DEBIAN/postinst
++      : # $(install_script) debian/$(toolspkg).postrm \
++      : #     $(dtmp)/$(toolspkg)/DEBIAN/postrm
++      $(install_dir) $(dtmp)/$(toolspkg)/usr/share/doc/$(toolspkg)/
++      $(install_file) debian/changelog \
++              $(dtmp)/$(toolspkg)/usr/share/doc/$(toolspkg)/changelog.Debian
++      $(install_file) debian/copyright \
++              $(dtmp)/$(toolspkg)/usr/share/doc/$(toolspkg)/
++      $(install_file) tools/README debian/README.Debian \
++              $(dtmp)/$(toolspkg)/usr/share/doc/$(toolspkg)/
++      gzip -9 $(dtmp)/$(toolspkg)/usr/share/man/man1/*
++      find $(dtmp)/$(toolspkg)/usr/share/doc/$(toolspkg) -type f \
++              ! -name copyright | xargs gzip -9
++      $(install_dir) $(dtmp)/$(toolspkg)/usr/share/lintian/overrides
++      $(install_file) debian/$(toolspkg).lintian-overrides \
++              $(dtmp)/$(toolspkg)/usr/share/lintian/overrides/$(toolspkg)
++      find $(dtmp)/$(toolspkg) -type f | xargs file | grep ELF | \
++              cut -d: -f 1 | xargs dpkg-shlibdeps
++      dpkg-gencontrol -isp -P$(dtmp)/$(toolspkg) -p$(toolspkg)
++      chown -R root:root $(dtmp)/$(toolspkg)
++      chmod -R go=rX  $(dtmp)/$(toolspkg)
++      dpkg --build $(dtmp)/$(toolspkg) ..
++
++      : # Build the tinyos-source meta package
++      rm -rf $(dtmp)/$(srcmetapkg)
++      $(install_dir) $(dtmp)/$(srcmetapkg)/DEBIAN
++      $(install_dir) $(dtmp)/$(srcmetapkg)/usr/share/lintian/overrides
++      $(install_file) debian/$(srcmetapkg).lintian-overrides \
++              $(dtmp)/$(srcmetapkg)/usr/share/lintian/overrides/$(srcmetapkg)
++      $(install_dir) $(dtmp)/$(srcmetapkg)/usr/share/doc/$(srcmetapkg)/
++      $(install_file) debian/copyright \
++              $(dtmp)/$(srcmetapkg)/usr/share/doc/$(srcmetapkg)/
++      dpkg-gencontrol -isp -P$(dtmp)/$(srcmetapkg) -p$(srcmetapkg)
++      chown -R root:root $(dtmp)/$(srcmetapkg)
++      chmod -R go=rX  $(dtmp)/$(srcmetapkg)
++      dpkg --build $(dtmp)/$(srcmetapkg) ..
++
++      : # Build the tinyos-source-VERSION package
++      rm -rf $(dtmp)/$(srcpkg)
++      $(install_dir) $(dtmp)/$(srcpkg)/DEBIAN
++      $(install_dir) $(dtmp)/$(srcpkg)/opt/tinyos
++      chmod u+x tools/release/extractor
++      tools/release/extractor $(dtmp)/$(srcpkg)/opt/tinyos/$(version) < \
++              tools/release/tinyos.filter >/dev/null
++      $(install_dir) $(dtmp)/$(srcpkg)/usr/share/lintian/overrides
++      $(install_file) debian/$(srcmetapkg).lintian-overrides \
++              $(dtmp)/$(srcpkg)/usr/share/lintian/overrides/$(srcpkg)
++      $(install_dir) $(dtmp)/$(srcpkg)/usr/share/doc/$(srcpkg)/
++      $(install_file) debian/changelog \
++              $(dtmp)/$(srcpkg)/usr/share/doc/$(srcpkg)/changelog.Debian
++      $(install_file) debian/copyright \
++              $(dtmp)/$(srcpkg)/usr/share/doc/$(srcpkg)/
++      $(install_file) tools/README debian/README.Debian \
++              $(dtmp)/$(srcpkg)/usr/share/doc/$(srcpkg)/
++      find $(dtmp)/$(srcpkg)/usr/share/doc/$(srcpkg) -type f \
++              ! -name copyright | xargs gzip -9
++      dpkg-gencontrol -isp -P$(dtmp)/$(srcpkg) -p$(srcpkg)
++      chown -R root:root $(dtmp)/$(srcpkg)
++      chmod -R go=rX  $(dtmp)/$(srcpkg)
++      dpkg --build $(dtmp)/$(srcpkg) ..
++
++      : # Build tinyos-msp430 dummy package
++      rm -rf $(dtmp)/$(msppkg)
++      $(install_dir) $(dtmp)/$(msppkg)/DEBIAN
++      $(install_dir) $(dtmp)/$(msppkg)/usr/share/lintian/overrides
++      $(install_file) debian/$(msppkg).lintian-overrides \
++              $(dtmp)/$(msppkg)/usr/share/lintian/overrides/$(msppkg)
++      $(install_dir) $(dtmp)/$(msppkg)/usr/share/doc/$(msppkg)/
++      $(install_file) debian/copyright \
++              $(dtmp)/$(msppkg)/usr/share/doc/$(msppkg)/
++      $(install_file) tools/README debian/README.Debian \
++              $(dtmp)/$(msppkg)/usr/share/doc/$(msppkg)/
++      dpkg-gencontrol -isp -P$(dtmp)/$(msppkg) -p$(msppkg)
++      chown -R root:root $(dtmp)/$(msppkg)
++      chmod -R go=rX  $(dtmp)/$(msppkg)
++      dpkg --build $(dtmp)/$(msppkg) ..
++
++      : # Build tinyos-avr dummy package
++      rm -rf $(dtmp)/$(avrpkg)
++      $(install_dir) $(dtmp)/$(avrpkg)/DEBIAN
++      $(install_dir) $(dtmp)/$(avrpkg)/usr/share/lintian/overrides
++      $(install_file) debian/$(avrpkg).lintian-overrides \
++              $(dtmp)/$(avrpkg)/usr/share/lintian/overrides/$(avrpkg)
++      $(install_dir) $(dtmp)/$(avrpkg)/usr/share/doc/$(avrpkg)/
++      $(install_file) debian/copyright \
++              $(dtmp)/$(avrpkg)/usr/share/doc/$(avrpkg)/
++      $(install_file) tools/README debian/README.Debian \
++              $(dtmp)/$(avrpkg)/usr/share/doc/$(avrpkg)/
++      dpkg-gencontrol -isp -P$(dtmp)/$(avrpkg) -p$(avrpkg)
++      chown -R root:root $(dtmp)/$(avrpkg)
++      chmod -R go=rX  $(dtmp)/$(avrpkg)
++      dpkg --build $(dtmp)/$(avrpkg) ..
++
++
++binary: binary-indep binary-arch
++
++
++clean: debian/control
++      $(checkdir)
++      -rm -rf $(dtmp)
++      -rm -fr debian/files* debian/substvars
++      -rm -f *-stamp
++
++
++define checkdir
++        test -d tos/chips -a -f debian/rules
++endef
++
++
++checkroot:
++      $(checkdir)
++      test root = "`whoami`"
++
++
++.PHONY: binary clean checkroot
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3860db086fc6256eded95a158cecdd78fd0f9173
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++debian-changelog-file-missing
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3860db086fc6256eded95a158cecdd78fd0f9173
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++debian-changelog-file-missing
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3f9e5a38c672013bb07ff4e1c538f8d0a568d171
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++dir-or-file-in-opt
++debian-changelog-file-missing
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a591cca433c1d44ac89bb8c87aa1afb964b949b2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,3 @@@
++dir-or-file-in-opt
++manpage-has-errors-from-man
++unstripped-binary-or-object
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6c78b0241f3be3d91cc23155853133f500449721
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,7 @@@
++#! /bin/sh
++
++set -e
++
++if [ "$1" = "configure" ]; then
++      sudo tos-install-jni
++fi
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9cf7fdebb0cad560b1d40ba174c1f91544add47c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,3 @@@
++debian-changelog-file-missing
++dir-or-file-in-opt
++script-not-executable ./opt/tinyos/tinyos.sh