Add Debian package
Although it is way too soon to install the application on any server, i use build.opensuse.org as a kind of CI/CD server: it runs the migration and executes the test suite on each commit. For that, i need to build *some* package, and Debian suits be better because it has all the Go packages i use; i would have to create the RPM for many libraries if i were to use openSUSE, for instance. According to the de facto project layout for Go[0], these files should go into a `build/package` folder, but since i already broke the rules with Sqitch’s folders, i do not see why i have to go against Debian’s conventions of placing them into a `debian` subfolder of the root. I have spit the package into the binary and the Sqitch migration files because it is possible to want the PostgreSQL into a separate server, and there is little point of having Sqitch and all its dependencies installed on the front-end server where the Go program runs. The demo package is probably harder to justify, as it is just a single file, however i will not run out of packages, will i? Lintian detects htmx@1.9.3.min.js as a “source-less” file, which is practically true as nobody is ever going to edit a minified source. I did not want to include the source in the distribution package, that’s why i included it in the “missing sources” file, even thought this is a native debian package and, thus, can not have missing sources. git-buildpackage creates a lot of extra files that have to be removed to build it again, otherwise the process detects the new files in the directory and refuses to build the tarball. I was getting tired of doing it manually and added a Makefile rule. Closes #20
This commit is contained in:
parent
64d38f515f
commit
5c4ade15bc
21
Makefile
21
Makefile
|
@ -23,4 +23,23 @@ test-deploy:
|
|||
sqitch deploy --db-name $(PGDATABASE)
|
||||
pg_prove test/*
|
||||
|
||||
.PHONY: locales test-db
|
||||
clean:
|
||||
$(RM) $(MO_FILES)
|
||||
$(RM) $(POT_FILE)
|
||||
$(RM) debian/debhelper-build-stamp
|
||||
$(RM) debian/camper-demo.substvars
|
||||
$(RM) debian/camper-sqitch.substvars
|
||||
$(RM) debian/camper.postrm.debhelper
|
||||
$(RM) debian/camper.substvars
|
||||
$(RM) debian/files
|
||||
$(RM) debian/golang-tandem-camper-dev.substvars
|
||||
$(RM) -r _build/
|
||||
$(RM) -r debian/.debhelper/
|
||||
$(RM) -r debian/camper/
|
||||
$(RM) -r debian/golang-tandem-camper-dev/
|
||||
$(RM) -r debian/tmp/
|
||||
$(RM) -r debian/camper-demo/
|
||||
$(RM) -r debian/camper-sqitch/
|
||||
|
||||
|
||||
.PHONY: locales test-db clean
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
demo.sql usr/share/camper
|
|
@ -0,0 +1,5 @@
|
|||
deploy usr/share/camper/sqitch
|
||||
revert usr/share/camper/sqitch
|
||||
verify usr/share/camper/sqitch
|
||||
sqitch.conf usr/share/camper/sqitch
|
||||
sqitch.plan usr/share/camper/sqitch
|
|
@ -0,0 +1,3 @@
|
|||
usr/bin/camper usr/bin
|
||||
locale usr/share/camper
|
||||
web usr/share/camper
|
|
@ -0,0 +1,40 @@
|
|||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
. /usr/share/debconf/confmodule
|
||||
|
||||
case "$1" in
|
||||
configure)
|
||||
# Create numerus user and group
|
||||
if ! getent group numerus >/dev/null; then
|
||||
addgroup --system --quiet numerus
|
||||
fi
|
||||
if ! getent passwd numerus >/dev/null; then
|
||||
adduser --quiet \
|
||||
--system \
|
||||
--disabled-login \
|
||||
--no-create-home \
|
||||
--shell /bin/bash \
|
||||
--ingroup numerus \
|
||||
--home /usr/share/numerus \
|
||||
--gecos "Numerus Daemon" \
|
||||
numerus
|
||||
fi
|
||||
|
||||
# Make sure log directory has correct permissions set
|
||||
dpkg-statoverride --list "/var/log/numerus" >/dev/null || \
|
||||
dpkg-statoverride --add --force --quiet --update numerus adm 0750 /var/log/numerus
|
||||
;;
|
||||
|
||||
abort-upgrade|abort-remove|abort-deconfigure)
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "postinst called with unknown argument \`$1'" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
#DEBHELPER#
|
||||
|
||||
exit 0
|
|
@ -0,0 +1,16 @@
|
|||
[Unit]
|
||||
Description=Numerus application server
|
||||
Requires=postgresql.service
|
||||
After=postgresql.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=camper
|
||||
Group=camper
|
||||
WorkingDirectory=/usr/share/camper
|
||||
EnvironmentFile=-/etc/default/camper
|
||||
ExecStart=/usr/bin/camper
|
||||
Restart=always
|
||||
StandardOutput=append:/var/log/camper/access.log
|
||||
StandardError=append:/var/log/camper/error.log
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
camper (0.0~git00000000000000.0000000-1) bookworm; urgency=medium
|
||||
|
||||
* Initial release
|
||||
|
||||
-- jordi fita mas <jordi@tandem.blog> Thu, 27 Jul 2023 18:53:28 +0200
|
|
@ -0,0 +1,67 @@
|
|||
Source: camper
|
||||
Section: web
|
||||
Priority: optional
|
||||
Maintainer: jordi fita mas <jordi@tandem.blog>
|
||||
Build-Depends:
|
||||
debhelper-compat (= 13),
|
||||
dh-golang,
|
||||
gettext,
|
||||
golang-any,
|
||||
golang-github-jackc-pgx-v4-dev,
|
||||
golang-github-leonelquinteros-gotext-dev,
|
||||
golang-golang-x-text-dev,
|
||||
postgresql-all (>= 217~),
|
||||
sqitch,
|
||||
pgtap
|
||||
Standards-Version: 4.6.0
|
||||
XS-Go-Import-Path: dev.tandem.ws/tandem/camper
|
||||
Vcs-Browser: https://dev.tandem.ws/tandem/camper
|
||||
Vcs-Git: https://dev.tandem.ws/tandem/camper.git
|
||||
Homepage: https://dev.tandem.ws/tandem/camper
|
||||
Rules-Requires-Root: no
|
||||
|
||||
Package: golang-tandem-camper-dev
|
||||
Architecture: all
|
||||
Pre-Depends: ${misc:Pre-Depends}
|
||||
Depends:
|
||||
${misc:Depends},
|
||||
golang-github-jackc-pgx-v4-dev,
|
||||
golang-github-leonelquinteros-gotext-dev,
|
||||
golang-golang-x-text-dev
|
||||
Description: Simple campground reservation management application
|
||||
A simple web application to manage reservations to campgrounds, intended for
|
||||
small companies in Spain.
|
||||
.
|
||||
This is the dev package.
|
||||
|
||||
Package: camper
|
||||
Architecture: any
|
||||
Depends:
|
||||
${shlibs:Depends},
|
||||
${misc:Depends},
|
||||
adduser
|
||||
Built-Using: ${misc:Built-Using}
|
||||
Description: Simple campground reservation management application
|
||||
A simple web application to manage reservations to campgrounds, intended for
|
||||
small companies in Spain.
|
||||
|
||||
Package: camper-sqitch
|
||||
Architecture: all
|
||||
Depends:
|
||||
${misc:Depends},
|
||||
sqitch
|
||||
Description: Simple campground reservation management application
|
||||
A simple web application to manage reservations to campgrounds, intended for
|
||||
small companies in Spain.
|
||||
.
|
||||
This is the Sqitch migration package.
|
||||
|
||||
Package: camper-demo
|
||||
Architecture: all
|
||||
Depends:
|
||||
${misc:Depends}
|
||||
Description: Simple campground reservation management application
|
||||
A simple web application to manage reservations to campgrounds, intended for
|
||||
small companies in Spain.
|
||||
.
|
||||
This is the demo package.
|
|
@ -0,0 +1,55 @@
|
|||
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Source: https://dev.tandem.ws/tandem/camper
|
||||
Upstream-Name: camper
|
||||
Upstream-Contact: jordi@tandem.blog
|
||||
|
||||
Files:
|
||||
*
|
||||
Copyright:
|
||||
2023 jordi fita mas
|
||||
License: AGPL-3.0-only
|
||||
|
||||
Files:
|
||||
web/static/htmx@1.9.3.min.js
|
||||
Copyright:
|
||||
2020 Big Sky Software
|
||||
License: BSD-2-Clause
|
||||
|
||||
License: AGPL-3.0-only
|
||||
Camper is free software: you can redistribute it and/or modify it under the
|
||||
terms of the GNU Affero General Public License as published by the Free
|
||||
Software Foundation, version 3.
|
||||
.
|
||||
Camper is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
|
||||
.
|
||||
You should have received a copy of the GNU Affero General Public License along
|
||||
with CAmper. If not, see <https://www.gnu.org/licenses/>.
|
||||
.
|
||||
On Debian systems, the complete text of the GNU Affero General Public License
|
||||
can be found in `/usr/share/common-licenses/AGPL-3'.
|
||||
|
||||
License: BSD-2-clause
|
||||
All rights reserved.
|
||||
.
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
.
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
.
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@ -0,0 +1 @@
|
|||
usr/share/gocode/src usr/share/gocode
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,10 @@
|
|||
#!/usr/bin/make -f
|
||||
|
||||
%:
|
||||
dh $@ --builddirectory=_build --buildsystem=golang --with=golang
|
||||
|
||||
execute_before_dh_auto_build:
|
||||
make
|
||||
|
||||
execute_after_dh_auto_test:
|
||||
pg_virtualenv -v 15 make test-deploy
|
|
@ -0,0 +1 @@
|
|||
1.0
|
Loading…
Reference in New Issue