1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200
|
#!/usr/bin/make -f
export JAVA_HOME=/usr/lib/jvm/default-java
export TZ=UTC
# Included clusters
pkg-nb := netbeans
base-apisupport := apisupport3
base-ide := ide14
base-java := java5
base-nb := nb
base-platform := platform18
pkg-apisupport := libnb-$(base-apisupport)-java
pkg-ide := libnb-$(base-ide)-java
pkg-java := libnb-$(base-java)-java
NBDIR := /usr/share/netbeans
export JAVADIR := /usr/share/java
JH_JAR := jhall.jar
JSEARCH_JAR := jsearch.jar
NB_JH_JAR := jhall-2.0_05.jar
NB_JSEARCH_JAR := jsearch-2.0_05.jar
NB_INSTALL_DIR := usr/share/netbeans
INSTALL := dh_install -p
LINK := dh_link -p
DEB_UPSTREAM_VERSION = $(shell dpkg-parsechangelog | \
grep -e '^Version' | \
perl -pi -e 's/^Version:\s+(.*)\+dfsg\d+-\d+.*$$/$$1/')
BUILDSTAMP := $(shell date --utc --date="`dpkg-parsechangelog -SDate`" "+%Y%m%d")
BUILD_DATE := $(shell dpkg-parsechangelog --show-field=Date)
# Defined function to be used to create symlinks
define symlink
mkdir -p $(dir $(2))
ln -sf $(1) $(2)
endef
%:
dh $@ --parallel --with javahelper
override_dh_auto_build:
# w3c-sgml-lib: needed for xml validation, otherwise FTBFS
mkdir -p nbbuild/external/xhtml1-dtds
ln -sf /usr/share/xml/w3c-sgml-lib/schema/dtd/REC-xhtml1-20020801/xhtml* nbbuild/external/xhtml1-dtds
ln -sf /usr/share/xml/w3c-sgml-lib/schema/dtd/REC-xhtml-modularization-20100729/xhtml* nbbuild/external/xhtml1-dtds
# link Debian's system jars
$(shell awk 'NF==4 {printf("ln -sf %s %s/%s;\n",$$1,$$2,$$4)}' debian/linked-jars)
# ReproducibleBuilds TimestampsInZip
# https://wiki.debian.org/ReproducibleBuilds/TimestampsInZip
find '$(CURDIR)' -newermt '$(BUILD_DATE)' -print0 | \
xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
################################################################
# Build the IDE. DISPLAY must be unset to avoid build failures.
unset DISPLAY; ant \
-Dbuildstamp=$(BUILDSTAMP) \
-Dhg.id=debian-$(DEB_UPSTREAM_VERSION) \
-Dpermit.jdk8.builds=true \
-Dbuild.compiler.deprecation=false \
-Dbuild.compiler.debug=false \
-Dext.binaries.downloaded=true \
-Dverify.checkout=false \
-Dcluster.config=basic \
-f nbbuild/build.xml build-nozip
# Convert the *.icns hicolor icon into a png icon
icns2png -x -s 128x128 -d 32 ide.branding/release/netbeans.icns
override_dh_auto_install:
# recreate links
$(shell awk 'NF==4 {printf("ln -sf %s nbbuild/netbeans/%s/%s;\n",$$1,$$3,$$4)}' debian/linked-jars)
# Install libraries
mh_installjar -plibnb-absolutelayout-java -l debian/pom/AbsoluteLayout.xml \
nbbuild/netbeans/java/modules/ext/AbsoluteLayout.jar
mh_installpom -plibnb-absolutelayout-java debian/pom/AbsoluteLayout.xml
#
# Install IDE package files
echo > nbbuild/netbeans/ide/.noautoupdate
echo > nbbuild/netbeans/ide/.lastModified
$(INSTALL)$(pkg-ide) nbbuild/netbeans/ide/* $(NB_INSTALL_DIR)/$(base-ide)
$(INSTALL)$(pkg-ide) nbbuild/netbeans/ide/.noautoupdate $(NB_INSTALL_DIR)/$(base-ide)
$(INSTALL)$(pkg-ide) nbbuild/netbeans/ide/.lastModified $(NB_INSTALL_DIR)/$(base-ide)
# See netbeans-slf4j.dummy.patch for further information
$(LINK)$(pkg-ide) usr/share/java/slf4j-api.jar $(NB_INSTALL_DIR)/$(base-ide)/modules/slf4j-dummy.jar
# Symlink IDE modules to corresponding system jar files
$(LINK)$(pkg-ide) usr/share/java/org.eclipse.jgit.jar $(NB_INSTALL_DIR)/$(base-ide)/modules/org-eclipse-jgit.jar
$(LINK)$(pkg-ide) usr/share/java/org.eclipse.jgit.java7.jar $(NB_INSTALL_DIR)/$(base-ide)/modules/org-eclipse-jgit-java7.jar
$(LINK)$(pkg-ide) usr/share/java/sqljet.jar $(NB_INSTALL_DIR)/$(base-ide)/modules/ext/sqljet.jar
$(LINK)$(pkg-ide) usr/share/java/svnClientAdapter.jar $(NB_INSTALL_DIR)/$(base-ide)/modules/ext/svnClientAdapter-main.jar
$(LINK)$(pkg-ide) usr/share/java/svn-javahl.jar $(NB_INSTALL_DIR)/$(base-ide)/modules/ext/svnjavahl.jar
$(LINK)$(pkg-ide) usr/share/java/svnkit-javahl16.jar $(NB_INSTALL_DIR)/$(base-ide)/modules/ext/svnkit-javahl16.jar
$(LINK)$(pkg-ide) usr/share/java/trilead-ssh2.jar $(NB_INSTALL_DIR)/$(base-ide)/modules/ext/trilead.ssh2.jar
$(LINK)$(pkg-ide) usr/share/java/jsch.agentproxy.usocket-jna.jar $(NB_INSTALL_DIR)/$(base-ide)/modules/ext/jsch-agentproxy-usocket-jna.jar
$(LINK)$(pkg-ide) usr/share/java/htmlparser.jar $(NB_INSTALL_DIR)/$(base-ide)/modules/ext/html5-parser.jar
$(LINK)$(pkg-ide) usr/share/java/jsch.agentproxy.sshagent.jar $(NB_INSTALL_DIR)/$(base-ide)/modules/ext/jsch-agentproxy-sshagent.jar
$(LINK)$(pkg-ide) usr/share/java/jsch.agentproxy.pageant.jar $(NB_INSTALL_DIR)/$(base-ide)/modules/ext/jsch-agentproxy-pageant.jar
$(LINK)$(pkg-ide) usr/share/java/jsch.agentproxy.core.jar $(NB_INSTALL_DIR)/$(base-ide)/modules/ext/jsch-agentproxy-core.jar
# Make hostinfo.sh executable to silence Lintian warning about script-not-exectuable
find . -type f -name "hostinfo.sh" -exec chmod a+x {} \;
# Install Java package files
echo > nbbuild/netbeans/java/.noautoupdate
echo > nbbuild/netbeans/java/.lastModified
$(INSTALL)$(pkg-java) nbbuild/netbeans/extide/* $(NB_INSTALL_DIR)/$(base-java)
$(INSTALL)$(pkg-java) nbbuild/netbeans/java/* $(NB_INSTALL_DIR)/$(base-java)
$(INSTALL)$(pkg-java) nbbuild/netbeans/java/.noautoupdate $(NB_INSTALL_DIR)/$(base-java)
$(INSTALL)$(pkg-java) nbbuild/netbeans/java/.lastModified $(NB_INSTALL_DIR)/$(base-java)
# Link in Ant libraries and binaries
-rmdir debian/$(pkg-java)/$(NB_INSTALL_DIR)/$(base-java)/ant/lib
$(LINK)$(pkg-java) usr/share/ant/bin $(NB_INSTALL_DIR)/$(base-java)/ant/bin
$(LINK)$(pkg-java) usr/share/ant/etc $(NB_INSTALL_DIR)/$(base-java)/ant/etc
$(LINK)$(pkg-java) usr/share/ant/lib $(NB_INSTALL_DIR)/$(base-java)/ant/lib
# Link in AbsoluteLayout jar
-rm debian/$(pkg-java)/$(NB_INSTALL_DIR)/$(base-java)/modules/ext/AbsoluteLayout.jar
$(LINK)$(pkg-java) usr/share/java/AbsoluteLayout.jar $(NB_INSTALL_DIR)/$(base-java)/modules/ext/AbsoluteLayout.jar
# Install API support package files
echo > nbbuild/netbeans/apisupport/.noautoupdate
echo > nbbuild/netbeans/apisupport/.lastModified
$(INSTALL)$(pkg-apisupport) nbbuild/netbeans/apisupport/* $(NB_INSTALL_DIR)/$(base-apisupport)
$(INSTALL)$(pkg-apisupport) nbbuild/netbeans/apisupport/.noautoupdate $(NB_INSTALL_DIR)/$(base-apisupport)
$(INSTALL)$(pkg-apisupport) nbbuild/netbeans/apisupport/.lastModified $(NB_INSTALL_DIR)/$(base-apisupport)
# Install Netbeans package files
echo > nbbuild/netbeans/nb/.noautoupdate
$(INSTALL)$(pkg-nb) nbbuild/netbeans/nb/* $(NB_INSTALL_DIR)/$(DEB_UPSTREAM_VERSION)/nb
$(INSTALL)$(pkg-nb) nbbuild/netbeans/nb/.lastModified $(NB_INSTALL_DIR)/$(DEB_UPSTREAM_VERSION)/nb
$(INSTALL)$(pkg-nb) nbbuild/netbeans/nb/.noautoupdate $(NB_INSTALL_DIR)/$(DEB_UPSTREAM_VERSION)/nb
$(INSTALL)$(pkg-nb) nbbuild/netbeans/bin/* $(NB_INSTALL_DIR)/$(DEB_UPSTREAM_VERSION)/bin
$(INSTALL)$(pkg-nb) nbbuild/netbeans/CREDITS.html usr/share/$(pkg-nb)
$(INSTALL)$(pkg-nb) nbbuild/netbeans/README.html usr/share/$(pkg-nb)
$(INSTALL)$(pkg-nb) nbbuild/netbeans/netbeans.css usr/share/$(pkg-nb)
# Install 128x128 netbeans icon to hicolor directory
mv netbeans_128x128x32.png netbeans.png
$(INSTALL)$(pkg-nb) netbeans.png usr/share/icons/hicolor/128x128/apps
$(LINK)$(pkg-nb) $(NB_INSTALL_DIR)/$(base-platform) $(NB_INSTALL_DIR)/$(DEB_UPSTREAM_VERSION)/platform
$(LINK)$(pkg-nb) $(NB_INSTALL_DIR)/harness $(NB_INSTALL_DIR)/$(DEB_UPSTREAM_VERSION)/harness
$(LINK)$(pkg-nb) $(NB_INSTALL_DIR)/$(base-apisupport) $(NB_INSTALL_DIR)/$(DEB_UPSTREAM_VERSION)/apisupport
$(LINK)$(pkg-nb) $(NB_INSTALL_DIR)/$(base-ide) $(NB_INSTALL_DIR)/$(DEB_UPSTREAM_VERSION)/ide
$(LINK)$(pkg-nb) $(NB_INSTALL_DIR)/$(base-java) $(NB_INSTALL_DIR)/$(DEB_UPSTREAM_VERSION)/java
# Symlink netbeans icon to the appropriate hicolor directory
$(LINK)$(pkg-nb) $(NB_INSTALL_DIR)/$(DEB_UPSTREAM_VERSION)/nb/netbeans.png \
/usr/share/icons/hicolor/32x32/apps/netbeans.png
# Create file marker to avoid displaying license dialog at first IDE start
echo > debian/license_accepted
$(INSTALL)$(pkg-nb) debian/license_accepted $(NB_INSTALL_DIR)/$(DEB_UPSTREAM_VERSION)/nb/var
# Install file productid used by autoupdate to report installation type
$(INSTALL)$(pkg-nb) debian/productid $(NB_INSTALL_DIR)/$(DEB_UPSTREAM_VERSION)/nb/config
# Install netbeans.conf
$(INSTALL)$(pkg-nb) nbbuild/netbeans/etc/netbeans.conf etc
$(LINK)$(pkg-nb) etc/netbeans.conf $(NB_INSTALL_DIR)/$(DEB_UPSTREAM_VERSION)/etc/netbeans.conf
# Install netbeans.xpm icon
$(INSTALL)$(pkg-nb) debian/icons/netbeans.xpm usr/share/pixmaps
# Install netbeans.clusters
$(INSTALL)$(pkg-nb) nbbuild/netbeans/etc/netbeans.clusters etc
$(LINK)$(pkg-nb) etc/netbeans.clusters $(NB_INSTALL_DIR)/$(DEB_UPSTREAM_VERSION)/etc/netbeans.clusters
# Install netbeans.import which is a required file when importing settings
# from an older version of Netbeans (see also #808908)
$(INSTALL)$(pkg-nb) nbbuild/netbeans/etc/netbeans.import etc
$(LINK)$(pkg-nb) etc/netbeans.import $(NB_INSTALL_DIR)/$(DEB_UPSTREAM_VERSION)/etc/netbeans.import
# Install launcher
$(INSTALL)$(pkg-nb) nbbuild/netbeans/bin/netbeans usr/bin
# Install desktop file
$(INSTALL)$(pkg-nb) debian/netbeans.desktop usr/share/applications
override_dh_auto_clean:
$(call symlink, $(JAVADIR)/$(JH_JAR), javahelp/external/$(NB_JH_JAR))
$(call symlink, $(JAVADIR)/$(JSEARCH_JAR), apisupport.harness/external/$(NB_JSEARCH_JAR))
ant -Dpermit.jdk8.builds=true -f nbbuild/build.xml clean
mh_clean
# remove all the symlinks to jar files we created
find . -name "*.jar" -type l -delete
$(RM) -r nbbuild/external/xhtml1-dtds
$(RM) nbbuild/nbproject/private/scan-cache-standard.ser
$(RM) debian/license_accepted
$(RM) swingapp/src/org/netbeans/modules/swingapp/resources/CRUDShellApp.zip
$(RM) swingapp/src/org/netbeans/modules/swingapp/resources/BasicShellApp.zip
override_jh_depends:
# Skipping jh_depends run - since we use symlinks to /usr/share/java then
# jh_depends gets it wrong.
get-orig-source:
uscan --verbose --download-current-version --force-download
|