/dmake

dmake

Primary LanguageMakefile

dmake (2.16)
Copyright (C) 2023 Claudio Luck <claudio.luck@datact.ch>

Usage: make TARGET


TARGET is one of:

   init [{N,V,A,P,S}=.. ] Initialize package boiler-plate (makefile+control)
                          with optional values for Name, Version, Architecture,
                          Priority and Section
   build                  Build $(DEBPKGFILE)
   upload                 Upload $(DEBPKGFILE)
   next-version [V=<ver>] Increment Version in DEBIAN/control automatically

 Less often used:

   install-source         Create /etc/apt/sources.list.d/$(APT_LIST_FILE)
   remove-source          Remove /etc/apt/sources.list.d/$(APT_LIST_FILE)
   apt-update             apt-get update just for $(APT_LIST_FILE)
   apt-install            apt-get install -y $(DEBPKGNAME)
   config                 Show config (valid {,.,../,../.,~/,~/.,/etc/}dmake.cf)
   info                   Show some package properties, incl. computed versions
   makefile               Create Makefile boilerplate
   control                Create src/DEBIAN/control boilerplate
   ls                     List versions in repository
   gc V=<version>         Remove packages having lesser version than given

 Break stuff:

   repo-init              Initialize aptly repository
   repo-show              Show aptly publish list


EXAMPLE ./Makefile:

   VERSION_SCRIPT   = /usr/local/bin/my_script
   VERSION_VARIABLE = MY_SCRIPT_VERSION
   include /usr/local/lib/dmakelib.mk

 .. then create:

   src/DEBIAN/control
   src/usr/local/bin/my_script


EXAMPLE src/DEBIAN/control:

   Package: dmakelib
   Version: 2.16
   Section: utils
   Priority: optional
   Architecture: all
   Maintainer: root <root@localhost>
   Description: dmakelib

Get started:

 `dmake' uses Aptly, and by default points Aptly to a local set of repositories
 under /var/cache/dmake. To initialize the default 'dmake' repository, run

   dmake repo-init

 To point your local Apt package manager to the local 'dmake' repository, run

   dmake install-source

 Finally, to add a 'dmake' based package to the local 'dmake' repository, run

   dmake upload


Use dmake in a clustered environment:

 If you assume you have a cluster of Linux machines which share a
 directory /shared, then you may want to move the local repository
 onto that shared storage, as follows:

   mkdir /shared/dmake/repos
   mv /var/cache/dmake/debian /shared/dmake/repos/debian

 Then replace the rootDir in /var/cache/dmake/aptly/aptly.conf
 to read:

  [..]
  "FileSystemPublishEndpoints": {
    "hardcoded-apt-debian": {
      "rootDir": "/shared/damke/repos/debian",
      "linkMethod": "copy"
    }
  },
  [..]