# databases/sqldeveloper requires a nonexistent version of the zip file



## Jay F. Shachter (Nov 18, 2015)

When you try to build databases/sqldeveloper, you are shown the following message:

```
due to Oracle license restrictions, you must fetch the source  distribution manually. Please access  http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html  with a web browser and follow the link for the sqldeveloper-4.1.1.19.59-no-jre.zip. You will be  required to register and log in, but you can create an account on that  page. After registration and accepting the Oracle License, download the  distribution file, sqldeveloper-4.1.1.19.59-no-jre.zip, into /usr/ports/distfiles//oracle/ and then restart this installation
```
However, that zip file is no longer available in the Oracle website. Instead, you are offered sqldeveloper-4.1.2.20.64-no-jre (which is newer than -- and, therefore, better than -- the zipfile that the Makefile wants me to download). So I downloaded that file into /usr/ports/distfiles/oracle, after creating that directory, because it did not exist.  At this point it is still impossible to build databases/sqldeveloper, because the Makefile is still detecting the nonexistence of the zipfile that it is looking for, but that file is going to be nonexistent for a long time, because it is gone from the Oracle website.  So I invoked the command `DISTNAME=sqldeveloper-4.1.2.20.64-no-jre time portmaster -bwgD --no-confirm databases/sqldeveloper` after reading some of the impenetrable forest of Makefiles involved in building a FreeBSD port, and correctly discerning that the DISTFILE variable could be effectively manipulated in that way, and that got me a little further, but not far enough. Now it crashes and burns here:

```
===> Fetching all distfiles required by sqldeveloper-4.1.1.19.59 for building
===>  Extracting for sqldeveloper-4.1.1.19.59
=> No SHA256 checksum recorded for oracle/sqldeveloper-4.1.2.20.64-no-jre.zip.
=> No suitable checksum found for oracle/sqldeveloper-4.1.2.20.64-no-jre.zip.
*** Error code 1

Stop.
make: stopped in /usr/ports/databases/sqldeveloper

===>>> make build failed for databases/sqldeveloper
===>>> Aborting update
```
In case you are wondering, I did do a `portsnap fetch` and `portsnap extract databases/sqldeveloper` just in case someone had noticed that Oracle has disappeared the zipfile that the port is looking for.  No such luck, even after the `portsnap extract` it continues to look for an obsoleted file, and setting the DISTNAME variable only brings me to the point where it complains about not finding a suitable checksum, vide supra.
So, how do I build this wretched thing?  As always, thank you in advance for any and all replies.


----------



## phoenix (Nov 18, 2015)

Send an e-mail to the MAINTAINER (as listed in the Makefile) specifying that a newer .zip is available, and asking if they can update the port to use that .zip.  Depending on their workload, they may be able to get it working right away, or it may take a while.

You can also try your hand at updating the port yourself.  Have a read through the Porter's Handbook for more information on doing that.

At the very least, you could update the Makefile to use the new version number and then see if things still build.


----------



## Jay F. Shachter (Nov 19, 2015)

I did update the Makefile, as suggested, and edited the PORTVERSION= line so that the PORTVERSION variable is now
4.1.2.20.64.  This was insufficient to build the port, due to the lack of a checksum, but then, after venturing far deeper into the black miasmic forest of nested Makefiles than any man with a life ought to need to go, I found the NO_CHECKSUM variable, thus: `cd /usr/ports/databases/sqldeveloper; NO_CHECKSUM=1 make install clean` and that got me further than before, until I ran into a brick wall here:

```
===>  Installing for sqldeveloper-4.1.2.20.64
===>   sqldeveloper-4.1.2.20.64 depends on executable: bash - found
===>   sqldeveloper-4.1.2.20.64 depends on file: /usr/local/openjdk8/bin/java - found
===>  Checking if sqldeveloper already installed
===>   Registering installation for sqldeveloper-4.1.2.20.64
pkg-static: Unable to access file /usr/ports/databases/sqldeveloper/work/stage/usr/local/share/java/sqldeveloper/modules/org.apache.http.components.httpclient-4.1.2.jar: No such file or directory
pkg-static: Unable to access file /usr/ports/databases/sqldeveloper/work/stage/usr/local/share/java/sqldeveloper/modules/org.apache.http.components.httpclient-cache-4.1.2.jar: No such file or directory
pkg-static: Unable to access file /usr/ports/databases/sqldeveloper/work/stage/usr/local/share/java/sqldeveloper/sqldeveloper/lib/commons-codec-1.4.jar: No such file or directory
pkg-static: Unable to access file /usr/ports/databases/sqldeveloper/work/stage/usr/local/share/java/sqldeveloper/sqldeveloper/lib/httpclient-4.1.1.jar: No such file or directory
pkg-static: Unable to access file /usr/ports/databases/sqldeveloper/work/stage/usr/local/share/java/sqldeveloper/sqldeveloper/lib/httpclient-cache-4.1.1.jar: No such file or directory
pkg-static: Unable to access file /usr/ports/databases/sqldeveloper/work/stage/usr/local/share/java/sqldeveloper/sqldeveloper/lib/httpcore-4.1.jar: No such file or directory
pkg-static: Unable to access file /usr/ports/databases/sqldeveloper/work/stage/usr/local/share/java/sqldeveloper/sqldeveloper/lib/httpmime-4.1.1.jar: No such file or directory
*** Error code 74

Stop.
make: stopped in /usr/ports/databases/sqldeveloper
```
It seems that I completed the entire build procedure successfully, but am prevented from installing the results of the successful build, due to reasons that I do not understand and into which I fear to delve, for that way madness lies, but if you can explain to me what is the one last thing that I must do to install this port, you will have done a great service not only to me but also to anyone else reading this who, like me, has been unable to install databases/sqldeveloper.  Failing that, I shall, as suggested, send an e-mail to the maintainer, but if the solution is trivial then it would be preferable not to bother him, or her.


----------



## phoenix (Nov 19, 2015)

The filenames have changed.  It seems it uses the version in the names of the files.  The pkg-plist (in the port's directory) contains a list of all the files that are part of the package.  That list of files is passed to *pkg-static* to generate the package for installation onto your system (as part of the staging process).  You'll need to update that to match the actual filenames under the 
/usr/ports/databases/sqldeveloper/work/stage/usr/local/share/java/sqldeveloper/modules/ and 
/usr/ports/databases/sqldeveloper/work/stage/usr/local/share/java/sqldeveloper/sqldeveloper/lib/ directories.

Update the pkg-plist file, then run `make install` again, and it should complete.  Or show you more errors.


----------

